@hagicode/cli 0.6.1 → 0.8.0

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.
@@ -0,0 +1,266 @@
1
+ var Dl=Object.create,mi=Object.defineProperty,_l=Object.getOwnPropertyDescriptor,$l=Object.getOwnPropertyNames,Pl=Object.getPrototypeOf,ql=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ec=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var r=$l(t),a=0,i=r.length,s;a<i;a++)s=r[a],!ql.call(e,s)&&s!==n&&mi(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=_l(t,s))||o.enumerable});return e},rt=(e,t,n)=>(n=e!=null?Dl(Pl(e)):{},ec(t||!e||!e.__esModule?mi(n,"default",{value:e,enumerable:!0}):n,e));let E=require("node:path");E=rt(E);let Y=require("node:fs");Y=rt(Y);let tc=require("node:os"),pt=require("node:zlib");pt=rt(pt);let Zn=require("node:util"),eo=require("node:http");eo=rt(eo);let to=require("node:https");to=rt(to);let Re=require("node:http2");Re=rt(Re);let nc=require("node:fs/promises"),je=require("node:crypto"),hi=require("node:url");var Rn=ot((e=>{var t=class extends Error{constructor(o,r,a){super(a),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=o,this.nestedError=void 0}},n=class extends t{constructor(o){super(1,"commander.invalidArgument",o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),So=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(r,a){switch(this.description=a||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,r[0]){case"<":this.required=!0,this._name=r.slice(1,-1);break;case"[":this.required=!1,this._name=r.slice(1,-1);break;default:this.required=!0,this._name=r;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(r,a){return a===this.defaultValue||!Array.isArray(a)?[r]:(a.push(r),a)}default(r,a){return this.defaultValue=r,this.defaultValueDescription=a,this}argParser(r){return this.parseArg=r,this}choices(r){return this.argChoices=r.slice(),this.parseArg=(a,i)=>{if(!this.argChoices.includes(a))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(a,i):a},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(r){const a=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+a+">":"["+a+"]"}e.Argument=n,e.humanReadableArgName=o})),bi=ot((e=>{var{humanReadableArgName:t}=So(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(r){this.helpWidth=this.helpWidth??r.helpWidth??80}visibleCommands(r){const a=r.commands.filter(s=>!s._hidden),i=r._getHelpCommand();return i&&!i._hidden&&a.push(i),this.sortSubcommands&&a.sort((s,l)=>s.name().localeCompare(l.name())),a}compareOptions(r,a){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(r).localeCompare(i(a))}visibleOptions(r){const a=r.options.filter(s=>!s.hidden),i=r._getHelpOption();if(i&&!i.hidden){const s=i.short&&r._findOption(i.short),l=i.long&&r._findOption(i.long);!s&&!l?a.push(i):i.long&&!l?a.push(r.createOption(i.long,i.description)):i.short&&!s&&a.push(r.createOption(i.short,i.description))}return this.sortOptions&&a.sort(this.compareOptions),a}visibleGlobalOptions(r){if(!this.showGlobalOptions)return[];const a=[];for(let i=r.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);a.push(...s)}return this.sortOptions&&a.sort(this.compareOptions),a}visibleArguments(r){return r._argsDescription&&r.registeredArguments.forEach(a=>{a.description=a.description||r._argsDescription[a.name()]||""}),r.registeredArguments.find(a=>a.description)?r.registeredArguments:[]}subcommandTerm(r){const a=r.registeredArguments.map(i=>t(i)).join(" ");return r._name+(r._aliases[0]?"|"+r._aliases[0]:"")+(r.options.length?" [options]":"")+(a?" "+a:"")}optionTerm(r){return r.flags}argumentTerm(r){return r.name()}longestSubcommandTermLength(r,a){return a.visibleCommands(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleSubcommandTerm(a.subcommandTerm(s)))),0)}longestOptionTermLength(r,a){return a.visibleOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestGlobalOptionTermLength(r,a){return a.visibleGlobalOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestArgumentTermLength(r,a){return a.visibleArguments(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleArgumentTerm(a.argumentTerm(s)))),0)}commandUsage(r){let a=r._name;r._aliases[0]&&(a=a+"|"+r._aliases[0]);let i="";for(let s=r.parent;s;s=s.parent)i=s.name()+" "+i;return i+a+" "+r.usage()}commandDescription(r){return r.description()}subcommandDescription(r){return r.summary()||r.description()}optionDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&(r.required||r.optional||r.isBoolean()&&typeof r.defaultValue=="boolean")&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),r.presetArg!==void 0&&r.optional&&a.push(`preset: ${JSON.stringify(r.presetArg)}`),r.envVar!==void 0&&a.push(`env: ${r.envVar}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}argumentDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}formatItemList(r,a,i){return a.length===0?[]:[i.styleTitle(r),...a,""]}groupItems(r,a,i){const s=new Map;return r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(r,a){const i=a.padWidth(r,a),s=a.helpWidth??80;function l(f,p){return a.formatItem(f,i,p,a)}let c=[`${a.styleTitle("Usage:")} ${a.styleUsage(a.commandUsage(r))}`,""];const u=a.commandDescription(r);u.length>0&&(c=c.concat([a.boxWrap(a.styleCommandDescription(u),s),""]));const h=a.visibleArguments(r).map(f=>l(a.styleArgumentTerm(a.argumentTerm(f)),a.styleArgumentDescription(a.argumentDescription(f))));if(c=c.concat(this.formatItemList("Arguments:",h,a)),this.groupItems(r.options,a.visibleOptions(r),f=>f.helpGroupHeading??"Options:").forEach((f,p)=>{const R=f.map(V=>l(a.styleOptionTerm(a.optionTerm(V)),a.styleOptionDescription(a.optionDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),a.showGlobalOptions){const f=a.visibleGlobalOptions(r).map(p=>l(a.styleOptionTerm(a.optionTerm(p)),a.styleOptionDescription(a.optionDescription(p))));c=c.concat(this.formatItemList("Global Options:",f,a))}return this.groupItems(r.commands,a.visibleCommands(r),f=>f.helpGroup()||"Commands:").forEach((f,p)=>{const R=f.map(V=>l(a.styleSubcommandTerm(a.subcommandTerm(V)),a.styleSubcommandDescription(a.subcommandDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),c.join(`
2
+ `)}displayWidth(r){return o(r).length}styleTitle(r){return r}styleUsage(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a==="[command]"?this.styleSubcommandText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleCommandText(a)).join(" ")}styleCommandDescription(r){return this.styleDescriptionText(r)}styleOptionDescription(r){return this.styleDescriptionText(r)}styleSubcommandDescription(r){return this.styleDescriptionText(r)}styleArgumentDescription(r){return this.styleDescriptionText(r)}styleDescriptionText(r){return r}styleOptionTerm(r){return this.styleOptionText(r)}styleSubcommandTerm(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleSubcommandText(a)).join(" ")}styleArgumentTerm(r){return this.styleArgumentText(r)}styleOptionText(r){return r}styleArgumentText(r){return r}styleSubcommandText(r){return r}styleCommandText(r){return r}padWidth(r,a){return Math.max(a.longestOptionTermLength(r,a),a.longestGlobalOptionTermLength(r,a),a.longestSubcommandTermLength(r,a),a.longestArgumentTermLength(r,a))}preformatted(r){return/\n[^\S\r\n]/.test(r)}formatItem(r,a,i,s){const c=" ".repeat(2);if(!i)return c+r;const u=r.padEnd(a+r.length-s.displayWidth(r)),h=2,f=(this.helpWidth??80)-a-h-2;let p;return f<this.minWidthToWrap||s.preformatted(i)?p=i:p=s.boxWrap(i,f).replace(/\n/g,`
3
+ `+" ".repeat(a+h)),c+u+" ".repeat(h)+p.replace(/\n/g,`
4
+ ${c}`)}boxWrap(r,a){if(a<this.minWidthToWrap)return r;const i=r.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,l=[];return i.forEach(c=>{const u=c.match(s);if(u===null){l.push("");return}let h=[u.shift()],f=this.displayWidth(h[0]);u.forEach(p=>{const R=this.displayWidth(p);if(f+R<=a){h.push(p),f+=R;return}l.push(h.join(""));const V=p.trimStart();h=[V],f=this.displayWidth(V)}),l.push(h.join(""))}),l.join(`
5
+ `)}};function o(r){return r.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),gi=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(i,s){this.flags=i,this.description=s||"",this.required=i.includes("<"),this.optional=i.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(i),this.mandatory=!1;const l=a(i);this.short=l.shortFlag,this.long=l.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(i,s){return this.defaultValue=i,this.defaultValueDescription=s,this}preset(i){return this.presetArg=i,this}conflicts(i){return this.conflictsWith=this.conflictsWith.concat(i),this}implies(i){let s=i;return typeof i=="string"&&(s={[i]:!0}),this.implied=Object.assign(this.implied||{},s),this}env(i){return this.envVar=i,this}argParser(i){return this.parseArg=i,this}makeOptionMandatory(i=!0){return this.mandatory=!!i,this}hideHelp(i=!0){return this.hidden=!!i,this}_collectValue(i,s){return s===this.defaultValue||!Array.isArray(s)?[i]:(s.push(i),s)}choices(i){return this.argChoices=i.slice(),this.parseArg=(s,l)=>{if(!this.argChoices.includes(s))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(s,l):s},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?r(this.name().replace(/^no-/,"")):r(this.name())}helpGroup(i){return this.helpGroupHeading=i,this}is(i){return this.short===i||this.long===i}isBoolean(){return!this.required&&!this.optional&&!this.negate}},o=class{constructor(i){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,i.forEach(s=>{s.negate?this.negativeOptions.set(s.attributeName(),s):this.positiveOptions.set(s.attributeName(),s)}),this.negativeOptions.forEach((s,l)=>{this.positiveOptions.has(l)&&this.dualOptions.add(l)})}valueFromOption(i,s){const l=s.attributeName();if(!this.dualOptions.has(l))return!0;const c=this.negativeOptions.get(l).presetArg,u=c!==void 0?c:!1;return s.negate===(u===i)}};function r(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function a(i){let s,l;const c=/^-[^-]$/,u=/^--[^-]/,h=i.split(/[ |,]+/).concat("guard");if(c.test(h[0])&&(s=h.shift()),u.test(h[0])&&(l=h.shift()),!s&&c.test(h[0])&&(s=h.shift()),!s&&u.test(h[0])&&(s=l,l=h.shift()),h[0].startsWith("-")){const f=h[0],p=`option creation failed due to '${f}' in option flags '${i}'`;throw/^-[^-][^-]/.test(f)?new Error(`${p}
6
+ - a short flag is a single dash and a single character
7
+ - either use a single dash and a single character (for a short flag)
8
+ - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(f)?new Error(`${p}
9
+ - too many short flags`):u.test(f)?new Error(`${p}
10
+ - too many long flags`):new Error(`${p}
11
+ - unrecognised flag format`)}if(s===void 0&&l===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:s,longFlag:l}}e.Option=n,e.DualOptions=o})),oc=ot((e=>{var t=3;function n(r,a){if(Math.abs(r.length-a.length)>t)return Math.max(r.length,a.length);const i=[];for(let s=0;s<=r.length;s++)i[s]=[s];for(let s=0;s<=a.length;s++)i[0][s]=s;for(let s=1;s<=a.length;s++)for(let l=1;l<=r.length;l++){let c=1;r[l-1]===a[s-1]?c=0:c=1,i[l][s]=Math.min(i[l-1][s]+1,i[l][s-1]+1,i[l-1][s-1]+c),l>1&&s>1&&r[l-1]===a[s-2]&&r[l-2]===a[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[r.length][a.length]}function o(r,a){if(!a||a.length===0)return"";a=Array.from(new Set(a));const i=r.startsWith("--");i&&(r=r.slice(2),a=a.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return a.forEach(u=>{if(u.length<=1)return;const h=n(r,u),f=Math.max(r.length,u.length);(f-h)/f>c&&(h<l?(l=h,s=[u]):h===l&&s.push(u))}),s.sort((u,h)=>u.localeCompare(h)),i&&(s=s.map(u=>`--${u}`)),s.length>1?`
12
+ (Did you mean one of ${s.join(", ")}?)`:s.length===1?`
13
+ (Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),rc=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),r=require("node:fs"),a=require("node:process"),{Argument:i,humanReadableArgName:s}=So(),{CommanderError:l}=Rn(),{Help:c,stripColor:u}=bi(),{Option:h,DualOptions:f}=gi(),{suggestSimilar:p}=oc(),R=class pi extends t{constructor(d){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=d||"",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:m=>a.stdout.write(m),writeErr:m=>a.stderr.write(m),outputError:(m,A)=>A(m),getOutHelpWidth:()=>a.stdout.isTTY?a.stdout.columns:void 0,getErrHelpWidth:()=>a.stderr.isTTY?a.stderr.columns:void 0,getOutHasColors:()=>X()??(a.stdout.isTTY&&a.stdout.hasColors?.()),getErrHasColors:()=>X()??(a.stderr.isTTY&&a.stderr.hasColors?.()),stripColor:m=>u(m)},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(d){return this._outputConfiguration=d._outputConfiguration,this._helpOption=d._helpOption,this._helpCommand=d._helpCommand,this._helpConfiguration=d._helpConfiguration,this._exitCallback=d._exitCallback,this._storeOptionsAsProperties=d._storeOptionsAsProperties,this._combineFlagAndOptionalValue=d._combineFlagAndOptionalValue,this._allowExcessArguments=d._allowExcessArguments,this._enablePositionalOptions=d._enablePositionalOptions,this._showHelpAfterError=d._showHelpAfterError,this._showSuggestionAfterError=d._showSuggestionAfterError,this}_getCommandAndAncestors(){const d=[];for(let m=this;m;m=m.parent)d.push(m);return d}command(d,m,A){let g=m,Z=A;typeof g=="object"&&g!==null&&(Z=g,g=null),Z=Z||{};const[,G,B]=d.match(/([^ ]+) *(.*)/),K=this.createCommand(G);return g&&(K.description(g),K._executableHandler=!0),Z.isDefault&&(this._defaultCommandName=K._name),K._hidden=!!(Z.noHelp||Z.hidden),K._executableFile=Z.executableFile||null,B&&K.arguments(B),this._registerCommand(K),K.parent=this,K.copyInheritedSettings(this),g?this:K}createCommand(d){return new pi(d)}createHelp(){return Object.assign(new c,this.configureHelp())}configureHelp(d){return d===void 0?this._helpConfiguration:(this._helpConfiguration=d,this)}configureOutput(d){return d===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...d},this)}showHelpAfterError(d=!0){return typeof d!="string"&&(d=!!d),this._showHelpAfterError=d,this}showSuggestionAfterError(d=!0){return this._showSuggestionAfterError=!!d,this}addCommand(d,m){if(!d._name)throw new Error(`Command passed to .addCommand() must have a name
14
+ - specify the name in Command constructor or using .name()`);return m=m||{},m.isDefault&&(this._defaultCommandName=d._name),(m.noHelp||m.hidden)&&(d._hidden=!0),this._registerCommand(d),d.parent=this,d._checkForBrokenPassThrough(),this}createArgument(d,m){return new i(d,m)}argument(d,m,A,g){const Z=this.createArgument(d,m);return typeof A=="function"?Z.default(g).argParser(A):Z.default(A),this.addArgument(Z),this}arguments(d){return d.trim().split(/ +/).forEach(m=>{this.argument(m)}),this}addArgument(d){const m=this.registeredArguments.slice(-1)[0];if(m?.variadic)throw new Error(`only the last argument can be variadic '${m.name()}'`);if(d.required&&d.defaultValue!==void 0&&d.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${d.name()}'`);return this.registeredArguments.push(d),this}helpCommand(d,m){if(typeof d=="boolean")return this._addImplicitHelpCommand=d,d&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;const[,A,g]=(d??"help [command]").match(/([^ ]+) *(.*)/),Z=m??"display help for command",G=this.createCommand(A);return G.helpOption(!1),g&&G.arguments(g),Z&&G.description(Z),this._addImplicitHelpCommand=!0,this._helpCommand=G,(d||m)&&this._initCommandGroup(G),this}addHelpCommand(d,m){return typeof d!="object"?(this.helpCommand(d,m),this):(this._addImplicitHelpCommand=!0,this._helpCommand=d,this._initCommandGroup(d),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(d,m){const A=["preSubcommand","preAction","postAction"];if(!A.includes(d))throw new Error(`Unexpected value for event passed to hook : '${d}'.
15
+ Expecting one of '${A.join("', '")}'`);return this._lifeCycleHooks[d]?this._lifeCycleHooks[d].push(m):this._lifeCycleHooks[d]=[m],this}exitOverride(d){return d?this._exitCallback=d:this._exitCallback=m=>{if(m.code!=="commander.executeSubCommandAsync")throw m},this}_exit(d,m,A){this._exitCallback&&this._exitCallback(new l(d,m,A)),a.exit(d)}action(d){const m=A=>{const g=this.registeredArguments.length,Z=A.slice(0,g);return this._storeOptionsAsProperties?Z[g]=this:Z[g]=this.opts(),Z.push(this),d.apply(this,Z)};return this._actionHandler=m,this}createOption(d,m){return new h(d,m)}_callParseArg(d,m,A,g){try{return d.parseArg(m,A)}catch(Z){if(Z.code==="commander.invalidArgument"){const G=`${g} ${Z.message}`;this.error(G,{exitCode:Z.exitCode,code:Z.code})}throw Z}}_registerOption(d){const m=d.short&&this._findOption(d.short)||d.long&&this._findOption(d.long);if(m){const A=d.long&&this._findOption(d.long)?d.long:d.short;throw new Error(`Cannot add option '${d.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${A}'
16
+ - already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),A=m(d).find(g=>this._findCommand(g));if(A){const g=m(this._findCommand(A)).join("|"),Z=m(d).join("|");throw new Error(`cannot add command '${Z}' as already have command '${g}'`)}this._initCommandGroup(d),this.commands.push(d)}addOption(d){this._registerOption(d);const m=d.name(),A=d.attributeName();if(d.negate){const Z=d.long.replace(/^--no-/,"--");this._findOption(Z)||this.setOptionValueWithSource(A,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(A,d.defaultValue,"default");const g=(Z,G,B)=>{Z==null&&d.presetArg!==void 0&&(Z=d.presetArg);const K=this.getOptionValue(A);Z!==null&&d.parseArg?Z=this._callParseArg(d,Z,K,G):Z!==null&&d.variadic&&(Z=d._collectValue(Z,K)),Z==null&&(d.negate?Z=!1:d.isBoolean()||d.optional?Z=!0:Z=""),this.setOptionValueWithSource(A,Z,B)};return this.on("option:"+m,Z=>{g(Z,`error: option '${d.flags}' argument '${Z}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,Z=>{g(Z,`error: option '${d.flags}' value '${Z}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,A,g,Z){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const G=this.createOption(m,A);if(G.makeOptionMandatory(!!d.mandatory),typeof g=="function")G.default(Z).argParser(g);else if(g instanceof RegExp){const B=g;g=(K,O)=>{const w=B.exec(K);return w?w[0]:O},G.default(Z).argParser(g)}else G.default(g);return this.addOption(G)}option(d,m,A,g){return this._optionEx({},d,m,A,g)}requiredOption(d,m,A,g){return this._optionEx({mandatory:!0},d,m,A,g)}combineFlagAndOptionalValue(d=!0){return this._combineFlagAndOptionalValue=!!d,this}allowUnknownOption(d=!0){return this._allowUnknownOption=!!d,this}allowExcessArguments(d=!0){return this._allowExcessArguments=!!d,this}enablePositionalOptions(d=!0){return this._enablePositionalOptions=!!d,this}passThroughOptions(d=!0){return this._passThroughOptions=!!d,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(d=!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=!!d,this}getOptionValue(d){return this._storeOptionsAsProperties?this[d]:this._optionValues[d]}setOptionValue(d,m){return this.setOptionValueWithSource(d,m,void 0)}setOptionValueWithSource(d,m,A){return this._storeOptionsAsProperties?this[d]=m:this._optionValues[d]=m,this._optionValueSources[d]=A,this}getOptionValueSource(d){return this._optionValueSources[d]}getOptionValueSourceWithGlobals(d){let m;return this._getCommandAndAncestors().forEach(A=>{A.getOptionValueSource(d)!==void 0&&(m=A.getOptionValueSource(d))}),m}_prepareUserArgs(d,m){if(d!==void 0&&!Array.isArray(d))throw new Error("first parameter to parse must be array or undefined");if(m=m||{},d===void 0&&m.from===void 0){a.versions?.electron&&(m.from="electron");const g=a.execArgv??[];(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))&&(m.from="eval")}d===void 0&&(d=a.argv),this.rawArgs=d.slice();let A;switch(m.from){case void 0:case"node":this._scriptPath=d[1],A=d.slice(2);break;case"electron":a.defaultApp?(this._scriptPath=d[1],A=d.slice(2)):A=d.slice(1);break;case"user":A=d.slice(0);break;case"eval":A=d.slice(1);break;default:throw new Error(`unexpected parse option { from: '${m.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",A}parse(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return this._parseCommand([],A),this}async parseAsync(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return await this._parseCommand([],A),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.
17
+ - 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(d,m,A){if(r.existsSync(d))return;const g=`'${d}' does not exist
18
+ - if '${A}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
19
+ - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
20
+ - ${m?`searched for local subcommand relative to directory '${m}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory"}`;throw new Error(g)}_executeSubCommand(d,m){m=m.slice();let A=!1;const g=[".js",".ts",".tsx",".mjs",".cjs"];function Z(w,L){const ee=o.resolve(w,L);if(r.existsSync(ee))return ee;if(g.includes(o.extname(L)))return;const yr=g.find(Ol=>r.existsSync(`${ee}${Ol}`));if(yr)return`${ee}${yr}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let G=d._executableFile||`${this._name}-${d._name}`,B=this._executableDir||"";if(this._scriptPath){let w;try{w=r.realpathSync(this._scriptPath)}catch{w=this._scriptPath}B=o.resolve(o.dirname(w),B)}if(B){let w=Z(B,G);if(!w&&!d._executableFile&&this._scriptPath){const L=o.basename(this._scriptPath,o.extname(this._scriptPath));L!==this._name&&(w=Z(B,`${L}-${d._name}`))}G=w||G}A=g.includes(o.extname(G));let K;a.platform!=="win32"?A?(m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.argv[0],m,{stdio:"inherit"})):K=n.spawn(G,m,{stdio:"inherit"}):(this._checkForMissingExecutable(G,B,d._name),m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.execPath,m,{stdio:"inherit"})),K.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(w=>{a.on(w,()=>{K.killed===!1&&K.exitCode===null&&K.kill(w)})});const O=this._exitCallback;K.on("close",w=>{w=w??1,O?O(new l(w,"commander.executeSubCommandAsync","(close)")):a.exit(w)}),K.on("error",w=>{if(w.code==="ENOENT")this._checkForMissingExecutable(G,B,d._name);else if(w.code==="EACCES")throw new Error(`'${G}' not executable`);if(!O)a.exit(1);else{const L=new l(1,"commander.executeSubCommandAsync","(error)");L.nestedError=w,O(L)}}),this.runningCommand=K}_dispatchSubcommand(d,m,A){const g=this._findCommand(d);g||this.help({error:!0}),g._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,g,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(g._executableHandler)this._executeSubCommand(g,m.concat(A));else return g._parseCommand(m,A)}),Z}_dispatchHelpCommand(d){d||this.help();const m=this._findCommand(d);return m&&!m._executableHandler&&m.help(),this._dispatchSubcommand(d,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((d,m)=>{d.required&&this.args[m]==null&&this.missingArgument(d.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){const d=(A,g,Z)=>{let G=g;if(g!==null&&A.parseArg){const B=`error: command-argument value '${g}' is invalid for argument '${A.name()}'.`;G=this._callParseArg(A,g,Z,B)}return G};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((A,g)=>{let Z=A.defaultValue;A.variadic?g<this.args.length?(Z=this.args.slice(g),A.parseArg&&(Z=Z.reduce((G,B)=>d(A,B,G),A.defaultValue))):Z===void 0&&(Z=[]):g<this.args.length&&(Z=this.args[g],A.parseArg&&(Z=d(A,Z,A.defaultValue))),m[g]=Z}),this.processedArgs=m}_chainOrCall(d,m){return d?.then&&typeof d.then=="function"?d.then(()=>m()):m()}_chainOrCallHooks(d,m){let A=d;const g=[];return this._getCommandAndAncestors().reverse().filter(Z=>Z._lifeCycleHooks[m]!==void 0).forEach(Z=>{Z._lifeCycleHooks[m].forEach(G=>{g.push({hookedCommand:Z,callback:G})})}),m==="postAction"&&g.reverse(),g.forEach(Z=>{A=this._chainOrCall(A,()=>Z.callback(Z.hookedCommand,this))}),A}_chainOrCallSubCommandHook(d,m,A){let g=d;return this._lifeCycleHooks[A]!==void 0&&this._lifeCycleHooks[A].forEach(Z=>{g=this._chainOrCall(g,()=>Z(this,m))}),g}_parseCommand(d,m){const A=this.parseOptions(m);if(this._parseOptionsEnv(),this._parseOptionsImplied(),d=d.concat(A.operands),m=A.unknown,this.args=d.concat(m),d&&this._findCommand(d[0]))return this._dispatchSubcommand(d[0],d.slice(1),m);if(this._getHelpCommand()&&d[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(d[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(m),this._dispatchSubcommand(this._defaultCommandName,d,m);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(A.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();const g=()=>{A.unknown.length>0&&this.unknownOption(A.unknown[0])},Z=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let G;return G=this._chainOrCallHooks(G,"preAction"),G=this._chainOrCall(G,()=>this._actionHandler(this.processedArgs)),this.parent&&(G=this._chainOrCall(G,()=>{this.parent.emit(Z,d,m)})),G=this._chainOrCallHooks(G,"postAction"),G}if(this.parent?.listenerCount(Z))g(),this._processArguments(),this.parent.emit(Z,d,m);else if(d.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",d,m);this.listenerCount("command:*")?this.emit("command:*",d,m):this.commands.length?this.unknownCommand():(g(),this._processArguments())}else this.commands.length?(g(),this.help({error:!0})):(g(),this._processArguments())}_findCommand(d){if(d)return this.commands.find(m=>m._name===d||m._aliases.includes(d))}_findOption(d){return this.options.find(m=>m.is(d))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(d=>{d.options.forEach(m=>{m.mandatory&&d.getOptionValue(m.attributeName())===void 0&&d.missingMandatoryOptionValue(m)})})}_checkForConflictingLocalOptions(){const d=this.options.filter(m=>{const A=m.attributeName();return this.getOptionValue(A)===void 0?!1:this.getOptionValueSource(A)!=="default"});d.filter(m=>m.conflictsWith.length>0).forEach(m=>{const A=d.find(g=>m.conflictsWith.includes(g.attributeName()));A&&this._conflictingOption(m,A)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(d=>{d._checkForConflictingLocalOptions()})}parseOptions(d){const m=[],A=[];let g=m;function Z(w){return w.length>1&&w[0]==="-"}const G=w=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(w)?!this._getCommandAndAncestors().some(L=>L.options.map(ee=>ee.short).some(ee=>/^-\d$/.test(ee))):!1;let B=null,K=null,O=0;for(;O<d.length||K;){const w=K??d[O++];if(K=null,w==="--"){g===A&&g.push(w),g.push(...d.slice(O));break}if(B&&(!Z(w)||G(w))){this.emit(`option:${B.name()}`,w);continue}if(B=null,Z(w)){const L=this._findOption(w);if(L){if(L.required){const ee=d[O++];ee===void 0&&this.optionMissingArgument(L),this.emit(`option:${L.name()}`,ee)}else if(L.optional){let ee=null;O<d.length&&(!Z(d[O])||G(d[O]))&&(ee=d[O++]),this.emit(`option:${L.name()}`,ee)}else this.emit(`option:${L.name()}`);B=L.variadic?L:null;continue}}if(w.length>2&&w[0]==="-"&&w[1]!=="-"){const L=this._findOption(`-${w[1]}`);if(L){L.required||L.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${L.name()}`,w.slice(2)):(this.emit(`option:${L.name()}`),K=`-${w.slice(2)}`);continue}}if(/^--[^=]+=/.test(w)){const L=w.indexOf("="),ee=this._findOption(w.slice(0,L));if(ee&&(ee.required||ee.optional)){this.emit(`option:${ee.name()}`,w.slice(L+1));continue}}if(g===m&&Z(w)&&!(this.commands.length===0&&G(w))&&(g=A),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&A.length===0){if(this._findCommand(w)){m.push(w),A.push(...d.slice(O));break}else if(this._getHelpCommand()&&w===this._getHelpCommand().name()){m.push(w,...d.slice(O));break}else if(this._defaultCommandName){A.push(w,...d.slice(O));break}}if(this._passThroughOptions){g.push(w,...d.slice(O));break}g.push(w)}return{operands:m,unknown:A}}opts(){if(this._storeOptionsAsProperties){const d={},m=this.options.length;for(let A=0;A<m;A++){const g=this.options[A].attributeName();d[g]=g===this._versionOptionName?this._version:this[g]}return d}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((d,m)=>Object.assign(d,m.opts()),{})}error(d,m){this._outputConfiguration.outputError(`${d}
21
+ `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
22
+ `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
23
+ `),this.outputHelp({error:!0}));const A=m||{},g=A.exitCode||1,Z=A.code||"commander.error";this._exit(g,Z,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in a.env){const m=d.attributeName();(this.getOptionValue(m)===void 0||["default","config","env"].includes(this.getOptionValueSource(m)))&&(d.required||d.optional?this.emit(`optionEnv:${d.name()}`,a.env[d.envVar]):this.emit(`optionEnv:${d.name()}`))}})}_parseOptionsImplied(){const d=new f(this.options),m=A=>this.getOptionValue(A)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(A));this.options.filter(A=>A.implied!==void 0&&m(A.attributeName())&&d.valueFromOption(this.getOptionValue(A.attributeName()),A)).forEach(A=>{Object.keys(A.implied).filter(g=>!m(g)).forEach(g=>{this.setOptionValueWithSource(g,A.implied[g],"implied")})})}missingArgument(d){const m=`error: missing required argument '${d}'`;this.error(m,{code:"commander.missingArgument"})}optionMissingArgument(d){const m=`error: option '${d.flags}' argument missing`;this.error(m,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(d){const m=`error: required option '${d.flags}' not specified`;this.error(m,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(d,m){const A=G=>{const B=G.attributeName(),K=this.getOptionValue(B),O=this.options.find(L=>L.negate&&B===L.attributeName()),w=this.options.find(L=>!L.negate&&B===L.attributeName());return O&&(O.presetArg===void 0&&K===!1||O.presetArg!==void 0&&K===O.presetArg)?O:w||G},g=G=>{const B=A(G),K=B.attributeName();return this.getOptionValueSource(K)==="env"?`environment variable '${B.envVar}'`:`option '${B.flags}'`},Z=`error: ${g(d)} cannot be used with ${g(m)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let g=[],Z=this;do{const G=Z.createHelp().visibleOptions(Z).filter(B=>B.long).map(B=>B.long);g=g.concat(G),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);m=p(d,g)}const A=`error: unknown option '${d}'${m}`;this.error(A,{code:"commander.unknownOption"})}_excessArguments(d){if(this._allowExcessArguments)return;const m=this.registeredArguments.length,A=m===1?"":"s",g=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${m} argument${A} but got ${d.length}.`;this.error(g,{code:"commander.excessArguments"})}unknownCommand(){const d=this.args[0];let m="";if(this._showSuggestionAfterError){const g=[];this.createHelp().visibleCommands(this).forEach(Z=>{g.push(Z.name()),Z.alias()&&g.push(Z.alias())}),m=p(d,g)}const A=`error: unknown command '${d}'${m}`;this.error(A,{code:"commander.unknownCommand"})}version(d,m,A){if(d===void 0)return this._version;this._version=d,m=m||"-V, --version",A=A||"output the version number";const g=this.createOption(m,A);return this._versionOptionName=g.attributeName(),this._registerOption(g),this.on("option:"+g.name(),()=>{this._outputConfiguration.writeOut(`${d}
24
+ `),this._exit(0,"commander.version",d)}),this}description(d,m){return d===void 0&&m===void 0?this._description:(this._description=d,m&&(this._argsDescription=m),this)}summary(d){return d===void 0?this._summary:(this._summary=d,this)}alias(d){if(d===void 0)return this._aliases[0];let m=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(m=this.commands[this.commands.length-1]),d===m._name)throw new Error("Command alias can't be the same as its name");const A=this.parent?._findCommand(d);if(A){const g=[A.name()].concat(A.aliases()).join("|");throw new Error(`cannot add alias '${d}' to command '${this.name()}' as already have command '${g}'`)}return m._aliases.push(d),this}aliases(d){return d===void 0?this._aliases:(d.forEach(m=>this.alias(m)),this)}usage(d){if(d===void 0){if(this._usage)return this._usage;const m=this.registeredArguments.map(A=>s(A));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?m:[]).join(" ")}return this._usage=d,this}name(d){return d===void 0?this._name:(this._name=d,this)}helpGroup(d){return d===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=d,this)}commandsGroup(d){return d===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=d,this)}optionsGroup(d){return d===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=d,this)}_initOptionGroup(d){this._defaultOptionGroup&&!d.helpGroupHeading&&d.helpGroup(this._defaultOptionGroup)}_initCommandGroup(d){this._defaultCommandGroup&&!d.helpGroup()&&d.helpGroup(this._defaultCommandGroup)}nameFromFilename(d){return this._name=o.basename(d,o.extname(d)),this}executableDir(d){return d===void 0?this._executableDir:(this._executableDir=d,this)}helpInformation(d){const m=this.createHelp(),A=this._getOutputContext(d);m.prepareContext({error:A.error,helpWidth:A.helpWidth,outputHasColors:A.hasColors});const g=m.formatHelp(this,m);return A.hasColors?g:this._outputConfiguration.stripColor(g)}_getOutputContext(d){d=d||{};const m=!!d.error;let A,g,Z;return m?(A=B=>this._outputConfiguration.writeErr(B),g=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth()):(A=B=>this._outputConfiguration.writeOut(B),g=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth()),{error:m,write:B=>(g||(B=this._outputConfiguration.stripColor(B)),A(B)),hasColors:g,helpWidth:Z}}outputHelp(d){let m;typeof d=="function"&&(m=d,d=void 0);const A=this._getOutputContext(d),g={error:A.error,write:A.write,command:this};this._getCommandAndAncestors().reverse().forEach(G=>G.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let Z=this.helpInformation({error:A.error});if(m&&(Z=m(Z),typeof Z!="string"&&!Buffer.isBuffer(Z)))throw new Error("outputHelp callback must return a string or a Buffer");A.write(Z),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",g),this._getCommandAndAncestors().forEach(G=>G.emit("afterAllHelp",g))}helpOption(d,m){return typeof d=="boolean"?(d?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(d??"-h, --help",m??"display help for command"),(d||m)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(d){return this._helpOption=d,this._initOptionGroup(d),this}help(d){this.outputHelp(d);let m=Number(a.exitCode??0);m===0&&d&&typeof d!="function"&&d.error&&(m=1),this._exit(m,"commander.help","(outputHelp)")}addHelpText(d,m){const A=["beforeAll","before","after","afterAll"];if(!A.includes(d))throw new Error(`Unexpected value for position to addHelpText.
25
+ Expecting one of '${A.join("', '")}'`);const g=`${d}Help`;return this.on(g,Z=>{let G;typeof m=="function"?G=m({error:Z.error,command:Z.command}):G=m,G&&Z.write(`${G}
26
+ `)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(A=>m.is(A))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function V(J){return J.map(d=>{if(!d.startsWith("--inspect"))return d;let m,A="127.0.0.1",g="9229",Z;return(Z=d.match(/^(--inspect(-brk)?)$/))!==null?m=Z[1]:(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=Z[1],/^\d+$/.test(Z[3])?g=Z[3]:A=Z[3]):(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=Z[1],A=Z[3],g=Z[4]),m&&g!=="0"?`${m}=${A}:${parseInt(g)+1}`:d})}function X(){if(a.env.NO_COLOR||a.env.FORCE_COLOR==="0"||a.env.FORCE_COLOR==="false")return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=R,e.useColor=X})),ac=ot((e=>{var{Argument:t}=So(),{Command:n}=rc(),{CommanderError:o,InvalidArgumentError:r}=Rn(),{Help:a}=bi(),{Option:i}=gi();e.program=new n,e.createCommand=s=>new n(s),e.createOption=(s,l)=>new i(s,l),e.createArgument=(s,l)=>new t(s,l),e.Command=n,e.Option=i,e.Argument=t,e.Help=a,e.CommanderError=o,e.InvalidArgumentError=r,e.InvalidOptionArgumentError=r})),ic=rt(ac(),1),{program:UZ,createCommand:JZ,createArgument:xZ,createOption:KZ,CommanderError:sc,InvalidArgumentError:zZ,InvalidOptionArgumentError:LZ,Command:lc,Argument:jZ,Option:Se,Help:TZ}=ic.default;function Ai(e){return e.replace(/\s+/g," ").trim()}function ie(e,t){const n=t.map(a=>e.map(i=>Ai(i.value(a)))),o=e.map((a,i)=>{const s=n.map(l=>l[i].length);return Math.max(a.header.length,...s)}),r=a=>a.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[r(e.map(a=>a.header)),r(o.map(a=>"-".repeat(a))),...n.map(r)].join(`
27
+ `)}function q(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,r])=>`${o.padEnd(n)} ${Ai(r??"")}`).join(`
28
+ `)}
29
+ `}function cc(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),o=Math.floor(t%3600/60);return n>0?`${n}h ${o}m`:o>0?`${o}m ${t%60}s`:`${t}s`}function mt(e,t){if(!e)return;if(!t)return e;const n=Date.parse(e)-Date.parse(t);return Number.isNaN(n)?e:`${e} (${n>=0?"in":"ago"} ${cc(Math.abs(n))})`}function Dt(e,t){if(!e)return;const n=mt(e.earliestAt,t),o=mt(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function fi(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function Ir(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function At(e,t="status"){const n=e.serverTime,o=`Lock ${e.lockId}: ${e.status} as ${e.ownerId} (myTurn: ${e.myTurn?"yes":"no"})`;if(e.status==="Holding"){const r=[o,q([["Epoch",String(e.epoch)],["Valid until",mt(e.leaseExpiresAt,n)?`${mt(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",mt(e.maxHoldExpiresAt,n)?`${mt(e.maxHoldExpiresAt,n)}; the lock is taken back then even with heartbeats`:void 0],["Check in",Dt(e.checkInWindow,n)],["Queue length",e.queueLength>0?String(e.queueLength):void 0]]).trimEnd(),`Next: start the heartbeat watcher before any work: hagi agent lock heartbeat ${Ir(e)} --epoch ${e.epoch}`];return t==="acquire"&&r.push("If you acquired this lock before, that first acquire is still valid: same epoch, the hard cap did not restart and the lease was not refreshed. Only the heartbeat renews the lease."),`${r.join(`
30
+ `)}
31
+ `}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",fi(e)],["Check in",Dt(e.checkInWindow,n)],["Your turn",Dt(e.turnWindow,n)?`${Dt(e.turnWindow,n)} (a bound, usually much sooner)`:void 0],["Poll interval",e.suggestedPollIntervalMs>0?`${e.suggestedPollIntervalMs/1e3}s`:void 0]]).trimEnd(),`Next: wait with a continuous watcher, do not sleep and re-check: hagi agent lock acquire ${Ir(e)} --wait`].join(`
32
+ `)+`
33
+ `;if(e.status==="Requisitioned"){const r=e.requisition;return`${o}
34
+ Requisitioned by ${r?.byOwnerId??"another owner"}${r?.at?` at ${r.at}`:""}, reason: ${r?.reason??"not given"}.
35
+ Stop using the resource now. Queue again only if your task still needs it, and never requisition it back.
36
+ `}return e.status==="Expired"?`${o}
37
+ Your hold or queue entry has ended (lease or claim window ran out, hard cap passed, or the entry was dropped). Stop using the resource. Acquire again to queue at the back.
38
+ `:`${o}
39
+ The backend has no hold or queue entry for this owner. Acquire to queue.
40
+ `}function dc(e){const t=fi(e);return`Lock ${e.lockId}: still queued, position ${e.position} of ${e.queueLength}${t?`, held by ${t}`:""}.
41
+ `}function uc(e,t){switch(e.outcome){case"timeout":return`Timed out after ${e.elapsedSeconds}s waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
42
+ `;case"cancelled":return`Interrupted while waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
43
+ `;case"lost":return`The backend dropped the queue entry for lock ${e.status.lockId} (${e.status.status}). Acquire again to queue at the back.
44
+ `;default:return""}}function mc(e){const t=e.holderOwnerId?`held by ${e.holderOwnerId}`:"free",n=`owner ${e.ownerId} on lock ${e.lockId}`;return e.released?`Released ${e.previousStatus==="Holding"?"the lock":"the queue entry"} of ${n}. The lock is now ${t}.
45
+ `:`Nothing to release for ${n} (it was ${e.previousStatus}). The lock is ${t}.
46
+ `}function hc(e){return e.length===0?`No busy locks.
47
+ `:`Locks (${e.length})
48
+ ${ie([{header:"LOCK",value:t=>t.lockId},{header:"HOLDER",value:t=>t.holderOwnerId??"-"},{header:"LABEL",value:t=>t.holderLabel??""},{header:"EPOCH",value:t=>String(t.epoch)},{header:"LEASE EXPIRES",value:t=>t.leaseExpiresAt??""},{header:"QUEUE",value:t=>String(t.queueLength)}],e)}
49
+ `}function W(e){return`${JSON.stringify(e,null,2)}
50
+ `}var S;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(S||(S={}));function Vo(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var b;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(b||(b={}));function bc(){const e=this.buf;let t=this.pos,n=0,o=0;for(let a=0;a<28;a+=7){const i=e[t++];if(n|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const r=e[t++];if(n|=(r&15)<<28,o=(r&112)>>4,(r&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let a=3;a<=31;a+=7){const i=e[t++];if(o|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var sn=4294967296;function Xr(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,r=0;function a(i,s){const l=Number(e.slice(i,s));r*=n,o=o*n+l,o>=sn&&(r=r+(o/sn|0),o=o%sn)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Ri(o,r):Go(o,r)}function gc(e,t){let n=Go(e,t);const o=n.hi&2147483648;o&&(n=Ri(n.lo,n.hi));const r=Zi(n.lo,n.hi);return o?"-"+r:r}function Zi(e,t){if({lo:e,hi:t}=pc(e,t),t<=2097151)return String(sn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535;let a=n+o*6777216+r*6710656,i=o+r*8147497,s=r*2;const l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Yr(i)+Yr(a)}function pc(e,t){return{lo:e>>>0,hi:t>>>0}}function Go(e,t){return{lo:e|0,hi:t|0}}function Ri(e,t){return t=~t,e?e=~e+1:t+=1,Go(e,t)}var Yr=e=>{const t=String(e);return"0000000".slice(t.length)+t};function Ac(e,t){if(e>>>0<128){t.push(e);return}if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function fc(){let e=this.buf[this.pos++];if((e&128)===0)return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)===0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!==0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var H=Zc();function Zc(){const e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(globalThis.Deno||globalThis.Bun||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),o=BigInt("0"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>n||i<t)throw new Error(`invalid int64: ${a}`);return i},uParse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>r||i<o)throw new Error(`invalid uint64: ${a}`);return i},enc(a){return e.setBigInt64(0,this.parse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(a){return e.setBigInt64(0,this.uParse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Br(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Cr(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Br(t),Xr(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Cr(t),Xr(t)},dec(t,n){return gc(t,n)},uDec(t,n){return Zi(t,n)}}}function Br(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Cr(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function we(e,t){switch(e){case b.STRING:return"";case b.BOOL:return!1;case b.DOUBLE:case b.FLOAT:return 0;case b.INT64:case b.UINT64:case b.SFIXED64:case b.FIXED64:case b.SINT64:return t?"0":H.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function Rc(e,t){switch(e){case b.BOOL:return t===!1;case b.STRING:return t==="";case b.BYTES:return t instanceof Uint8Array&&!t.byteLength;case b.DOUBLE:case b.FLOAT:return Object.is(t,0);default:return t==0}}var Ei=2,me=Symbol.for("reflect unsafe local");function Ec(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Sc(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=Ei)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!Rc(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function Jt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function Vc(e,t){if(t.oneof){const n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function Gc(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function fe(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Nc(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function vc(e,t){const n=t.localName;if(t.oneof){const o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=Ei)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=we(t.scalar,t.longAsString);break}}function Te(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e,t){var n,o,r,a;if(Te(e)&&me in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function vo(e,t){var n,o,r,a;if(Te(e)&&me in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Wo(e,t){return Te(e)&&me in e&&"desc"in e&&Te(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function Wc(e){return Vi(e.$typeName)}function at(e){const t=e.fields[0];return Vi(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function Si(e){switch(e.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return at(e)}}var yc=new Set(["google.protobuf.DoubleValue","google.protobuf.FloatValue","google.protobuf.Int64Value","google.protobuf.UInt64Value","google.protobuf.Int32Value","google.protobuf.UInt32Value","google.protobuf.BoolValue","google.protobuf.StringValue","google.protobuf.BytesValue"]);function Vi(e){return yc.has(e)}var Ic=999,Xc=998,Gi=2;function de(e,t){return Vo(t,e)?t:Ni(e)(t)}var wr=new WeakMap;function Ni(e){let t=wr.get(e);return t===void 0&&(t=Yc(e),wr.set(e,t)),t}var no=0,vi=1,Wi=2,yi=3;function Yc(e){const t=e.typeName,{properties:n,prototype:o}=Bc(e);return r=>{let a;o!==void 0?(a=Object.create(o),a.$typeName=t):a={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=r?.[l];switch(s.kind){case no:c!=null?a[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(a[l]=s.constant);break;case vi:a[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case Wi:if(s.convert===void 0||!Te(c))a[l]=c??{};else{const u={},h=Object.keys(c);for(let f=0;f<h.length;f++)fe(u,h[f],s.convert(c[h[f]]));a[l]=u}break;case yi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){a[l]={case:u.case,value:h(u.value)};break}}a[l]={case:void 0};break}}}return a}}function Bc(e){var t,n;const o=[],r={},a=wc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:yi,constant:void 0,convert:Cc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:no,constant:void 0,convert:ln(i)});break;case"list":o.push({name:s,kind:vi,constant:void 0,convert:i.listKind=="message"?(t=ln(i))!==null&&t!==void 0?t:(l=>l):i.scalar==b.BYTES?kt:void 0});break;case"map":o.push({name:s,kind:Wi,constant:void 0,convert:i.mapKind=="message"?(n=ln(i))!==null&&n!==void 0?n:(l=>l):i.scalar==b.BYTES?kt:void 0});break;default:{const l=Fc(i);o.push({name:s,kind:no,constant:i.presence==Gi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?kt:void 0}),a&&(r[s]=l);break}}}return{properties:o,prototype:a?r:void 0}}function Cc(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=ln(n):n.fieldKind=="scalar"&&n.scalar==b.BYTES&&(o=kt),t.set(n.localName,o??(r=>r))}return t}function ln(e){if(e.fieldKind=="message"&&!e.oneof&&at(e.message))return e.message.fields[0].scalar==b.BYTES?kt:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!Te(o)||Vo(o,t)?o:(n!=null||(n=Ni(t)),n(o))}function kt(e){return Array.isArray(e)?new Uint8Array(e):e}function wc(e){switch(e.file.edition){case Ic:return!1;case Xc:return!0;default:return e.fields.some(t=>t.presence!=Gi&&t.fieldKind!="message"&&!t.oneof)}}function Fc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?we(e.scalar,e.longAsString):e.enum.values[0].number}var kc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function Uc(e){return e instanceof Error&&kc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var oo;function Jc(e){var t;oo=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:Ii(e.encodeUtf8.bind(e))})}function yo(){if(!oo){const e=globalThis;if(!e.TextEncoder||!e.TextDecoder)throw new Error("encoding API missing: install TextEncoder and TextDecoder on globalThis");const t=new e.TextEncoder,n=new e.TextDecoder;let o;const r={encodeUtf8(i){return t.encode(i)},decodeUtf8(i,s){return s?(o||(o=new e.TextDecoder("utf-8",{fatal:!0})),o.decode(i)):n.decode(i)},checkUtf8(i){try{return!0}catch{return!1}}};t.encodeInto&&(r.encodeUtf8Into=t.encodeInto.bind(t));const a=String.prototype.isWellFormed;a&&(r.checkUtf8=i=>a.call(i)),Jc(r)}return oo}function Ii(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var _;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(_||(_={}));var Xi=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?Ii(e):yo().encodeUtf8Into,this.buffer=Yi,this.viewCache=Kc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||xc;for(;n<t;)n*=2;const o=new Uint8Array(n);this.pos>0&&o.set(this.buffer),this.buffer=o}}view(){const e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;const n=new DataView(e.buffer);return this.viewCache=n,n}finish(){const e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(Yt),this.buffer[this.pos++]=0,this}join(){const e=this.stackPos.pop();if(e===void 0)throw new Error("invalid state, fork stack empty");const t=this.pos-e-Yt,n=xn(t);return n>Yt&&(this.ensureCapacity(n-Yt),this.buffer.copyWithin(e+n,e+Yt,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(Fr(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(Kn(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=e?1:0,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!="string"&&(e=String(e));const t=e.length;if(t<=Bi){this.ensureCapacity(t+1);const s=this.buffer;let l=this.pos;s[l++]=t;let c=0;for(;c<t;c++){const u=e.charCodeAt(c);if(u>127)break;s[l++]=u}if(c==t)return this.pos=l,this}this.ensureCapacity(t*3+5);const n=xn(t),o=this.buffer,r=this.pos,{written:a}=this.encodeUtf8Into(e,o.subarray(r+n)),i=xn(a);return i!=n&&o.copyWithin(r+i,r+n,r+n+a),this.uint32(a),this.pos+=a,this}float(e){return zc(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return Fr(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return Kn(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return Kn(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=H.enc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){const t=H.uEnc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){const t=H.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=H.enc(e),n=t.hi>>31,o=t.lo<<1^n,r=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,r)}uint64(e){const t=H.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);const n=this.buffer;let o=this.pos;for(let i=0;i<28;i=i+7){const s=e>>>i,l=!(!(s>>>7)&&t==0);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}const r=e>>>28&15|(t&7)<<4,a=t>>3!=0;if(n[o++]=(a?r|128:r)&255,!a)return this.pos=o,this;for(let i=3;i<31;i=i+7){const s=t>>>i,l=!!(s>>>7);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}return n[o++]=t>>>31&1,this.pos=o,this}},xc=128,Yt=1,Yi=new Uint8Array(0),Kc=new DataView(Yi.buffer),Bi=32;function xn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var xt=class{constructor(e,t=yo().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=bc,this.uint32=fc,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){const e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");const o=t>>>3,r=t&7;if(o<=0||r>5)throw new Error("illegal tag: field no "+o+" wire type "+r);return[o,r]}skip(e,t,n=100){let o=this.pos;switch(e){case _.Varint:for(;this.buf[this.pos++]&128;);break;case _.Bit64:this.pos+=4;case _.Bit32:this.pos+=4;break;case _.LengthDelimited:let r=this.uint32();this.pos+=r;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[a,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a,n-1)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),H.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),H.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,H.dec(e,t)}bool(){const e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return H.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return H.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){const t=this.bytes(),n=t.length;if(n<=Bi){const o=new Array(n);for(let r=0;r<n;r++){const a=t[r];if(a>127)return this.decodeUtf8(t,e);o[r]=a}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function Kn(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int32: "+e)}function Fr(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint32: "+e)}function zc(e){if(typeof e=="string"){const t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw new Error("invalid float32: "+e)}function Ci(e,t){const n=e.fieldKind=="list"?No(t,e):e.fieldKind=="map"?vo(t,e):Io(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${Fi(e)}, got ${te(t)}`;break;case"map":o=`expected ${ki(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function kr(e,t,n){const o=Io(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function Lc(e,t,n){const o=He(e.mapKey)(t);if(o!==!0)return new Q(e,`invalid map key: ${pe({scalar:e.mapKey},t,o)}`);const r=Io(e,n);if(r!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,r)}`)}function Io(e,t){return e.scalar!==void 0?He(e.scalar)(t):e.enum!==void 0?e.enum.open?He(b.INT32)(t):e.enum.values.some(n=>n.number===t):Wo(t,e.message)}function He(e){switch(e){case b.DOUBLE:return t=>typeof t=="number";case b.FLOAT:return t=>typeof t!="number"?!1:!Number.isFinite(Math.fround(t))&&Number.isFinite(t)?`${t.toFixed()} out of range`:!0;case b.INT32:case b.SFIXED32:case b.SINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>2147483647||t<-2147483648?`${t.toFixed()} out of range`:!0;case b.FIXED32:case b.UINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>4294967295||t<0?`${t.toFixed()} out of range`:!0;case b.BOOL:return t=>typeof t=="boolean";case b.STRING:return t=>typeof t!="string"?!1:yo().checkUtf8(t)||"invalid UTF8";case b.BYTES:return t=>t instanceof Uint8Array;case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return H.parse(t),!0}catch{return`${t} out of range`}return!1};case b.FIXED64:case b.UINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return H.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function pe(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(t)}`,e.scalar!==void 0?`expected ${jc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${wi(e.message)}`+n}function te(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:No(e)?Fi(e.field()):vo(e)?ki(e.field()):Wo(e)?wi(e.desc):Vo(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function wi(e){return`ReflectMessage (${e.typeName})`}function Fi(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${b[e.scalar]})`}}function ki(e){switch(e.mapKind){case"message":return`ReflectMap (${b[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${b[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${b[e.mapKey]}, ${b[e.scalar]})`}}function jc(e){switch(e){case b.STRING:return"string";case b.BOOL:return"boolean";case b.INT64:case b.SINT64:case b.SFIXED64:return"bigint (int64)";case b.UINT64:case b.FIXED64:return"bigint (uint64)";case b.BYTES:return"Uint8Array";case b.DOUBLE:return"number (float64)";case b.FLOAT:return"number (float32)";case b.FIXED32:case b.UINT32:return"number (uint32)";case b.INT32:case b.SFIXED32:case b.SINT32:return"number (int32)"}}var Tc=0;function Ge(e){if(Hc(e))return{toMessage:n=>Xo(n),toLocal:n=>Yo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:r=>{const a=de(n);return r!==void 0&&(a[o]=r),a},toLocal:r=>r[o]}}const t=e.message;return{toMessage:n=>n===void 0?de(t):n,toLocal:n=>n}}function Hc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Xo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(Te(e))for(const n of Object.keys(e))fe(t.fields,n,Ji(e[n]));return t}function Yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,Ui(e.fields[n]));return t}function Ui(e){switch(e.kind.case){case"structValue":return Yo(e.kind.value);case"listValue":return e.kind.value.values.map(Ui);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ji(e){const t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:Tc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ji(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Xo(e)};break}return t}function Qc(e,t,n=!0){return new xi(e,t,n)}var Ur=new WeakMap,xi=class{get sortedFields(){const e=Ur.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ur.set(this.desc,t),t}constructor(e,t,n=!0){this.lists=new Map,this.maps=new Map,this.check=n,this.desc=e,this.message=this[me]=t??de(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(e)}oneofCase(e){return Bt(this.message,e),Ec(this.message,e)}isSet(e){return Bt(this.message,e),Sc(this.message,e)}clear(e){Bt(this.message,e),vc(this.message,e)}get(e){Bt(this.message,e);const t=Vc(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[me]!==t)&&this.lists.set(e,n=new Mc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Oc(e,t,this.check)),o;case"message":return Co(e,t,this.check);case"scalar":return t===void 0?we(e.scalar,!1):wo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Bt(this.message,e),this.check){const o=Ci(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Bo(e,t):vo(t)||No(t)?n=t[me]:n=Fo(e,t),Gc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Bt(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Mc=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[me]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:zn(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new Q(this._field,`list item #${e+1}: out of range`);if(this.check){const n=kr(this._field,e,t);if(n)throw n}this._arr[e]=Jr(this._field,t)}add(e){if(this.check){const t=kr(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Jr(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(const e of this._arr)yield zn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,zn(this._field,this._arr[e],this.check)]}},Oc=class{constructor(e,t,n=!0){this.obj=this[me]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=Lc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),Dc(this._field,t)),this}delete(e){const t=_t(e),n=Object.prototype.hasOwnProperty.call(this.obj,t);return n&&delete this.obj[t],n}clear(){for(const e of Object.keys(this.obj))delete this.obj[e]}get(e){let t=Nc(this.obj,_t(e));return t!==void 0&&(t=Ln(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,_t(e))}*keys(){for(const e of Object.keys(this.obj))yield xr(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[xr(e[0],this._field.mapKey),Ln(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(const e of Object.values(this.obj))yield Ln(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Bo(e,t){return Wo(t)?Wc(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Yo(t.message):t.message:t}function Co(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:wo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Te(t)&&(t=Xo(t))),new xi(e.message,t,n)}function Jr(e,t){return e.listKind=="message"?Bo(e,t):Fo(e,t)}function zn(e,t,n){return e.listKind=="message"?Co(e,t,n):wo(e,t)}function Dc(e,t){return e.mapKind=="message"?Bo(e,t):Fo(e,t)}function Ln(e,t,n){return e.mapKind=="message"?Co(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function xr(e,t){switch(t){case b.STRING:return e;case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:{const n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case b.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case b.UINT64:case b.FIXED64:try{return H.uParse(e)}catch{}break;default:try{return H.parse(e)}catch{}break}return e}function wo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.uParse(t));break}return t}function Fo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.uParse(t));break}return t}var Kr=Uint8Array.prototype.setFromBase64;function ko(e){const t=e.length;let n=t-(t+3>>2);(t&3)==0&&e[t-1]=="="&&(n-=e[t-2]=="="?2:1);const o=new Uint8Array(n);let r=-1;if(Kr)try{const a=Kr.call(o,e);a.read==t&&(r=a.written)}catch{}return r<0&&(r=_c(o,e)),r==n?o:o.subarray(0,r)}function _c(e,t){const n=qc();let o=0,r=0,a,i=0;for(let s=0;s<t.length;s++){if(a=n[t.charCodeAt(s)],a===void 0)switch(t[s]){case"=":r=0;case`
51
+ `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(r){case 0:i=a,r=1;break;case 1:e[o++]=i<<2|(a&48)>>4,i=a,r=2;break;case 2:e[o++]=(i&15)<<4|(a&60)>>2,i=a,r=3;break;case 3:e[o++]=(i&3)<<6|a,r=0;break}}if(r==1)throw Error("invalid base64 string");return o}var zr=Uint8Array.prototype.toBase64,$c={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function Pc(e,t="std"){if(zr)return zr.call(e,$c[t]);const n=Ki(t),o=t=="std";let r="",a=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:r+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:r+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:r+=n[s|i>>6],r+=n[i&63],a=0;break}return a&&(r+=n[s],o&&(r+="=",a==1&&(r+="="))),r}var $t,Lr,st;function Ki(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Lr=$t.slice(0,-2).concat("-","_")),e=="url"?Lr:$t}function qc(){if(!st){st=[];const e=Ki("std");for(let t=0;t<e.length;t++)st[e[t].charCodeAt(0)]=t;st[45]=e.indexOf("+"),st[95]=e.indexOf("/")}return st}function ft(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let r=e.charAt(o);switch(r){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function zi(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var ed=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return ed.has(e)?e+"$":e}function Uo(e){for(const t of e.field)Jt(t,"jsonName")||(t.jsonName=ft(t.name));e.nestedType.forEach(Uo)}function td(e,t){const n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function nd(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=od(t);if(n===!1)throw new Error(`cannot parse ${b[e]} default value: ${t}`);return n}case b.INT64:case b.SFIXED64:case b.SINT64:return H.parse(t);case b.UINT64:case b.FIXED64:return H.uParse(t);case b.DOUBLE:case b.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return NaN;default:return parseFloat(t)}case b.BOOL:return t==="true";case b.INT32:case b.UINT32:case b.SINT32:case b.FIXED32:case b.SFIXED32:return parseInt(t,10)}}function od(e){const t=[],n={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){const r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{const o=n.c,r=n.take(4);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,r=n.take(8);if(r===!1)return!1;const a=H.uEnc(o+r),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*ro(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*ro(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*ro(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function Li(...e){const t=rd();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Qr(o,t);return t}if("$typeName"in e[0]){let i=function(s){const l=[];for(const c of s.dependency){if(t.getFile(c)!=null||a.has(c))continue;const u=r(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],r=e[1],a=new Set;for(const s of[o,...i(o)].reverse())Qr(s,t)}else for(const o of e)for(const r of o.files)t.addFile(r);return t}function rd(){const e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(o,r,a){if(n.set(o.proto.name,o),!r)for(const i of ro(o))this.add(i);if(a)for(const i of o.dependencies)this.addFile(i,r,a)},add(o){if(o.kind=="extension"){let r=t.get(o.extendee.typeName);r||t.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){const r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){const r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var a;return(a=t.get(o.typeName))===null||a===void 0?void 0:a.get(r)},getService(o){const r=e.get(o);return r?.kind=="service"?r:void 0}}}var ad=998,id=999,sd=9999,ld=9,zt=10,Ut=11,cd=12,jr=14,Jo=3,dd=2,Tr=1,ud=0,jn=1,Hr=2,md=3,hd=1,bd=2,gd=1,pd=2,Ad=1002,ji={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2,enforceProtoLimits:1},1002:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:3,defaultSymbolVisibility:4,enforceProtoLimits:2}};function Qr(e,t){var n,o;const r={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Ed(e),name:e.name.replace(/\.proto$/,""),dependencies:Sd(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(s.typeName,s)}};for(const s of e.enumType)Ti(s,r,void 0,t);for(const s of e.messageType)Hi(s,r,void 0,t,i);for(const s of e.service)fd(s,r,t);ao(r,t);for(const s of a.values())io(s,t,i);for(const s of r.messages)io(s,t,i),ao(s,t);t.addFile(r,!0)}function ao(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=so(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=so(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)ao(n,t);break}}function io(e,t,n){const o=e.proto.oneofDecl.map(a=>Rd(a,e)),r=new Set;for(const a of e.proto.field){const i=vd(a,o),s=so(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),r.has(i)||(r.add(i),e.members.push(i)))}for(const a of o.filter(i=>r.has(i)))e.oneofs.push(a);for(const a of e.nestedMessages)io(a,t,n)}function Ti(e,t,n,o){var r,a,i,s,l,c;const u=Vd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(a=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&a!==void 0?a:!1,file:t,parent:n,open:!0,name:e.name,typeName:En(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=Xd(h),o.add(h);for(const f of e.value){const p=f.name;h.values.push(h.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:h,name:p,localName:Kt(u==null?p:p.substring(u.length)),number:f.number,jsonName:(l=Gd(f))!==null&&l!==void 0?l:p,toString(){return`enum value ${h.typeName}.${p}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Hi(e,t,n,o,r){var a,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:En(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)Ti(u,t,c,o);for(const u of e.nestedType)Hi(u,t,c,o,r)}function fd(e,t,n){var o,r;const a={kind:"service",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:t,name:e.name,typeName:En(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(const i of e.method){const s=Zd(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function Zd(e,t,n){var o,r,a,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";const l=n.getMessage(Ce(e.inputType)),c=n.getMessage(Ce(e.outputType));be(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=e.name;return{kind:"rpc",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,parent:t,name:u,localName:Kt(u.length?Kt(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:ud,toString(){return`rpc ${t.typeName}.${u}`}}}function Rd(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:Kt(ft(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function so(e,t,n,o,r){var a,i,s;const l=r===void 0,c={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Wd(e,o,l,t),utf8Validation:Yd(e,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};let u;if(l){const R=t.kind=="file"?t:t.file,V=t.kind=="file"?void 0:t,X=En(e,V,R);c.kind="extension",c.file=R,c.parent=V,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const J=n.getMessage(Ce(e.extendee));be(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const R=t;be(R.kind=="message"),c.parent=R,c.oneof=o,c.localName=o?ft(e.name):Kt(ft(e.name)),c.jsonName=e.jsonName,u=()=>`field ${R.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,p=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Jo){const R=f==Ut?r?.get(Ce(e.typeName)):void 0;if(R){c.fieldKind="map";const{key:V,value:X}=Id(R);return c.mapKey=V.scalar,c.mapKind=X.fieldKind,c.message=X.message,c.delimitedEncoding=!1,c.enum=X.enum,c.scalar=X.scalar,c}switch(c.fieldKind="list",f){case Ut:case zt:c.listKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message),c.delimitedEncoding=Mr(e,t);break;case jr:c.listKind="enum",c.enum=n.getEnum(Ce(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=p==Tr;break}return c.packed=yd(e,t),c}switch(f){case Ut:case zt:c.fieldKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Mr(e,t),c.getDefaultValue=()=>{};break;case jr:{const R=n.getEnum(Ce(e.typeName));be(R!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Ce(e.typeName)),c.getDefaultValue=()=>Jt(e,"defaultValue")?td(R,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=p==Tr,c.getDefaultValue=()=>Jt(e,"defaultValue")?nd(f,e.defaultValue):void 0;break}return c}function Ed(e){switch(e.syntax){case"":case"proto2":return ad;case"proto3":return id;case"editions":if(e.edition===sd)return Ad;if(e.edition in ji)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Sd(e,t){return e.dependency.map(n=>{const o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function Vd(e,t){const n=Nd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Gd(e){var t,n;let a;for(const i of(n=(t=e.options)===null||t===void 0?void 0:t.$unknown)!==null&&n!==void 0?n:[]){if(i.no!==998||i.wireType!==_.LengthDelimited)continue;const s=new xt(new xt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===_.LengthDelimited?a=s.string():s.skip(c,l)}}return a}function Nd(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function En(e,t,n){let o;return t?o=`${t.typeName}.${e.name}`:n.proto.package.length>0?o=`${n.proto.package}.${e.name}`:o=`${e.name}`,o}function Ce(e){return e.startsWith(".")?e.substring(1):e}function vd(e,t){if(!Jt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function Wd(e,t,n,o){if(e.label==dd)return md;if(e.label==Jo)return Hr;if(t||e.proto3Optional||n)return jn;const r=qe("fieldPresence",{proto:e,parent:o});return r==Hr&&(e.type==Ut||e.type==zt)?jn:r}function yd(e,t){if(e.label!=Jo)return!1;switch(e.type){case ld:case cd:case zt:case Ut:return!1}const n=e.options;return n&&Jt(n,"packed")?n.packed:hd==qe("repeatedFieldEncoding",{proto:e,parent:t})}function Id(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return be(t&&t.fieldKind=="scalar"&&t.scalar!=b.BYTES&&t.scalar!=b.FLOAT&&t.scalar!=b.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function Xd(e){var t;return gd==qe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Mr(e,t){return e.type==zt?!0:bd==qe("messageEncoding",{proto:e,parent:t})}function Yd(e,t){return pd==qe("utf8Validation",{proto:e,parent:t})}function qe(e,t){var n,o;const r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){const a=r[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return qe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const a=ji[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return qe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function Bd(e){const t=Cd(e);return t.messageType.forEach(Uo),Li(t,()=>{}).getFile(t.name)}function Cd(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Qi),enumType:e.enumType.map(Mi)}))}function Qi(e){var t,n,o,r,a,i,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(wd))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Qi))!==null&&r!==void 0?r:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Mi))!==null&&i!==void 0?i:[],extensionRange:(l=(s=e.extensionRange)===null||s===void 0?void 0:s.map(c=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},c)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function wd(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?Fd(e.options):void 0}))}function Fd(e){var t,n,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(o=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(r=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},r)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Mi(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function v(e,t,...n){return n.reduce((o,r)=>o.nestedMessages[r],e.messages[t])}var kd=Bd({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false",options:{}},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true",options:{}},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"removal_error",number:5,type:9,label:1}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001},{value:"STYLE2026",edition:1002}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001},{value:"STRICT",edition:1002}]}},{name:"enforce_proto_limits",number:9,type:14,label:1,typeName:".google.protobuf.FeatureSet.ProtoLimitsFeature.EnforceProtoLimits",options:{retention:2,targets:[6,3,4,5],editionDefaults:[{value:"LEGACY_NO_EXPLICIT_LIMITS",edition:900},{value:"PROTO_LIMITS2026",edition:1002}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]},{name:"ProtoLimitsFeature",enumType:[{name:"EnforceProtoLimits",value:[{name:"PROTO_LIMITS_UNKNOWN",number:0},{name:"LEGACY_NO_EXPLICIT_LIMITS",number:1},{name:"PROTO_LIMITS2026",number:2}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2},{name:"STYLE2026",number:3}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_2026",number:1002},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]}),Ud=v(kd,1),Or;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Or||(Or={}));var Dr;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(Dr||(Dr={}));var _r;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(_r||(_r={}));var $r;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})($r||($r={}));var Pr;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Pr||(Pr={}));var qr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(qr||(qr={}));var ea;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ea||(ea={}));var ta;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(ta||(ta={}));var na;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(na||(na={}));var oa;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(oa||(oa={}));var ra;(function(e){e[e.PROTO_LIMITS_UNKNOWN=0]="PROTO_LIMITS_UNKNOWN",e[e.LEGACY_NO_EXPLICIT_LIMITS=1]="LEGACY_NO_EXPLICIT_LIMITS",e[e.PROTO_LIMITS2026=2]="PROTO_LIMITS2026"})(ra||(ra={}));var aa;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(aa||(aa={}));var ia;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ia||(ia={}));var sa;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(sa||(sa={}));var la;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(la||(la={}));var ca;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ca||(ca={}));var da;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(da||(da={}));var ua;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY",e[e.STYLE2026=3]="STYLE2026"})(ua||(ua={}));var ma;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ma||(ma={}));var ha;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_2026=1002]="EDITION_2026",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(ha||(ha={}));var ba;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ba||(ba={}));function Oi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Ht(e,t,n){const o=de(e);return xo(e).read(o,new xt(t),Oi(n),t.byteLength),o}var Di=new WeakMap;function xo(e){let t=Di.get(e);return t===void 0&&(t=Jd(e)),t}function Jd(e){const t=String(e),n=new Map,o={read:xd(t,n),readGroup:Kd(t,n)};Di.set(e,o);for(const r of e.fields)n.set(r.number,_i(r));return o}function xd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);const s=o.pos+a,l=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<s;){const[c,u]=o.tag(),h=t.get(c);if(h===void 0){const f=o.skip(u,c,r.recursionLimit-r.depth);r.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,r,u)}l.length>0&&(n.$unknown=l),r.depth--}}function Kd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);let s,l;const c=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<o.len&&([s,l]=o.tag(),l!=_.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,r.recursionLimit-r.depth);r.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,r,l)}if(l!=_.EndGroup||s!==a)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),r.depth--}}function zd(e,t,n,o,r){_i(n)(e[me],t,r,o)}function _i(e){switch(e.fieldKind){case"scalar":return Ld(e);case"enum":return jd(e);case"message":return Td(e);case"list":return Hd(e);case"map":return Qd(e)}}function Ld(e){const t=hn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a)=>{r[o]={case:n,value:t(a)}}}return(o,r)=>{o[n]=t(r)}}function jd(e){var t;const n=e.localName,o=(t=e.oneof)===null||t===void 0?void 0:t.localName;if(e.enum.open)return o!==void 0?(i,s)=>{i[o]={case:n,value:s.int32()}}:(i,s)=>{i[n]=s.int32()};const r=e.enum.values,a=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(r.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];Ac(h,f);const p=(u=i.$unknown)!==null&&u!==void 0?u:[];p.push({no:a,wireType:c,data:new Uint8Array(f)}),i.$unknown=p}}}function Td(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=$i(e);if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=i[a],u=n(c.case===t?c.value:void 0);r(u,s,l),i[a]={case:t,value:o(u)}}}return(a,i,s)=>{const l=n(a[t]);r(l,i,s),a[t]=o(l)}}function $i(e){const t=xo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,r,a)=>t.readGroup(o,r,a,n)}return(n,o,r)=>t.read(n,o,r,o.uint32())}function Hd(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Ge(e),l=$i(e);return(c,u,h)=>{const f=i(void 0);l(f,u,h),c[t].push(s(f))}}const n=e.listKind=="enum"?b.INT32:e.scalar,o=e.listKind=="scalar"?e.longAsString:!1,r=hn(n,e.utf8Validation,o),a=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&a){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(r(s))}else u.push(r(s))}}function Qd(e){const t=e.localName,n=hn(e.mapKey,e.utf8Validation,!1),o=we(e.mapKey,!1);let r,a;switch(e.mapKind){case"scalar":{const i=e.scalar,s=hn(i,e.utf8Validation,!1);if(r=l=>s(l),i==b.BYTES)a=()=>new Uint8Array(0);else{const l=we(i,!1);a=()=>l}break}case"enum":{const i=e.enum.values[0].number;r=s=>s.int32(),a=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Ge(e),l=xo(e.message).read;r=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},a=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),p=s.pos+f;for(;s.pos<p;){const[R]=s.tag();switch(R){case 1:u=n(s);break;case 2:h=r(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=a()),fe(c,u,h)}}function hn(e,t,n){switch(e){case b.STRING:return o=>o.string(t);case b.BOOL:return o=>o.bool();case b.DOUBLE:return o=>o.double();case b.FLOAT:return o=>o.float();case b.INT32:return o=>o.int32();case b.INT64:return n?o=>String(o.int64()):o=>o.int64();case b.UINT64:return n?o=>String(o.uint64()):o=>o.uint64();case b.FIXED64:return n?o=>String(o.fixed64()):o=>o.fixed64();case b.BYTES:return o=>o.bytes();case b.FIXED32:return o=>o.fixed32();case b.SFIXED32:return o=>o.sfixed32();case b.SFIXED64:return n?o=>String(o.sfixed64()):o=>o.sfixed64();case b.SINT64:return n?o=>String(o.sint64()):o=>o.sint64();case b.UINT32:return o=>o.uint32();case b.SINT32:return o=>o.sint32()}}function oe(e,t){var n;const o=Ht(Ud,ko(e));return o.messageType.forEach(Uo),o.dependency=(n=t?.map(r=>r.proto.name))!==null&&n!==void 0?n:[],Li(o,r=>t?.find(a=>a.proto.name===r)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Md(e){return new Date(Od(e))}function Od(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var Pi=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Dd=v(Pi,0),_d=2,$d=3,ga={writeUnknownFields:!0};function Pd(e){return e?Object.assign(Object.assign({},ga),e):ga}function qi(e,t,n){const o=new Xi;return Ko(e)(o,Pd(n),t),o.finish()}var es=new WeakMap;function Ko(e){let t=es.get(e);return t===void 0&&(t=qd(e)),t}function qd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],r=[],a=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new Q(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<r.length;u++)r[u](i,s,l);const c=l.$unknown;if(c!==void 0&&s.writeUnknownFields)for(let u=0;u<c.length;u++){const{no:h,wireType:f,data:p}=c[u];i.tag(h,f).raw(p)}};es.set(e,a);for(const i of n)r.push(ts(i));return a}function ts(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return eu(e);case"list":return nu(e);case"map":return ou(e)}}function eu(e){const t=tu(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a,i)=>{const s=i[o];s.case===n&&t(r,a,s.value)}}if(e.presence!=_d){const o=e.presence==$d?`cannot encode ${e} to binary: required field not set`:void 0;return(r,a,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(r,a,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(r,a,i)=>{const s=i[n];s!==o&&t(r,a,s)}}switch(e.scalar){case b.BOOL:return(o,r,a)=>{const i=a[n];i!==!1&&t(o,r,i)};case b.STRING:return(o,r,a)=>{const i=a[n];i!==""&&t(o,r,i)};case b.BYTES:return(o,r,a)=>{const i=a[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,r,i)};case b.DOUBLE:case b.FLOAT:return(o,r,a)=>{const i=a[n];Object.is(i,0)||t(o,r,i)};default:return(o,r,a)=>{const i=a[n];i!=0&&t(o,r,i)}}}function tu(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Ge(e),n=ns(e);return(o,r,a)=>{n(o,r,t(a))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Vn(t),r=Sn(t,e.parent.typeName,e.name);return(a,i,s)=>{a.tag(n,o),r(a,s)}}}}function nu(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Ge(e),r=ns(e);return(a,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)r(a,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,r=Sn(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,_.LengthDelimited).fork();for(let u=0;u<c.length;u++)r(i,c[u]);i.join()}};const a=Vn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,a),r(i,c[u])}}}}function ou(e){const t=e.localName,n=e.number,o=ru(e);if(e.mapKind=="message"){const{toMessage:s}=Ge(e),l=Ko(e.message);return(c,u,h)=>{const f=h[t],p=Object.keys(f);for(let R=0;R<p.length;R++){const V=p[R];c.tag(n,_.LengthDelimited).fork(),o(c,V),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(f[V])),c.join(),c.join()}}}const r=e.mapKind=="enum"?b.INT32:e.scalar,a=Vn(r),i=Sn(r,e.parent.typeName,e.name);return(s,l,c)=>{const u=c[t],h=Object.keys(u);for(let f=0;f<h.length;f++){const p=h[f];s.tag(n,_.LengthDelimited).fork(),o(s,p),s.tag(2,a),i(s,u[p]),s.join()}}}function ru(e){const t=Vn(e.mapKey),n=Sn(e.mapKey,e.parent.typeName,e.name),o=au(e.mapKey);return(r,a)=>{r.tag(1,t),n(r,o(a))}}function au(e){switch(e){case b.STRING:return t=>t;case b.BOOL:return t=>t==="true"?!0:t==="false"?!1:t;case b.UINT64:case b.FIXED64:return t=>{try{return H.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return H.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Sn(e,t,n){const o=iu(e);return(r,a)=>{try{o(r,a)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function iu(e){switch(e){case b.STRING:return(t,n)=>t.string(n);case b.BOOL:return(t,n)=>t.bool(n);case b.DOUBLE:return(t,n)=>t.double(n);case b.FLOAT:return(t,n)=>t.float(n);case b.INT32:return(t,n)=>t.int32(n);case b.INT64:return(t,n)=>t.int64(n);case b.UINT64:return(t,n)=>t.uint64(n);case b.FIXED64:return(t,n)=>t.fixed64(n);case b.BYTES:return(t,n)=>t.bytes(n);case b.FIXED32:return(t,n)=>t.fixed32(n);case b.SFIXED32:return(t,n)=>t.sfixed32(n);case b.SFIXED64:return(t,n)=>t.sfixed64(n);case b.SINT64:return(t,n)=>t.sint64(n);case b.UINT32:return(t,n)=>t.uint32(n);case b.SINT32:return(t,n)=>t.sint32(n)}}function su(e,t,n,o){ts(o)(e,t,n[me])}function ns(e){const t=e.number,n=Ko(e.message);return e.delimitedEncoding?(o,r,a)=>{o.tag(t,_.StartGroup),n(o,r,a),o.tag(t,_.EndGroup)}:(o,r,a)=>{o.tag(t,_.LengthDelimited).fork(),n(o,r,a),o.join()}}function Vn(e){switch(e){case b.BYTES:case b.STRING:return _.LengthDelimited;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:return _.Bit64;case b.FIXED32:case b.SFIXED32:case b.FLOAT:return _.Bit32;default:return _.Varint}}function lu(e,t,n){let o=!1;return n||(n=de(Dd),o=!0),n.value=qi(e,t),n.typeUrl=uu(t.$typeName),o?n:void 0}function cu(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===os(e.typeUrl)}function du(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(os(e.typeUrl));if(!(!n||!cu(e,n)))return Ht(n,e.value)}function uu(e){return`type.googleapis.com/${e}`}function os(e){const t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var Je=oe("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),mu=v(Je,0),rs=v(Je,1),hu=v(Je,2),lo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(lo||(lo={}));var as=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function bu(e,t,n){is(t,e);const o=pu(e.$unknown,t),[r,a,i]=Gn(t),s=Oi(n);for(const l of o)zd(r,new xt(l.data),a,l.wireType,s);return i()}function gu(e,t,n){var o;is(t,e);const r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[a,i]=Gn(t,n),s=new Xi;su(s,{writeUnknownFields:!0},a,i);const l=new xt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);r.push({no:c,wireType:u,data:h})}e.$unknown=r}function pu(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Gn(e,t){const n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),r=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=de(r,t!==void 0?{[n]:t}:void 0);return[Qc(r,a),o,()=>{const i=a[n];if(i===void 0){const s=e.message;return at(s)?we(s.fields[0].scalar,s.fields[0].longAsString):de(s)}return i}]}function is(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var ss=Date.parse("0001-01-01T00:00:00Z"),ls=Date.parse("9999-12-31T23:59:59Z");var Au=3,fu=2,pa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function Zu(e){return e?Object.assign(Object.assign({},pa),e):pa}function cs(e,t,n){return bn(e)(Zu(n),t)}function Ru(e,t,n){var o;const r=cs(e,t,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var co=new WeakMap;function bn(e){let t=co.get(e);return t===void 0&&(t=Eu(e)),t}function Eu(e){const t=e.typeName,n=Vu(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new Q(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return co.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),r=o[0],a=[],i=(s,l)=>{if(l.$typeName!==t&&r!==void 0)throw new Q(r,`cannot use ${r} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<a.length;u++)a[u](s,l,c);return s.registry&&Iu(c,s,s.registry,l,e),c};co.set(e,i);for(const s of o){const l=Gu(s);a.push(s.jsonName==="__proto__"||s.name==="__proto__"?Su(l):l)}return i}function Su(e){return(t,n,o)=>{const r=Object.create(null);e(t,n,r);for(const a of Object.keys(r))fe(o,a,r[a])}}function Vu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Xu(n,t);case"google.protobuf.Timestamp":return(t,n)=>Cu(n);case"google.protobuf.Duration":return(t,n)=>Yu(n);case"google.protobuf.FieldMask":return(t,n)=>Bu(n);case"google.protobuf.Struct":return(t,n)=>hs(n);case"google.protobuf.Value":return(t,n)=>jo(n);case"google.protobuf.ListValue":return(t,n)=>bs(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=we(t.scalar,!1),r=Nn(t);return(a,i)=>{const s=i[n];return r(a,s===void 0?o:s)}}return}}function Gu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Nu(e);case"list":case"map":{const t=e.fieldKind=="list"?us(e):ms(e),n=e.name,o=e.jsonName,r=e.localName;return(a,i,s)=>{const l=t(a,i[r]);l!==void 0&&(s[a.useProtoFieldName?n:o]=l)}}}}function Nu(e){const t=ds(e),n=e.name,o=e.jsonName,r=e.localName;if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=s[a];c.case===r&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=fu){const a=e.presence==Au?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[r];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,r))l[i.useProtoFieldName?n:o]=t(i,c);else if(a!==void 0)throw new Error(a)}}if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return(i,s,l)=>{const c=s[r];(c!==a||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(a,i,s)=>{const l=i[r];(l!==!1||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.STRING:return(a,i,s)=>{const l=i[r];(l!==""||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.BYTES:return(a,i,s)=>{const l=i[r];(!(l instanceof Uint8Array)||l.byteLength>0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.DOUBLE:case b.FLOAT:return(a,i,s)=>{const l=i[r];(!Object.is(l,0)||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};default:return(a,i,s)=>{const l=i[r];(l!=0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))}}}function vu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return ds(e);case"list":return us(e);case"map":return ms(e)}}function ds(e){switch(e.fieldKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function zo(e){const{toMessage:t}=Ge(e),n=bn(e.message);return(o,r)=>n(o,t(r))}function us(e){const t=Wu(e);return(n,o)=>{const r=o;if(r.length==0&&!n.alwaysEmitImplicit)return;const a=[];for(let i=0;i<r.length;i++)a.push(t(n,r[i]));return a}}function Wu(e){switch(e.listKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function ms(e){const t=yu(e);return(n,o)=>{const r=o,a=Object.keys(r);if(a.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<a.length;s++){const l=a[s];fe(i,l,t(n,r[l]))}return i}}function yu(e){switch(e.mapKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function Lo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Aa(t,o);return null}:(n,o)=>{var r,a;if(typeof o!="number")throw Aa(t,o);return n.enumAsInteger?o:(a=(r=t.value[o])===null||r===void 0?void 0:r.jsonName)!==null&&a!==void 0?a:o}}function Aa(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${te(t)}`)}function Nn(e){switch(e.scalar){case b.INT32:case b.SFIXED32:case b.SINT32:case b.FIXED32:case b.UINT32:return(t,n)=>{if(typeof n!="number")throw lt(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw lt(e,n);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n};case b.STRING:return(t,n)=>{if(typeof n!="string")throw lt(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw lt(e,n);return n};case b.UINT64:case b.FIXED64:case b.INT64:case b.SFIXED64:case b.SINT64:return(t,n)=>{if(typeof n=="bigint"||typeof n=="string"||typeof n=="number"&&Number.isInteger(n))return n.toString();throw lt(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return Pc(n);throw lt(e,n)}}}function lt(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Ci(e,t))===null||n===void 0?void 0:n.message}`)}function Iu(e,t,n,o,r){const a=o.$unknown;if(a===void 0)return;const i=new Set;for(let s=0;s<a.length;s++){const{no:l}=a[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(r,l);if(!c)continue;const[u,h]=Gn(c,bu(o,c)),f=u[me],p=vu(h)(t,f[h.localName]);p!==void 0&&(e[c.jsonName]=p)}}}function Xu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,r;if(n&&(o=du(e,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const a=Si(r)?{value:bn(r)(t,o)}:bn(r)(t,o);return a["@type"]=e.typeUrl,a}function Yu(e){const t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(n!==0){let r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&t==0&&(o="-"+o)}return o+"s"}function Bu(e){return e.paths.map(t=>{if(zi(ft(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return ft(t)}).join(",")}function hs(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const r=n[o];fe(t,r,jo(e.fields[r]))}return t}function jo(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return hs(e.kind.value);case"listValue":return bs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function bs(e){return e.values.map(jo)}function Cu(e){const t=Number(e.seconds)*1e3;if(t<ss||t>ls)throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){const o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var wu=2;function Fu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function ku(e,t,n){return gs(e,Mu(t,e.typeName),n)}function gs(e,t,n){const o=de(e);return Uu(e,o,t,n),o}function Uu(e,t,n,o){try{Zt(e)(t,n,Fu(o))}catch(r){throw Uc(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}}var uo=new WeakMap;function Zt(e){let t=uo.get(e);return t===void 0&&(t=Ju(e)),t}function Ju(e){const t=String(e),n=xu(e);if(n!==void 0){const i=(s,l,c)=>{if(++c.depth>c.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${c.recursionLimit} reached`);n(s,l,c),c.depth--};return uo.set(e,i),i}const o=e.typeName,r=new Map,a=(i,s,l)=>{var c;if(++l.depth>l.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${l.recursionLimit} reached`);if(s==null||Array.isArray(s)||typeof s!="object")throw new Error(`cannot decode ${t} from JSON: ${te(s)}`);const u=new Map,h=new Set,f=Object.keys(s);for(let p=0;p<f.length;p++){const R=f[p],V=s[R],X=r.get(R);if(X!==void 0){const J=X.field;if(h.has(J))throw new Q(J,"set multiple times");if(h.add(J),X.oneofScalarNullSkip&&V===null)continue;if(X.oneof){const d=u.get(X.oneof);if(d!==void 0)throw new Q(X.oneof,`oneof set multiple times by ${d.name} and ${J.name}`);u.set(X.oneof,J)}X.read(i,V,l)}else{const J=R.startsWith("[")&&R.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(R.substring(1,R.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,A]=Gn(J);fa(m)(d[me],V,l),gu(i,J,A())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${R}" is unknown`)}}l.depth--};uo.set(e,a);for(const i of e.fields){const s={read:fa(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};r.set(i.name,s).set(i.jsonName,s)}return a}function xu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>Du(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>_u(t,n);case"google.protobuf.Duration":return(t,n)=>$u(t,n);case"google.protobuf.FieldMask":return(t,n)=>Pu(t,n);case"google.protobuf.Struct":return(t,n,o)=>Zs(t,n,o);case"google.protobuf.Value":return(t,n,o)=>Oo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>Rs(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,r=t.longAsString,a=As(t);return(i,s)=>{s===null?i[n]=we(o,r):i[n]=a(s)}}return}}function fa(e){switch(e.fieldKind){case"scalar":return Ku(e);case"enum":return zu(e);case"message":return Lu(e);case"list":return ju(e);case"map":return Hu(e)}}function Ku(e){const t=As(e),n=e.localName;if(e.oneof){const r=e.oneof.localName;return(a,i)=>{a[r]={case:n,value:t(i)}}}const o=ps(e);return(r,a)=>{a===null?o(r):r[n]=t(a)}}function ps(e){const t=e.localName;if(e.presence!=wu)return r=>{delete r[t]};if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return a=>{a[t]=r}}const n=e.scalar,o=e.longAsString;return r=>{r[t]=we(n,o)}}function zu(e){const t=To(e.enum),n=Ho(e.enum),o=e.localName,r=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&r){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===Rt)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const a=ps(e);return(i,s,l)=>{if(s===null&&r){a(i);return}const c=t(s,l.ignoreUnknownFields);if(c===Rt)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function Lu(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=Zt(e.message),a=e.message.typeName!="google.protobuf.Value";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{const u=s[i];if(l===null&&a){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);r(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&a){delete i[t];return}const c=n(i[t]);r(c,s,l),i[t]=o(c)}}function ju(e){const t=e.localName,n=Tu(e);return(o,r,a)=>{if(r===null)return;if(!Array.isArray(r))throw new Q(e,"expected Array, got "+te(r));const i=o[t];for(let s=0;s<r.length;s++){const l=n(r[s],a,i.length);l!==Rt&&i.push(l)}}}function Tu(e){switch(e.listKind){case"scalar":{const t=Qo(e),n=He(e.scalar),o=Mo(e);return(r,a,i)=>{if(r===null)throw new Q(e,"list item must not be null");const s=t(r),l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return o(s)}}case"enum":{const t=To(e.enum),n=Ho(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(r,a,i)=>{if(r===null&&o)throw new Q(e,"list item must not be null");const s=t(r,a.ignoreUnknownFields);if(s===Rt)return s;const l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=Ge(e),o=Zt(e.message),r=e.message.typeName!="google.protobuf.Value";return(a,i)=>{if(a===null&&r)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,a,i),n(s)}}}}function Hu(e){const t=e.localName,n=e.mapKey,o=Qu(n),r=He(n);let a,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":a=Qo(e),i=He(e.scalar),s=Mo(e);break;case"enum":{const c=To(e.enum);a=(u,h)=>c(u,h.ignoreUnknownFields),i=Ho(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Ge(e),h=Zt(e.message);l=e.message.typeName!="google.protobuf.Value",a=(f,p)=>{const R=c(void 0);return h(R,f,p),u(R)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new Q(e,"expected object, got "+te(u));const f=c[t],p=new Set,R=Object.keys(u);for(let V=0;V<R.length;V++){const X=R[V],J=u[X],d=o(X);if(p.has(d))throw new Q(e,`duplicate map key "${X}"`);if(p.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=a(J,h);if(m===Rt)continue;const A=r(d);if(A!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,A)}`);if(i!==void 0){const g=i(m);if(g!==!0)throw new Q(e,`map entry ${te(d)}: ${pe(e,m,g)}`)}fe(f,d,s(m))}}}var Rt=Symbol();function To(e){const t=e.values[0].number,n=new Map;for(const o of e.values)n.set(o.jsonName,o.number);for(const o of e.values)n.set(o.name,o.number);return(o,r)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const a=n.get(o);if(a!==void 0)return a;if(r)return Rt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ho(e){if(e.open)return He(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function As(e){const t=Qo(e),n=He(e.scalar),o=Mo(e);return r=>{const a=t(r),i=n(a);if(i!==!0)throw new Q(e,pe(e,a,i));return o(a)}}function Qo(e){switch(e.scalar){case b.DOUBLE:case b.FLOAT:return t=>{if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new Q(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Q(e,"unexpected infinite number");return t}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;const n=Number(t);return Number.isFinite(n)?n:t}return t};case b.INT32:case b.FIXED32:case b.SFIXED32:case b.SINT32:case b.UINT32:return fs;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ko(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Mo(e){const t=e.fieldKind!=="map"&&e.longAsString;switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.uParse(n):n;default:return n=>n}}function Qu(e){switch(e){case b.BOOL:return t=>{switch(t){case"true":return!0;case"false":return!1}return t};case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:return fs;case b.INT64:case b.SINT64:case b.SFIXED64:case b.UINT64:case b.FIXED64:return t=>/^-?0+$/.test(t)?"0":t.replace(/^(-?)0+(?=\d)/,"$1");default:return t=>t}}function fs(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;const t=Number(e);return Number.isNaN(t)?e:t}return e}function Mu(e,t){let n;try{n=JSON.parse(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:o})}return Ou(e,t),n}function Ou(e,t){const n=[];let o=!1,r=0;for(;r<e.length;)switch(e[r]){case"{":n.push(new Set),o=!0,r++;break;case"[":n.push(null),o=!1,r++;break;case"}":case"]":n.pop(),o=!1,r++;break;case",":o=n[n.length-1]!=null,r++;break;case":":o=!1,r++;break;case'"':{const a=r++;let i=!1;for(;r<e.length;){if(e[r]=="\\"){i=!0,r+=2;continue}if(e[r]=='"')break;r++}const s=r++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(a,s+1)):e.substring(a+1,s);if(l.has(c))throw new Error(`cannot decode message ${t} from JSON: duplicate object key "${c}"`);l.add(c)}o=!1;break}default:r++;break}}function Du(e,t,n){var o;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${te(t)}`);if(Object.keys(t).length==0)return;const r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const a=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);const i=(o=n.registry)===null||o===void 0?void 0:o.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);const s=de(i);if(Si(i)&&Object.prototype.hasOwnProperty.call(t,"value"))Zt(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);Zt(i)(s,l,n)}lu(i,s,e)}function _u(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);const o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<ss||o>ls)throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=H.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function $u(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);if(e.seconds=H.parse(o),typeof n[2]!="string")return;const r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function Pu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return zi(n)}))}function Zs(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);const o=Object.keys(t);for(let r=0;r<o.length;r++){const a=o[r],i=de(rs);Oo(i,t[a],n),fe(e.fields,a,i)}}function Oo(e,t,n){if(++n.depth>n.recursionLimit)throw new Error(`cannot decode ${e.$typeName} from JSON: maximum recursion depth of ${n.recursionLimit} reached`);switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:lo.NULL_VALUE};else if(Array.isArray(t)){const o=de(hu);Rs(o,t,n),e.kind={case:"listValue",value:o}}else{const o=de(mu);Zs(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`)}return n.depth--,e}function Rs(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);for(let o=0;o<t.length;o++){const r=de(rs);Oo(r,t[o],n),e.values.push(r)}}function Za(e){const t=S[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var C=class ut extends Error{constructor(t,n=S.Unknown,o,r,a){super(qu(t,n)),this.name="ConnectError",this.isWireError=!1,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(o??{}),this.details=r??[],this.cause=a}static from(t,n=S.Unknown){return t instanceof ut?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new ut(t.message,S.Canceled):new ut(t.message,n,void 0,void 0,t):new ut(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===ut.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){const n=t.kind==="message"?{getMessage:r=>r===t.typeName?t:void 0}:t,o=[];for(const r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(de(r.desc,r.value));continue}const a=n.getMessage(r.type);if(a)try{o.push(Ht(a,r.value))}catch{}}return o}};function qu(e,t){return e.length?`[${Za(t)}] ${e}`:`[${Za(t)}]`}function em(e,t,n){try{const o=ko(e);return t?Ht(t,o,n):o}catch(o){throw C.from(o,S.DataLoss)}}function tm(e,t){const n={};for(const o of e.methods){const r=t(o);r!=null&&(n[o.localName]=r)}return n}var cn=4294967295,Tn=cn,nm=1024;function om(e,t,n){if(t!=null||(t=Tn),e!=null||(e=cn),n!=null||(n=nm),t<1||t>Tn)throw new C(`writeMaxBytes ${t} must be >= 1 and <= ${Tn}`,S.Internal);if(e<1||e>cn)throw new C(`readMaxBytes ${e} must be >= 1 and <= ${cn}`,S.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function rm(e,t){if(t>e)throw new C(`message size ${t} is larger than configured writeMaxBytes ${e}`,S.ResourceExhausted)}function Es(e,t,n=!1){if(t>e){let o=`message size is larger than configured readMaxBytes ${e}`;throw n&&(o=`message size ${t} is larger than configured readMaxBytes ${e}`),new C(o,S.ResourceExhausted)}}function am(e){return new im(e)}var im=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,t)=>e+t.byteLength,0)}decode(e){this.buf.push(e);const t=[];for(;;){let n=this.pop();if(!n)break;t.push(n)}return t}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){const e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;const e=this.headerView.getUint8(0),t=this.headerView.getUint32(1);return Es(this.readMaxBytes,t,!0),{flags:e,data:new Uint8Array(t)}}cons(e){const t=e.byteLength;if(this.byteLength<t)return!1;let n=0;for(;n<t;){const o=this.buf.shift();o.byteLength>t-n?(e.set(o.subarray(0,t-n),n),this.buf.unshift(o.subarray(t-n)),n+=t-n):(e.set(o,n),n+=o.byteLength)}return!0}};async function sm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1)throw new C("invalid envelope, already compressed",S.Internal);return t&&r.byteLength>=n&&(r=await t.compress(r),o=o|1),{data:r,flags:o}}async function lm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1){if(!t)throw new C("received compressed envelope, but do not know how to decompress",S.Internal);r=await t.decompress(r,n),o=o^1}return{data:r,flags:o}}function cm(e,t){const n=new Uint8Array(t.length+5);n.set(t,5);const o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,e),o.setUint32(1,t.length),n}var Fe=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ve=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof z?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}},dm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:z(e[r](i)),done:!1}:a?a(i):i}:a}};function um(e,...t){const[n,o,r]=mm(t);let a=e,i;return r?.propagateDownStreamError===!0&&(a=i=Ss(a)),a=dn(a,...n,{propagateDownStreamError:!1}),o(a).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function mm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function dn(e,...t){return Ve(this,arguments,function*(){var o;const[r,a]=hm(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};a?.propagateDownStreamError===!0&&(l=i=Ss(l));for(const u of r)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield z(c.next());if(u.done===!0)break;if(!i){yield yield z(u.value);continue}try{yield yield z(u.value)}catch(h){throw yield z(i.abort(h)),h}}}finally{a?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function hm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ra(e,t,n){return t===void 0||n===void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;let f,p=0;h.end?(p=p|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield z({flags:p,data:f})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Ea(e,t,n){return n&&t!==void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;(h&t)===t?yield yield z({value:n.parse(f),end:!0}):yield yield z({value:e.parse(f),end:!1})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;if(t!==void 0&&(h&t)===t){if(n===null)throw new C("unexpected end flag",S.InvalidArgument);continue}yield yield z(e.parse(f))}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(sm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Va(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(lm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Ga(){return function(e){return Ve(this,arguments,function*(){var t,n,o,r;try{for(var a=!0,i=Fe(e),s;s=yield z(i.next()),t=s.done,!t;a=!0){r=s.value,a=!1;const{flags:l,data:c}=r;yield yield z(cm(l,c))}}catch(l){n={error:l}}finally{try{!a&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Na(e){return function(t){return Ve(this,arguments,function*(){var n,o,r,a;const i=am(e);try{for(var s=!0,l=Fe(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){a=c.value,s=!1;const u=a;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(r=l.return)&&(yield z(r.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new C("protocol error: incomplete envelope",S.InvalidArgument)})}}function Ss(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,r,a={next(){return r=n.next().finally(()=>{r=void 0}),r},throw(s){return n.throw(s)}};t.return!==void 0&&(a=Object.assign(Object.assign({},a),{return(s){return n.return(s)}}));let i=!1;return{abort(s){if(o)return o.state;const l=()=>n.throw(s).then(c=>c.done===!0?"completed":"caught",()=>"rethrown");return r?(o={reason:s,state:r.then(l,l)},o.state):(o={reason:s,state:l()},o.state)},[Symbol.asyncIterator](){if(i)throw new Error("AsyncIterable cannot be re-used");return i=!0,a}}}function Vs(e){return Ve(this,arguments,function*(){yield z(yield*dm(Fe(e)))})}var Gs=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Et=function(e){return this instanceof Et?(this.v=e,this):new Et(e)},bm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:Et(e[r](i)),done:!1}:a?a(i):i}:a}},gm=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof Et?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function ve(e,t){return tm(e,n=>{switch(n.methodKind){case"unary":return pm(t,n);case"server_streaming":return Am(t,n);case"client_streaming":return fm(t,n);case"bidi_streaming":return Zm(t,n);default:return null}})}function pm(e,t){return async(n,o)=>{var r,a;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,i.header),(a=o?.onTrailer)===null||a===void 0||a.call(o,i.trailer),i.message}}function Am(e,t){return(n,o)=>Ns(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,Vs([n]),o?.contextValues),o)}function fm(e,t){return async(n,o)=>{var r,a,i,s,l,c;const u=await e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,u.header);let h,f=0;try{for(var p=!0,R=Gs(u.message),V;V=await R.next(),r=V.done,!r;p=!0)s=V.value,p=!1,h=s,f++}catch(X){a={error:X}}finally{try{!p&&!r&&(i=R.return)&&await i.call(R)}finally{if(a)throw a.error}}if(!h)throw new C("protocol error: missing response message",S.Unimplemented);if(f>1)throw new C("protocol error: received extra messages for client streaming method",S.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function Zm(e,t){return(n,o)=>Ns(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function Ns(e,t){const n=(function(){return gm(this,arguments,function*(){var o,r;const a=yield Et(e);(o=t?.onHeader)===null||o===void 0||o.call(t,a.header),yield Et(yield*bm(Gs(a.message))),(r=t?.onTrailer)===null||r===void 0||r.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Rm(...e){const t=new AbortController,n=e.filter(r=>r!==void 0).concat(t.signal);for(const r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Lt(this));for(const r of n)r.removeEventListener("abort",o)}return t}function Em(e){const t=new AbortController,n=()=>{t.abort(new C("the operation timed out",S.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function Lt(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;const t=new Error("This operation was aborted");return t.name="AbortError",t}function va(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function Sm(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
52
+ `);for(const o of n){if(o==="")continue;const r=o.indexOf(":");if(r>0){const a=o.substring(0,r).trim(),i=o.substring(r+1).trim();t.append(a,i)}}return t}function Vm(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
53
+ `)}),new TextEncoder().encode(t.join(""))}function Wa(){return{serialize:Vm,parse:Sm}}var Gm="Content-Type",vs="Grpc-Encoding",Nm="Grpc-Accept-Encoding",vm="Grpc-Timeout",Ws="Grpc-Status";var Wm="Grpc-Status-Details-Bin",ym="User-Agent",Im="X-User-Agent",Xm="X-Grpc-Web",Ym="application/grpc-web+proto",Bm="application/grpc-web+json";function We(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Cm=oe("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[Pi]),wm=v(Cm,0);function ys(e){var t;const n=e.get(Wm);if(n!=null){const r=em(n,wm);if(r.code==0)return;const a=new C(r.message,r.code,e);return a.details=r.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),a.isWireError=!0,a}const o=e.get(Ws);if(o!=null){if(o==="0")return;const r=parseInt(o,10);let a;return r in S?a=new C(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),r,e):a=new C(`invalid grpc-status: ${o}`,S.Internal,e),a.isWireError=!0,a}}function ya(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function Is(e,t){return de(e,t)}function Fm(e,t){function n(o){return o.done===!0?o:{done:o.done,value:Is(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=a=>o.throw(a).then(n)),o.return!==void 0&&(r.return=a=>o.return(a).then(n)),r}}}function Xs(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function km(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Ia(e,t,n,o){const r=Pt(Xa(e.input,t),o),a=Pt(Ya(e.input,n),o),i=Pt(Xa(e.output,t),o),s=Pt(Ya(e.output,n),o);return{getI(l){return l?r:a},getO(l){return l?i:s}}}function Pt(e,t){return{serialize(n){const o=e.serialize(n);return rm(t.writeMaxBytes,o.byteLength),o},parse(n){return Es(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Xa(e,t){return{parse(n){try{return Ht(e,n,t)}catch(o){throw new C(`parse binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}},serialize(n){try{return qi(e,n,t)}catch(o){throw new C(`serialize binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}}}}function Ya(e,t){var n,o;const r=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=km(t);return{parse(s){try{return ku(e,a.decode(s),i)}catch(l){throw C.from(l,S.InvalidArgument)}},serialize(s){try{const l=Ru(e,s,i);return r.encode(l)}catch(l){throw C.from(l,S.Internal)}}}}function Um(e){const t=Xs(e.next,e.interceptors),[n,o,r]=Ys(e);return t(Object.assign(Object.assign({},e.req),{message:Is(e.req.method.input,e.req.message),signal:n})).then(a=>(r(),a),o)}function Jm(e){const t=Xs(e.next,e.interceptors),[n,o,r]=Ys(e),a=Object.assign(Object.assign({},e.req),{message:Fm(e.req.method.input,e.req.message),signal:n});let i=!1;return n.addEventListener("abort",function(){var s,l;const c=e.req.message[Symbol.asyncIterator]();i||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),t(a).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){const l=s.message[Symbol.asyncIterator]();return{next(){return!i&&n.aborted?o(Lt(n)):l.next().then(c=>(c.done==!0&&(i=!0,r()),c),o)}}}}}),o)}function Ys(e){const{signal:t,cleanup:n}=Em(e.timeoutMs),o=Rm(e.signal,t);return[o.signal,function(a){const i=o.signal.aborted?C.from(Lt(o.signal),S.Canceled):C.from(a);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var xm=oe("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Je]),Km=v(xm,0),$={REFUSED:1,USAGE:2,SAGA_RESOURCE_CONFLICT:4,HTTP_BAD_REQUEST:20,HTTP_UNAUTHORIZED:21,HTTP_FORBIDDEN:23,HTTP_NOT_FOUND:24,HTTP_CONFLICT:29,OPERATION_FAILED:30,WAIT_TIMEOUT:31,LOCK_LOST:32,QUOTA_UNKNOWN:34,HTTP_CLIENT_ERROR:40,HTTP_SERVER_ERROR:50,TRANSPORT:60,UNKNOWN:70},N=class extends Error{constructor(e){super(e),this.name="CliUsageError"}},U=class extends Error{constructor(e){super(e),this.name="CliOperationFailedError"}},zm=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},T=class extends Error{reasons;details;reported;constructor(e,t={}){super(e.join("; ")),this.name="CliSagaRefusalError",this.reasons=e,this.details=t.details??{},this.reported=t.reported??!1}},mo=class extends Error{constructor(e){super(e),this.name="CliQuotaUnknownError"}},Do=class extends Error{constructor(e){super(e),this.name="CliWaitTimeoutError"}},et=class extends Error{errorCode;reported;constructor(e,t={}){super(e),this.name="CliLockLostError",this.errorCode=t.errorCode,this.reported=t.reported??!1}},ye=class extends Error{status;details;constructor(e,t,n){super(t),this.name="CliHttpError",this.status=e,this.details=n}};function _o(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function St(e,t){const n=_o(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function $o(e){return e.includes("fetch failed")||e.includes("ECONNREFUSED")||e.includes("ENOTFOUND")||e.includes("ECONNRESET")||e.includes("ETIMEDOUT")||e.includes("EHOSTUNREACH")||e.includes("EAI_AGAIN")||e.includes("Failed to parse URL")||e.includes("Invalid URL")}function Ba(e){switch(e){case 400:return $.HTTP_BAD_REQUEST;case 401:return $.HTTP_UNAUTHORIZED;case 403:return $.HTTP_FORBIDDEN;case 404:return $.HTTP_NOT_FOUND;case 409:return $.HTTP_CONFLICT;default:return e&&e>=400&&e<500?$.HTTP_CLIENT_ERROR:e&&e>=500?$.HTTP_SERVER_ERROR:$.UNKNOWN}}var Lm={[S.InvalidArgument]:400,[S.OutOfRange]:400,[S.Unauthenticated]:401,[S.PermissionDenied]:403,[S.NotFound]:404,[S.AlreadyExists]:409,[S.FailedPrecondition]:409,[S.Aborted]:409,[S.Unimplemented]:501,[S.Internal]:500,[S.Unknown]:500,[S.DataLoss]:500,[S.Unavailable]:503,[S.DeadlineExceeded]:504},jm=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function Tm(e){return e.code===S.ResourceExhausted?jm.test(e.rawMessage)?413:429:Lm[e.code]??500}function Hm(e){return e.code!==S.Unavailable&&e.code!==S.Unknown&&e.code!==S.Internal&&e.code!==S.Aborted?!1:e.cause instanceof Error||$o(e.rawMessage)}function vn(e){if(!(e instanceof C)||e.code===S.Canceled||Hm(e))return;const[t]=e.findDetails(Km),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},r=e.rawMessage.trim()||`The backend rejected the request (${S[e.code]}).`;return{status:Tm(e),message:r,code:n,body:{error:r,...n?{code:n}:{},...o}}}function Bs(e){if(!(e instanceof C)||e.code!==S.FailedPrecondition)return;const t=vn(e);return new et(t?.message??e.rawMessage,{errorCode:t?.code})}function Cs(e){return e instanceof C?e.code===S.Unavailable||e.code===S.DeadlineExceeded||e.code!==S.Canceled&&vn(e)===void 0:e instanceof Error&&$o(e.message)}function Ca(e,t){const n=t.baseUrl??"the configured backend";return{exitCode:$.TRANSPORT,message:/Failed to parse URL|Invalid URL/i.test(e)?`Invalid HagiCode backend base URL: ${n}`:`Cannot reach HagiCode backend at ${n}. Check that the backend is running and the base URL is correct.`}}function ws(e,t={}){if(e instanceof N)return{exitCode:$.USAGE,message:e.message};if(e instanceof U)return{exitCode:$.OPERATION_FAILED,message:e.message};if(e instanceof zm)return{exitCode:$.SAGA_RESOURCE_CONFLICT,message:e.message};if(e instanceof T)return{exitCode:$.REFUSED,message:[e.reasons.length>1?"Refused:":"Refused.",...e.reasons.map(n=>` - ${n}`)].join(`
54
+ `),details:{errors:e.reasons}};if(e instanceof mo)return{exitCode:$.QUOTA_UNKNOWN,message:e.message};if(e instanceof Do)return{exitCode:$.WAIT_TIMEOUT,message:e.message};if(e instanceof et)return{exitCode:$.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof ye)return{exitCode:Ba(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof C){const n=vn(e);if(n){const o=Mm(n.body);return{exitCode:Ba(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
55
+ `):n.message,errorCode:St(n.body,"errorCode")??n.code,correlationId:St(n.body,"correlationId"),details:n.body}}return e.code===S.Canceled?{exitCode:$.UNKNOWN,message:"The request was cancelled."}:Ca(e.rawMessage,t)}return e instanceof Error?$o(e.message)?Ca(e.message,t):{exitCode:$.UNKNOWN,message:e.message}:{exitCode:$.UNKNOWN,message:String(e)}}function Qm(e){const t=_o(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function Mm(e){const t=_o(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function Fs(e,t={}){if(t.json)return`${JSON.stringify({error:{message:e.message,status:e.status,exitCode:e.exitCode,errorCode:e.errorCode,correlationId:e.correlationId,details:e.details}},null,2)}
56
+ `;const n=[e.status?`status=${e.status}`:void 0,e.errorCode?`errorCode=${e.errorCode}`:void 0,e.correlationId?`correlationId=${e.correlationId}`:void 0].filter(Boolean),o=n.length>0?` (${n.join(", ")})`:"";return[`${e.message}${o}`,...Qm(e.details)].join(`
57
+ `)+`
58
+ `}var Om="--base-url",Dm="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Po(e=process.env){return(0,E.join)(Ee(e.XDG_CONFIG_HOME)??(0,E.join)((0,tc.homedir)(),".config"),"hagi","config.json")}function ks(e){const t=Po(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${r instanceof Error?r.message:String(r)}`)}let o;try{o=JSON.parse(n)}catch{throw new N(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function _m(e=process.env){const t=ks(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function $m(e=process.env){const t=ks(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Po(e)} has a "steer" value that is not true or false.`)}function Pm(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??_m(t);if(!n)throw new N(`No backend base URL is configured. Set ${Om} <url>, the ${Dm} environment variable, or "baseUrl" in ${Po(t)}.`);return{baseUrl:n,token:Ee(e.token)??Ee(t.HAGI_API_TOKEN),lang:Ee(e.lang)??Ee(t.HAGI_API_LANG)}}var jt;function qm(e={},t=process.env){return jt=Pm(e,t),jt}function Us(){if(!jt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return jt}function eh(){return Ee(jt?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,as]),th=v(se,1),nh=v(se,5),oh=v(se,15),rh=v(se,17),ah=v(se,19),ih=v(se,21),sh=v(se,23),lh=v(se,25),ch=v(se,41),dh=v(se,50),uh=v(se,51),mh=v(se,69),hh=v(se,71),bh=v(se,85),gh=We(se,0),xe=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),ph=v(xe,1),Ah=v(xe,3),fh=v(xe,5),Zh=v(xe,7),Rh=v(xe,9),Eh=v(xe,11),Sh=v(xe,14),Vh=v(xe,15),Gh=We(xe,0),Qe=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Je,Ne]),Nh=v(Qe,1),vh=v(Qe,3),Wh=v(Qe,9),yh=v(Qe,11),Ih=v(Qe,19),Xh=v(Qe,21),wa=v(Qe,39),Yh=We(Qe,0),Bh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),qo=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Je,Bh]),Ch=v(qo,5),wh=v(qo,7),Fh=We(qo,0),re=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),kh=v(re,1),Uh=v(re,5),Jh=v(re,7),xh=v(re,9),Kh=v(re,11),zh=v(re,13),Lh=v(re,19),jh=v(re,21),Th=v(re,23),Hh=v(re,25),Qh=v(re,27),Mh=v(re,37),Oh=v(re,39),Dh=v(re,49),_h=v(re,50),$h=v(re,52),Ph=We(re,0),er=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Je,Ne,as]),qh=v(er,1),eb=v(er,3),tb=We(er,0),le=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8itQEKHUFkZFNlc3Npb25Vc2VyTWV0YWRhdGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSUAoHZW50cmllcxgCIAMoCzI/LmhhZ2ljb2RlLnNlc3Npb24udjEuQWRkU2Vzc2lvblVzZXJNZXRhZGF0YVJlcXVlc3QuRW50cmllc0VudHJ5Gi4KDEVudHJpZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlkKHkFkZFNlc3Npb25Vc2VyTWV0YWRhdGFSZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLUAgoTTGlzdFNlc3Npb25zUmVxdWVzdBIRCgR0eXBlGAEgASgJSACIAQESGAoLYWN0aXZlX29ubHkYAiABKAhIAYgBARIdChBpbmNsdWRlX2FyY2hpdmVkGAMgASgISAKIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgDiAEBEhMKC3Byb2plY3RfaWRzGAUgAygJElEKDXVzZXJfbWV0YWRhdGEYBiADKAsyOi5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1JlcXVlc3QuVXNlck1ldGFkYXRhRW50cnkaMwoRVXNlck1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy7gkKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEoEBChZBZGRTZXNzaW9uVXNlck1ldGFkYXRhEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5BZGRTZXNzaW9uVXNlck1ldGFkYXRhUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQWRkU2Vzc2lvblVzZXJNZXRhZGF0YVJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Je,Ne]),nb=v(le,1),ob=v(le,3),rb=v(le,5),ab=v(le,7),ib=v(le,9),sb=v(le,11),lb=v(le,13),cb=v(le,15),db=v(le,19),ub=v(le,32),mb=v(le,38),hb=v(le,39),bb=v(le,43),gb=We(le,0),Me=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Je,Ne,le]),pb=v(Me,1),Ab=v(Me,11),fb=v(Me,15),Zb=v(Me,19),Rb=v(Me,34),Eb=v(Me,38),Sb=v(Me,43),Vb=We(Me,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,le]),Gb=v(Ie,15),Nb=v(Ie,17),vb=v(Ie,19),Wb=v(Ie,21),yb=v(Ie,23),Ib=v(Ie,36),Xb=v(Ie,38),Yb=v(Ie,39),Bb=v(Ie,40),Cb=We(Ie,0),wb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),Fb=We(wb,0),Hn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),Js=e=>e.typeName.startsWith("google.protobuf.");function Qn(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function un(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||Js(e))return t;const n=t;for(const o of e.fields){const r=n[o.jsonName];r!==void 0&&(n[o.jsonName]=kb(o,r))}return n}function kb(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Qn(t):t;case"message":return un(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Qn):t:e.listKind==="message"?t.map(n=>un(e.message,n)):t:t;case"map":{if(t===null||typeof t!="object"||Array.isArray(t))return t;const n=t;for(const o of Object.keys(n))e.mapKind==="scalar"&&Hn.has(e.scalar)?n[o]=Qn(n[o]):e.mapKind==="message"&&(n[o]=un(e.message,n[o]));return n}default:return t}}function Ub(e,t){return un(e,cs(e,t,{alwaysEmitImplicit:!0}))}function Jb(e,t){return Ub(e,t).result}function mn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Js(e)||n>8)return t;const o=t;for(const r of e.fields){const a=o[r.jsonName];if(!(a===null||typeof a!="object")){if(r.fieldKind==="message")mn(r.message,a,n+1);else if(r.fieldKind==="list"&&r.listKind==="message"&&Array.isArray(a))a.forEach(i=>mn(r.message,i,n+1));else if(r.fieldKind==="map"&&!Array.isArray(a)){const i=a;for(const s of Object.keys(i)){const l=i[s];r.mapKind==="scalar"&&r.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):r.mapKind==="message"&&mn(r.message,l,n+1)}}}}return t}function D(e,t){return gs(e,t===void 0?t:mn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Fa(e,t){const n=ys(e);if(n)throw t.forEach((o,r)=>{n.metadata.append(r,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new C("protocol error: missing status",S.Internal)}function xb(e,t,n,o){var r,a;const i=new Headers(n??{});i.set(Gm,e?Ym:Bm),i.set(Xm,"1");const s=(a=(r=i.get("User-Agent"))!==null&&r!==void 0?r:i.get("X-User-Agent"))!==null&&a!==void 0?a:"connect-es/2.2.0";return i.set(Im,s),o&&i.set(ym,s),t!==void 0&&i.set(vm,`${t}m`),i}function ka(e,t,n,o,r,a){const i=xb(e,t,n,a);return r!=null&&i.set(vs,r.name),o.length>0&&i.set(Nm,o.map(s=>s.name).join(",")),i}function Kb(e){switch(e){case 400:return S.Internal;case 401:return S.Unauthenticated;case 403:return S.PermissionDenied;case 404:return S.Unimplemented;case 429:return S.Unavailable;case 502:return S.Unavailable;case 503:return S.Unavailable;case 504:return S.Unavailable;default:return S.Unknown}}function zb(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(Ws),headerError:ys(t)};throw new C(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),Kb(e),t)}function Ua(e,t,n){const{foundStatus:o,headerError:r}=zb(t,n);let a;const i=n.get(vs);if(i!==null&&i.toLowerCase()!=="identity"&&(a=e.find(s=>s.name===i),!a))throw new C(`unsupported response encoding "${i}"`,S.Internal,n);return{foundStatus:o,compression:a,headerError:r}}var Ja=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Lb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof ze?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function jb(e){return{async unary(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await Um({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(Vs([l.message]),Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ua(e.acceptCompression,c.status,c.header),{trailer:f,message:p}=await um(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),async R=>{var V,X,J,d;let m,A;try{for(var g=!0,Z=Ja(R),G;G=await Z.next(),V=G.done,!V;g=!0){d=G.value,g=!1;const B=d;if(B.end){if(A!==void 0)throw new C("protocol error: received extra trailer",S.Unimplemented);A=B.value}else{if(m!==void 0)throw new C("protocol error: received extra output message for unary method",S.Unimplemented);m=B.value}}}catch(B){X={error:B}}finally{try{!g&&!V&&(J=Z.return)&&await J.call(Z)}finally{if(X)throw X.error}}return{trailer:A,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new C("protocol error: missing trailer",c.header.has("Grpc-Status")?S.Unimplemented:S.Unknown);if(Fa(f,c.header),p===void 0)throw new C("protocol error: missing output message for unary method",f.has("Grpc-Status")?S.Unimplemented:S.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:p,trailer:f}}})},async stream(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Jm({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(l.message,Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Ua(e.acceptCompression,c.status,c.header);if(f)throw f;const p=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:dn(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),function(R){return Lb(this,arguments,function*(){var V,X,J,d;if(h){if((yield ze(R[Symbol.asyncIterator]().next())).done!==!0)throw new C("protocol error: extra data for trailers-only",S.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var A=!0,g=Ja(R),Z;Z=yield ze(g.next()),V=Z.done,!V;A=!0){d=Z.value,A=!1;const G=d;if(G.end){if(m)throw new C("protocol error: received extra trailer",S.InvalidArgument);m=!0,Fa(G.value,c.header),G.value.forEach((B,K)=>p.trailer.set(K,B));continue}if(m)throw new C("protocol error: received extra message after trailer",S.InvalidArgument);yield yield ze(G.value)}}catch(G){X={error:G}}finally{try{!A&&!V&&(J=g.return)&&(yield ze(J.call(g)))}finally{if(X)throw X.error}}if(!m)throw new C("protocol error: missing trailer",S.Internal)})},{propagateDownStreamError:!0})});return p}})}}}function Wn(e){let t=S.Internal;const n=tr(e).map(yn);n.some(r=>r.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(r=>r.code=="ERR_STREAM_DESTROYED"||r.code=="ERR_HTTP2_INVALID_STREAM"||r.code=="ECONNRESET")?t=S.Aborted:n.some(r=>r.code=="ETIMEDOUT"||r.code=="ENOTFOUND"||r.code=="EAI_AGAIN"||r.code=="ECONNREFUSED")&&(t=S.Unavailable);const o=C.from(e,t);return o!==e&&(o.cause=e),o}function tr(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function yn(e){const t={};return e instanceof Error&&("code"in e&&typeof e.code=="string"&&(t.code=e.code),"syscall"in e&&typeof e.syscall=="string"&&(t.syscall=e.syscall)),t}function Tb(e){switch(e){case P.PROTOCOL_ERROR:case P.INTERNAL_ERROR:case P.FLOW_CONTROL_ERROR:case P.SETTINGS_TIMEOUT:case P.FRAME_SIZE_ERROR:case P.COMPRESSION_ERROR:case P.CONNECT_ERROR:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Internal);case P.REFUSED_STREAM:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Unavailable);case P.CANCEL:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Canceled);case P.ENHANCE_YOUR_CALM:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.ResourceExhausted);case P.INADEQUATE_SECURITY:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);case P.HTTP_1_1_REQUIRED:return new C(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);default:break}}var P;(function(e){e[e.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",e[e.INTERNAL_ERROR=2]="INTERNAL_ERROR",e[e.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",e[e.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",e[e.STREAM_CLOSED=5]="STREAM_CLOSED",e[e.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",e[e.REFUSED_STREAM=7]="REFUSED_STREAM",e[e.CANCEL=8]="CANCEL",e[e.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",e[e.CONNECT_ERROR=10]="CONNECT_ERROR",e[e.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",e[e.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",e[e.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})(P||(P={}));var Hb=(0,Zn.promisify)(pt.gzip),Qb=(0,Zn.promisify)(pt.gunzip),Mb=(0,Zn.promisify)(pt.brotliCompress),Ob=(0,Zn.promisify)(pt.brotliDecompress),Db={name:"gzip",compress(e){return gn(Hb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(xs(Qb(e,{maxOutputLength:t}),t))}},_b={name:"br",compress(e){return gn(Mb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(xs(Ob(e,{maxOutputLength:t}),t))}};function gn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function xs(e,t){return e.catch(n=>{var o;const r=yn(n);let a=S.Internal,i="decompression failed";switch(r.code){case"ERR_BUFFER_TOO_LARGE":a=S.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":a=S.InvalidArgument;break;default:!((o=r.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(a=S.InvalidArgument);break}return Promise.reject(new C(i,a,void 0,void 0,n))})}function In(e){const t=new Headers;for(const[n,o]of Object.entries(e))if(!n.startsWith(":")&&o!==void 0)if(typeof o=="string")t.append(n,o);else if(typeof o=="number")t.append(n,String(o));else for(const r of o)t.append(n,r);return t}function Ks(e,t){if(e===void 0&&t===void 0)return;const n=Object.create(null);if(t!==void 0)if(Array.isArray(t))for(let o=0;o+1<t.length;o+=2){const r=t[o],a=t[o+1];Array.isArray(n[r])?n[r].push(a):typeof n[r]=="string"?n[r]=[n[r],a]:n[r]=a}else for(const[o,r]of Object.entries(t))Array.isArray(r)?n[o]=r.concat():r!==void 0&&(n[o]=r);if(e!==void 0)if(Array.isArray(e))for(const[o,r]of e)Mn(n,o,r);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,r)=>{Mn(n,r,o)});else for(const[o,r]of Object.entries(e))Mn(n,o,r);return n}function Mn(e,t,n){t=t.toLowerCase();const o=e[t];Array.isArray(o)?o.push(n):o===void 0?e[t]=n:e[t]=[o.toString(),n]}var zs=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(e,t,n){var o,r,a,i;this.s=ho(),this.shuttingDown=[],this.authority=new URL(e).origin,this.http2SessionOptions=n,this.options={pingIntervalMs:(o=t?.pingIntervalMs)!==null&&o!==void 0?o:Number.POSITIVE_INFINITY,pingTimeoutMs:(r=t?.pingTimeoutMs)!==null&&r!==void 0?r:1e3*15,pingIdleConnection:(a=t?.pingIdleConnection)!==null&&a!==void 0?a:!1,idleConnectionTimeoutMs:(i=t?.idleConnectionTimeoutMs)!==null&&i!==void 0?i:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(e,t,n,o){for(;;){const r=await this.gotoReady();try{const a=r.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return r.registerRequest(a),a}catch(a){if(r.conn.closed||r.conn.destroyed)continue;throw a}}}notifyResponseByteRead(e){this.s.t=="ready"&&this.s.responseByteRead(e);for(const t of this.shuttingDown)t.responseByteRead(e)}abort(e){var t,n,o;const r=e??new C("connection aborted",S.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,r);for(const a of this.shuttingDown)(o=a.abort)===null||o===void 0||o.call(a,r);this.setState(qt(r))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(On(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(On(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(e){var t,n;if((n=(t=this.s).onExitState)===null||n===void 0||n.call(t),this.s.t=="ready"&&this.s.isShuttingDown()){const o=this.s;this.shuttingDown.push(o),o.onClose=o.onError=()=>{const r=this.shuttingDown.indexOf(o);r!==-1&&this.shuttingDown.splice(r,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(Pb(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(ho()),e.onError=o=>this.setState(qt(o));break;case"closed":break;case"error":break}this.s=e}verify(e){return this.verifying!==void 0?this.verifying:(this.verifying=e.verify().then(t=>{t||this.setState(On(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function ho(){return{t:"closed"}}function $b(e){return{t:"error",reason:e}}function qt(e){return e instanceof C&&C.from(e).code==S.Canceled?ho():$b(e)}function On(e,t){let n,o;const r=new Promise((c,u)=>{n=c,o=u}),a=Re.connect(e,t);a.on("connect",i),a.on("error",s);function i(){n?.(a),l()}function s(c){o?.(Wn(c)),l()}function l(){a.off("connect",i),a.off("error",s)}return{t:"connecting",conn:r,abort(c){a.destroyed||a.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function Pb(e,t){qb(e),e.unref();let n=Date.now(),o=0,r,a,i=!1,s=!1,l;V();const c={t:"ready",conn:e,streamCount(){return o},requiresVerify(){return Date.now()-n>t.pingIntervalMs},isShuttingDown(){return i},onClose:void 0,onError:void 0,registerRequest(g){o++,o==1&&(e.ref(),u(),R()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),V())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const Z=()=>{g(!1)};p(()=>{o==0&&e.unref(),e.off("error",Z),e.off("close",Z),g(!0)}),e.once("error",Z),e.once("close",Z)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,Re.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(A(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(r=Dn(f,t.pingIntervalMs))}function h(){clearTimeout(r),clearTimeout(a)}function f(){p(u)}function p(g){clearTimeout(a),a=Dn(()=>{e.destroy(new C("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((Z,G)=>{if(clearTimeout(a),Z===null){if(G>t.pingTimeoutMs){e.destroy(new C("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function R(){clearTimeout(l)}function V(){l=Dn(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function J(g,Z,G){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new C("received GOAWAY without any open streams",S.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const B=Buffer.from("too_many_pings","ascii");G?.equals(B)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var g;A(),(g=c.onClose)===null||g===void 0||g.call(c)}function m(g){var Z,G;if(A(),s){const B=new C(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${Re.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,S.ResourceExhausted);(Z=c.onError)===null||Z===void 0||Z.call(c,B)}else(G=c.onError)===null||G===void 0||G.call(c,Wn(g))}function A(){h(),R(),e.off("error",m),e.off("close",d),e.off("goaway",J)}return e.on("error",m),e.on("close",d),e.on("goaway",J),c}function Dn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function qb(e){if(e.connecting)throw new C("expected open session, but it is connecting",S.Internal);if(e.destroyed)throw new C("expected open session, but it is destroyed",S.Internal);if(e.closed)throw new C("expected open session, but it is closed",S.Internal)}function xa(e){var t;return e.httpVersion=="1.1"?eg(e.nodeOptions):tg((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new zs(n)))}function eg(e){return async function(n){const o=js(n.signal);return new Promise((r,a)=>{o.onError(i=>{a(i)}),ng(o,n.url,Object.assign(Object.assign({},e),{headers:Ks(n.header,e?.headers),method:n.method}),i=>{Ls(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;r({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:In(s.headers),body:og(o,s,c),trailer:c})})})})}}function tg(e){return function(n){const o=js(n.signal),r=e(n.url);return new Promise((a,i)=>{o.onError(s=>{i(s)}),rg(o,r,n.url,n.method,Ks(n.header),{},s=>{Ls(n,s,o),s.on("response",l=>{var c;a({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:In(l),body:ig(o,s,r),trailer:ag(s)})})})})}}function ng(e,t,n,o){let r;new URL(t).protocol.startsWith("https")?r=to.request(t,n):r=eo.request(t,n),e.onError(a=>r.destroy(a)),r.flushHeaders(),r.on("error",e.error),r.on("socket",function(i){function s(){i.off("connect",s),o(r)}i.readyState==="open"?o(r):i.on("connect",s)})}function og(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&(In(t.trailers).forEach((a,i)=>{n.set(i,a)}),e.close()),r},throw(r){throw e.error(r),r}}}}}function rg(e,t,n,o,r,a,i){const s=new URL(n);if(s.origin!==t.authority){const l=`cannot make a request to ${s.origin}: the http2 session is connected to ${t.authority}`;e.error(new C(l,S.Internal));return}t.request(o,s.pathname+s.search,r,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==S.Canceled?P.CANCEL:P.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&tr(u).map(yn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Tb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function ag(e){const t=new Headers;return e.on("trailers",n=>{In(n).forEach((o,r)=>{t.set(r,o)})}),t}function ig(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&e.close(),n?.notifyResponseByteRead(t),r},throw(r){throw e.error(r),r}}}}}async function Ls(e,t,n){if(e.body===void 0){await new Promise(r=>t.end(r));return}const o=e.body[Symbol.asyncIterator]();return new Promise(r=>{a();function a(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(r);return}t.write(i.value,"binary",s=>{if(s==null){a();return}o.throw!==void 0&&o.throw(Wn(s)).catch(()=>{}),!(t.writableEnded&&tr(s).map(yn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function js(e){let t,n=!1,o,r=[];const a={error(l){if(!n){n=!0,o=l instanceof C?l:Wn(l),t?.(o);for(const c of r)c(o);i()}},close(){n||(n=!0,t&&t(new C("sentinel completed early",S.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):r.push(l)},race(l){let c;const u=new Promise((h,f)=>{c=h,t=f});return l.then(h=>{c?.(h)},h=>{t?.(h)}),n&&t?.(o??new C("sentinel completed early",S.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),r=[],t=void 0}function s(){a.error(Lt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&a.error(Lt(e))),a}function sg(e){var t,n,o,r;let a;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new zs(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),a=xa({httpVersion:"2",sessionProvider:()=>i})}else a=xa({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:a,useBinaryFormat:(t=e.useBinaryFormat)!==null&&t!==void 0?t:!0,interceptors:(n=e.interceptors)!==null&&n!==void 0?n:[],sendCompression:(o=e.sendCompression)!==null&&o!==void 0?o:null,acceptCompression:(r=e.acceptCompression)!==null&&r!==void 0?r:[Db,_b]}),om(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function lg(e){return jb(sg(e))}function cg(e){return`cli/${e??"unknown"}`}var dg=cg("0.8.0"),ug="/grpc";function mg(e){return`${e.replace(/\/+$/,"")}${ug}`}var hg=e=>async t=>{const{token:n,lang:o}=Us();return t.header.set("X-Hagi-Client",dg),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Xe(){const e=mg(Us().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:lg({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[hg]})}),en.transport}function Le(e){return e?Md(e).toISOString():null}function pn(e){return e.length>0?e:null}function Ka(e,t){const n={earliestAt:Le(e),latestAt:Le(t)};return n.earliestAt||n.latestAt?n:null}function tn(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),maxHoldExpiresAt:Le(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:pn(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:Le(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:Le(e.requisitionedAt)}:null,checkInWindow:Ka(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:Ka(e.turnEarliestAt,e.turnLatestAt)}}function bg(e){return{lockId:e.lockId,holderOwnerId:pn(e.holderOwnerId),holderLabel:pn(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),holdStartedAt:Le(e.holdStartedAt),queueLength:e.queueLength}}function gg(e){return e.locks.map(bg)}var Ze=()=>ve(gh,Xe()),ct=()=>ve(Gh,Xe()),De=()=>ve(Yh,Xe()),za=()=>ve(Fh,Xe()),he=()=>ve(Ph,Xe()),La=()=>ve(tb,Xe()),Be=()=>ve(gb,Xe()),nn=()=>ve(Vb,Xe()),Ct=()=>ve(Cb,Xe()),dt=()=>ve(Fb,Xe());async function F(e,t){return Jb(e,await t)}function pg(){return{listSessions:async e=>F(sb,Be().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>F(rb,Be().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>F(pb,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>F(ob,Be().openSession({body:D(mb,e)})),createChatSession:async e=>F(nb,Be().openChatSession({body:D(ub,e)})),createHagiTaskSession:async e=>F(db,Be().startHagiTaskSession({body:D(bb,e)})),listHagiTaskSchemas:async()=>F(Ch,za().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>F(wh,za().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>F(ab,Be().saveSession({sessionId:e,body:D(hb,t)})),addSessionUserMetadata:async(e,t)=>F(ib,Be().addSessionUserMetadata({sessionId:e,entries:t})),deleteSession:async(e,t)=>F(lb,Be().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>F(fb,nn().postSessionMessage({sessionId:e,body:D(Eb,t)})),steerSession:async(e,t)=>F(Ab,nn().steerSession({sessionId:e,body:D(Rb,t)})),optimizeProposal:async(e,t)=>F(Gb,Ct().optimizeSessionProposal({sessionId:e,body:D(Ib,t)})),generateProposal:async(e,t)=>F(Nb,Ct().generateProposal({sessionId:e,body:D(Xb,t)})),executeProposal:async(e,t)=>F(Wb,Ct().executeProposal({sessionId:e,body:D(Bb,t??{})})),archiveProposal:async(e,t)=>F(vb,Ct().archiveSession({sessionId:e,body:D(Yb,t??{})})),completeProposal:async e=>F(yb,Ct().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>F(Zb,nn().submitSessionAnnotations({sessionId:e,body:D(Sb,t)})),listProjects:async()=>F(qh,La().getAggregatedData({forceRefresh:!1})),getTokenMonitorUsage:async()=>F(eb,La().getTokenMonitorUsage({})),createProject:async e=>F(th,Ze().createProject({body:D(dh,e)})),updateProject:async(e,t)=>F(nh,Ze().updateProject({id:e,body:D(uh,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>F(oh,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>F(lh,Ze().updateMonoSpecsManagement({projectId:e,body:D(hh,t)})),initializeMonoSpecsManagement:async e=>F(sh,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>F(rh,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>F(ch,Ze().validateMonoSpecsConfig({body:D(bh,e)})),cloneMonoSpecsRepositories:async(e,t)=>F(ah,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(mh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>F(ih,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>F(Nh,De().listScheduledPlans({})),getPlan:async e=>F(vh,De().getScheduledPlan({id:e})),createPlan:async e=>F(Wh,De().createScheduledPlan({body:D(wa,e)})),updatePlan:async(e,t)=>F(yh,De().updateScheduledPlan({id:e,body:D(wa,t)})),deletePlan:async e=>{await De().deleteScheduledPlan({id:e})},runPlan:async e=>F(Ih,De().runScheduledPlan({id:e})),startPlan:async e=>F(Xh,De().startScheduledPlan({id:e})),listVaults:async()=>F(ph,ct().listVaults({})),createVault:async e=>F(Ah,ct().createVault({body:D(Sh,e)})),updateVault:async(e,t)=>F(fh,ct().updateVault({id:e,body:D(Vh,t)})),deleteVault:async(e,t)=>F(Zh,ct().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>F(Rh,ct().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>F(Eh,ct().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>F(cb,Be().archiveChatSession({sessionId:e})),listLocalSkills:async()=>F(kh,he().getLocalSkills({})),uninstallLocalSkill:async e=>F(Uh,he().uninstallLocalSkill({body:D(Mh,e)})),setBuiltInSkillAvailability:async e=>F(Jh,he().setBuiltInSkillAvailability({body:D(Oh,e)})),searchSkillGallery:async e=>F(xh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>F(Kh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>F(zh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>F(Qh,he().installSkill({body:D($h,e)})),listTrustedSkillProviders:async()=>F(Lh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>F(jh,he().upsertTrustedSkillProvider({body:D(Dh,e)})),deleteTrustedSkillProvider:async e=>F(Th,he().deleteTrustedSkillProvider({body:D(_h,e)})),resetTrustedSkillProviders:async()=>F(Hh,he().resetTrustedSkillProviders({})),acquireLock:async e=>tn((await dt().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>tn((await dt().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>tn((await dt().renewLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)},{signal:t})).result),releaseLock:async e=>{const t=await dt().releaseLock({lockId:e.lockId,ownerId:e.ownerId,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)});return{lockId:e.lockId,ownerId:e.ownerId,released:t.released,previousStatus:t.previousStatus,holderOwnerId:pn(t.holderOwnerId)}},requisitionLock:async e=>tn((await dt().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>gg(await dt().listLocks({prefix:e}))}}function Ts(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Xn(e){return new Promise(t=>{setTimeout(t,e)})}function k(e){const t=e?.trim();return t||void 0}function x(e,t){const n=k(e);if(!n)throw new N(`${t} is required.`);return n}function bo(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Hs(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:pg(),env:e,io:t,sleep:Xn}}function Ag(e){return e.option("--base-url <url>",'Backend API base URL. Overrides HAGI_API_BASE_URL and the "baseUrl" config file entry.').option("--token <token>","Bearer token for backend API calls. Overrides HAGI_API_TOKEN.").option("--lang <lang>","Accept-Language value for backend API calls. Overrides HAGI_API_LANG.")}function y(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function I(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:qm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var fg=5e3,Zg=1e3,Rg=1e4;function Qs(e){return Math.min(Zg*2**Math.max(0,e-1),Rg)}async function go(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const r=new Promise(a=>{o=a,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),r])}finally{n.removeEventListener("abort",o)}}function Eg(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function Sg(e){const{read:t,clock:n,signal:o}=e,r=n.now(),a=e.timeoutSeconds*1e3;let i=e.initial,s=0,l=0;const c=u=>({outcome:u,status:i,polls:s,elapsedSeconds:Math.round((n.now()-r)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=a-(n.now()-r);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let p;try{p=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Cs(X))throw X;l+=1,await go(n,Math.min(Qs(l),u),o);continue}l=0,s+=1;const R=i;if(i=p,p.status==="Holding")return c("holding");if(p.status!=="Queued")return c("lost");const V=Eg(R,p);if(V&&e.onChange?.(p),!V&&n.now()-f<1e3){const X=p.suggestedPollIntervalMs>0?p.suggestedPollIntervalMs:fg;await go(n,Math.min(X,Math.max(0,a-(n.now()-r))),o)}}}var Vg="HAGI_LOCK_OWNER",Gg="HAGI_SESSION_ID";function gt(e){const t=e?.trim();return t||void 0}function Ng(e,t){const n=gt(e)??gt(t.HAGI_LOCK_OWNER)??gt(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${Vg} (or ${Gg}). The CLI does not invent an owner ID.`);return n}function vg(e){const t=gt(e.lockId),n=gt(e.server),o=gt(e.game);if(t&&(n||o))throw new N("Use either --lock-id or the pair --server and --game, not both.");if(t)return t;if(n&&o)return`${n}/${o}`;throw n||o?new N("--server and --game must be given together."):new N("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function Nt(e){return e.option("--lock-id <id>","Lock to use, for example eu-1/duckov. Alternative to --server and --game.").option("--server <name>","Server name; with --game, the lock is <server>/<game>.").option("--game <name>","Game name; with --server, the lock is <server>/<game>.").option("--owner <id>","Owner ID: your own session ID. Defaults to HAGI_LOCK_OWNER, then HAGI_SESSION_ID.")}function vt(e,t){return{lockId:vg(e),ownerId:Ng(e.owner,t)}}function Vt(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function nr(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new N("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function Wt(e){try{return await e()}catch(t){throw Bs(t)??t}}function Ms(e){return{now:e.now??Date.now,sleep:e.sleep??Xn}}function Wg(e,t){Nt(y(e.command("acquire").description("Take the lock or join its queue. Without --wait: one call, exit 0 for Holding and Queued. With --wait: wait for the turn, exit 0 only when Holding. There is no force option."))).option("--wait","Keep waiting in the queue (long-poll) until you hold the lock. Run it as a continuous watcher.").option("--timeout <seconds>","With --wait: give up after this many seconds (default 900), release the queue entry, exit code 31.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){if(!o.wait&&o.timeout!==void 0)throw new N("--timeout needs --wait.");const r=o.wait?Vt(o.timeout,"--timeout",1)??900:void 0,a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.acquireLock({...s,leaseSeconds:a,label:k(o.label)})),c=V=>i.io.stdout(i.outputJson?W(V):At(V,"acquire"));if(r===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new et(`Owner ${s.ownerId} neither holds nor queues for lock ${s.lockId} (${l.status}).`,{reported:!0});i.outputJson||c(l);const u=new AbortController,h=(t.onInterrupt??Ts)(()=>u.abort());let f;try{f=await Sg({initial:l,read:(V,X)=>i.api.getLockStatus({...s,waitSeconds:V},X),timeoutSeconds:r,clock:Ms(t),signal:u.signal,onChange:V=>{i.outputJson||i.io.stdout(dc(V))}})}finally{h()}let p;(f.outcome==="timeout"||f.outcome==="cancelled")&&(p=await i.api.releaseLock(s).then(()=>!0,()=>!1));const R={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:p};switch(i.outputJson?i.io.stdout(W({...f.status,wait:R})):i.io.stdout(f.outcome==="holding"?At(f.status,"status"):uc(f,p)),f.outcome){case"timeout":throw new Do(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.status.status}.`);case"cancelled":throw new U(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new et(`The queue entry for lock ${s.lockId} was dropped (${f.status.status}).`,{reported:!0});default:}})}var yg=6e4,ja=[30*6e4,5*6e4],Ft="Stop using the resource now.";function Ta(e,t){switch(t.status){case"Requisitioned":{const n=t.requisition;return`Lock ${e} LOST: requisitioned by ${n?.byOwnerId??"another owner"}${n?.at?` at ${n.at}`:""}, reason: ${n?.reason??"not given"}. ${Ft}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${Ft}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${Ft}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${Ft}`}}function Ha(e,t,n){if(!t)return null;const o=Date.parse(t),r=n?Date.parse(n):NaN;return Number.isNaN(r)?o:e.now()+(o-r)}async function Ig(e){const{lockId:t,ownerId:n,api:o,clock:r,signal:a}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=r.now(),h=null,f=null;const p=new Set;let R=0,V=null,X=!1,J=!1;const d=(A,g,Z)=>e.emit({kind:A,message:g,errorCode:Z}),m=()=>{if(f===null)return;const A=ja.filter(Z=>!p.has(Z)&&r.now()>=f-Z);if(A.length===0)return;A.forEach(Z=>p.add(Z));const g=Math.min(...A)/6e4;d("cap-warning",`Lock ${t}: the hard cap (${new Date(f).toISOString()}) is about ${g} minutes away. The lock is taken back at the cap even while heartbeating: finish and release before then.`)};for(;;){if(a.aborted)return{outcome:"stopped",beats:c};let A=u;if(f!==null)for(const Z of ja)p.has(Z)||(A=Math.min(A,f-Z));if(A>r.now()&&(await go(r,A-r.now(),a),a.aborted))return{outcome:"stopped",beats:c};if(m(),r.now()<u)continue;let g;try{if(i===void 0){const Z=await o.getLockStatus({lockId:t,ownerId:n},a);if(Z.status!=="Holding"){const G=`Refusing to start: owner ${n} does not hold lock ${t}. ${Ta(t,Z)}`;return d("refused",G),{outcome:"refused",message:G,beats:c}}i=Z.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},a)}catch(Z){if(a.aborted)return{outcome:"stopped",beats:c};const G=Bs(Z);if(G){const K=`Lock ${t} LOST: ${G.message}${/stop using/i.test(G.message)?"":` ${Ft}`}`;return d("lost",K,G.errorCode),{outcome:"lost",message:K,beats:c}}if(!Cs(Z))throw Z;R+=1;const B=r.now();V??=B,!X&&B-V>=yg&&(X=!0,d("outage",`Backend unreachable for ${Math.round((B-V)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!J&&h!==null&&B>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=r.now()+Qs(R);continue}if(g.status!=="Holding"){const Z=Ta(t,g);return d("lost",Z),{outcome:"lost",message:Z,beats:c}}c+=1,V!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((r.now()-V)/1e3)}s; heartbeat resumed.`),V=null,X=!1,J=!1),R=0,h=Ha(r,g.leaseExpiresAt,g.serverTime),f=Ha(r,g.maxHoldExpiresAt,g.serverTime)??f,s??=g.suggestedHeartbeatIntervalMs>0?g.suggestedHeartbeatIntervalMs:120*1e3,l?e.verbose&&d("beat",`Heartbeat ok: valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}.`):(l=!0,d("started",`Heartbeat started for lock ${t} as ${n} (epoch ${g.epoch}): renewing every ${s/1e3}s, valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}. Quiet unless something needs you.`)),u=r.now()+s}}function Xg(e,t){Nt(y(e.command("heartbeat").description("Keep a held lock alive: renew now and then every interval. Long-running and quiet on success; run it under a watcher. Exit code 32 when the lock is lost. Stopping it (SIGINT or SIGTERM) exits 0 and does not release."))).option("--epoch <n>","Epoch of your grant. Without it, the epoch of the first status read is used, and only while you hold the lock.").option("--interval <seconds>","Seconds between renewals (default: the interval the backend suggests, 120).").option("--lease-seconds <n>","Requested lease length in seconds on every renewal (the backend clamps it to 30 to 600).").option("--verbose","Also print one line per successful renewal.").action(async function(o){const r=nr(o.epoch),a=Vt(o.interval,"--interval",1),i=Vt(o.leaseSeconds,"--lease-seconds",1),s=I(this,t),l=vt(o,s.env),c=new AbortController,u=(t.onInterrupt??Ts)(()=>c.abort());try{const h=await Ig({...l,epoch:r,intervalSeconds:a,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Ms(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
59
+ `:`${f.message}
60
+ `)}});if(h.outcome!=="stopped")throw new et(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Yg(e,t){y(e.command("list").description("List the locks that have a holder or a queue. An empty result exits 0.")).option("--prefix <text>","Only locks whose ID starts with this text.").action(async function(o){const r=I(this,t),a=await Wt(()=>r.api.listLocks(k(o.prefix)));r.io.stdout(r.outputJson?W({locks:a}):hc(a))})}function Bg(e,t){Nt(y(e.command("release").description("Give the lock back, or leave the queue. Exit code 0 whether or not something was released. Stop the heartbeat first."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused, so a slow old holder cannot release a newer grant.").action(async function(o){const r=nr(o.epoch),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.releaseLock({...i,epoch:r}));a.io.stdout(a.outputJson?W(s):mc(s))})}function Cg(e,t){Nt(y(e.command("renew").description("Renew the lease once (one heartbeat). Exit code 32 when the lock is no longer yours. Prefer `heartbeat` for keeping a lock alive."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").action(async function(o){const r=nr(o.epoch),a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.renewLock({...s,epoch:r,leaseSeconds:a}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?W(l):At(l,"renew")),new et(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?W(l):At(l,"renew"))})}var Qa=200;function wg(e,t){Nt(y(e.command("requisition").description("EMERGENCY: take the lock at once and displace the holder. Only when the user explicitly ordered a forced take; otherwise use acquire and queue."))).requiredOption("--reason <text>","Why the lock is taken (1 to 200 characters). Quote the user's order; the displaced owner is told.").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){const r=k(o.reason);if(!r||r.length>Qa)throw new N(`--reason must be 1 to ${Qa} characters.`);const a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.requisitionLock({...i,reason:r,label:k(o.label)}));a.io.stdout(a.outputJson?W(s):At(s,"requisition"))})}function Fg(e,t){Nt(y(e.command("status").description("Read this owner's state on a lock: Holding, Queued, Expired, Requisitioned or None. Exit code 0 for all of them."))).option("--wait-seconds <n>","Long-poll: return early when the state changes, or after this many seconds (the server caps it at 25).").action(async function(o){const r=Vt(o.waitSeconds,"--wait-seconds",0),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.getLockStatus({...i,waitSeconds:r}));a.io.stdout(a.outputJson?W(s):At(s,"status"))})}function kg(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");Wg(n,t),Fg(n,t),Cg(n,t),Xg(n,t),Bg(n,t),wg(n,t),Yg(n,t)}var Ug=[kg];function Jg(e,t,n=Ug){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const r of n)r(o,t)}function xg(e,t){y(e.command("archive").description("Archive a chat session through the dedicated chat archive endpoint.")).requiredOption("--session-id <id>","Chat session id to archive.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await r.api.archiveChat(a);if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message}));return}r.io.stdout(`Chat archived
61
+ sessionId ${a}
62
+ message ${i.message}
63
+ `)})}var Os=(function(e){return e.INIT="Init",e.COMPLETED="Completed",e.ARCHIVED="Archived",e.DRAFTING="Drafting",e.EXECUTION_COMPLETED="ExecutionCompleted",e.OPTIMIZING="Optimizing",e.OPENSPECING="Openspecing",e.REVIEWING="Reviewing",e.EXECUTING="Executing",e.ARCHIVING="Archiving",e})({});function Ma(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function Kg(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function zg(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function Ae(e){const t=Kg(e);return{sessionId:Ma(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:Ma(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Os.ARCHIVED,lastActiveAt:e.lastActiveAt??void 0,enableIndependentWorkspace:e.enableIndependentWorkspace,baseBranch:e.baseBranch??void 0,metadata:e.metadata??void 0,...t?{userMetadata:t}:{},chatExecutorType:e.chatExecutorType??void 0}}function Ds(e){return{sessions:e.sessions.map(Ae)}}function _s(e,t){return t.length===0?`No ${e.toLowerCase()} found.
64
+ `:`${e} (${t.length})
65
+ ${ie([{header:"Session ID",value:n=>n.sessionId},{header:"Title",value:n=>n.title},{header:"Status",value:n=>n.status},{header:"Project ID",value:n=>n.projectId},{header:"Archived",value:n=>n.archived?"yes":"no"}],t)}
66
+ `}function ke(e,t=[]){return q([["sessionId",e.sessionId],["type",e.type],["title",e.title],["status",e.status],["projectId",e.projectId],["proposalName",e.proposalName],["independentWorkspace",String(e.enableIndependentWorkspace)],["baseBranch",e.baseBranch],["chatExecutorType",e.chatExecutorType],["metadata",e.metadata],["userMetadata",e.userMetadata?zg(e.userMetadata):void 0],...t])}var Lg="No running task took the message, so it was sent as the next message.";function or(e){return{requested:e.requested,source:e.source,effective:e.effective,...e.outcome!==void 0?{outcome:e.outcome}:{},...e.messageId!==void 0?{messageId:e.messageId}:{},...e.reason!==void 0?{reason:e.reason}:{}}}function rr(e,t,n,o=[],r){const a=r&&r.source!=="default"?[["steer",`${r.requested?"on":"off"} (${r.source})`],["effective",r.effective?"yes":"no"],["outcome",r.outcome],["messageId",r.messageId],["reason",r.reason]]:[],i=r?.effective&&r.outcome==="queued"?`${Lg}
67
+ `:"";return`${e}
68
+ ${q([["sessionId",t],["message",n.message],...o,...a])}${i}`}function jg(e,t){if(e.timedOut)return`wait: timed out after ${e.elapsedSeconds}s; status is still ${t}
69
+ `;if(t==="WaitingForReply")return`wait: settled at ${t} after ${e.elapsedSeconds}s; a person must answer
70
+ `;const n=e.transitionSeen?"a status change was seen":"no status change was seen";return`wait: settled at ${t} after ${e.polls} poll(s) in ${e.elapsedSeconds}s; ${n}
71
+ `}function Tg(e){if(e.messages.length===0)return`No messages found.
72
+ `;const t=e.messages.map(n=>{const o=n.contentBlocks??[],r=o.filter(s=>s.type==="Text"&&typeof s.text=="string"),a=o.length-r.length,i=[`[${n.timestamp}] ${n.type}`];for(const s of r)for(const l of s.text.split(`
73
+ `))i.push(` ${l}`);return a>0&&i.push(` (${a} other block${a===1?"":"s"} not shown)`),i.join(`
74
+ `)});return`Messages (${e.messages.length} of ${e.totalCount})
75
+ ${t.join(`
76
+
77
+ `)}
78
+ `}var Hg={readFile:e=>(0,Y.readFileSync)(e,"utf8"),readStdin:()=>(0,Y.readFileSync)(0,"utf8")},Qg=['Session metadata entry as key=value (repeatable). Split at the first "=", so a value may contain "=".',"Write-once and visible to every reader of the session: do not put secrets in it."].join(" "),Mg=["Read session metadata from a JSON object of string values, from a file or from stdin (-). Repeatable.","Keys and values follow the same rules as --metadata."].join(" ");function $s(){return["Metadata limits (the backend checks them and reports a violation as an error):"," - at most 16 entries in total;",' - key: 1 to 64 characters matching ^[a-z][a-z0-9._-]{0,63}$ (lowercase letters, digits, "." "_" "-", starting with a letter);'," - value: 1 to 512 characters, with no control characters;"," - each key may appear once across --metadata and --metadata-json."].join(`
79
+ `)}function Og(e,t){return[$s(),"","The metadata is returned as userMetadata in --json output and is shown in the human output when present.","","Example (a master session and a worker session that carry role markers, the worker naming its master):",` hagi ${e} ${t} --metadata role=master --metadata batch=2026-11-07`,` hagi ${e} ${t} --metadata role=worker --metadata master=<master-session-id>`].join(`
80
+ `)}function Oa(e,t){return[...t??[],e]}function Ps(e,t,n){return e.option("--metadata <key=value>",Qg,Oa).option("--metadata-json <file|->",Mg,Oa).addHelpText("after",`
81
+ ${Og(t,n)}
82
+ `)}function Dg(e){const t=e.indexOf("=");if(t===-1)throw new N(`--metadata expects key=value, got "${e}".`);const n=e.slice(0,t);if(n==="")throw new N(`--metadata key is empty in "${e}".`);return[n,e.slice(t+1)]}function _g(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n]==="\\")n+=1;else if(e[n]==='"')return n;return e.length-1}function $g(e){const t=[];let n=0;for(let o=0;o<e.length;o+=1){const r=e[o];if(r==='"'){const a=_g(e,o);let i=a+1;for(;i<e.length&&/\s/.test(e[i]);)i+=1;n===1&&e[i]===":"&&t.push(JSON.parse(e.slice(o,a+1))),o=a}else r==="{"||r==="["?n+=1:(r==="}"||r==="]")&&(n-=1)}return t}function ar(e){return e==="-"?"stdin":e}function Pg(e,t){const n=ar(t);let o;try{o=JSON.parse(e)}catch(a){throw new N(`--metadata-json ${n} is not valid JSON: ${a instanceof Error?a.message:String(a)}`)}if(o===null||typeof o!="object"||Array.isArray(o))throw new N(`--metadata-json ${n} must be a JSON object of string values.`);const r=[];for(const[a,i]of Object.entries(o)){if(a==="")throw new N(`--metadata-json ${n} has an empty key.`);if(typeof i!="string")throw new N(`--metadata-json ${n}: the value of "${a}" must be a string.`);r.push([a,i])}return{entries:r,keys:$g(e)}}function qs(e,t=Hg){const n=new Map,o=(r,a)=>{if(n.has(r))throw new N(`Metadata key "${r}" is given more than once. Each key may appear once across --metadata and --metadata-json.`);n.set(r,a)};for(const r of e.entries??[]){const[a,i]=Dg(r);o(a,i)}for(const r of e.jsonSources??[]){const{entries:a,keys:i}=Pg(qg(r,t),r),s=new Set;for(const l of i){if(s.has(l))throw new N(`Metadata key "${l}" is given more than once in --metadata-json ${ar(r)}.`);s.add(l)}for(const[l,c]of a)o(l,c)}return n.size===0?void 0:Object.fromEntries(n)}function qg(e,t){let n;try{n=e==="-"?t.readStdin():t.readFile(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new N(`Could not read --metadata-json ${ar(e)}: ${r}`)}return n.replace(/^\uFEFF/,"")}var Yn=(function(e){return e.CLAUDE_CODE_CLI="ClaudeCodeCli",e.CODEX_CLI="CodexCli",e.GIT_HUB_COPILOT="GitHubCopilot",e.CODEBUDDY_CLI="CodebuddyCli",e.OPEN_CODE_CLI="OpenCodeCli",e.IFLOW_CLI="IFlowCli",e.HERMES_CLI="HermesCli",e.QODER_CLI="QoderCli",e.KIRO_CLI="KiroCli",e.KIMI_CLI="KimiCli",e.GEMINI_CLI="GeminiCli",e.DEEP_AGENTS_CLI="DeepAgentsCli",e})({});function ep(e,t){Ps(y(e.command("create").description("Create a normal chat session.")).requiredOption("--title <title>","Chat session title.").requiredOption("--project-id <id>","Owning project id.").option("--hero-id <id>","Optional bound hero id.").addOption(new Se("--executor-type <type>","Optional executor override.").choices(Object.values(Yn))),"chat create",'--title "<title>" --project-id <id>').action(async function(o){const r=I(this,t),a=x(o.title,"--title"),i=x(o.projectId,"--project-id"),s=qs({entries:o.metadata,jsonSources:o.metadataJson}),l=Ae(await r.api.createChatSession({title:a,projectId:i,heroId:k(o.heroId),executorType:o.executorType,...s?{metadata:s}:{}}));if(r.outputJson){r.io.stdout(W({session:l}));return}r.io.stdout(`Chat session created
83
+ ${ke(l)}`)})}function tp(e,t){y(e.command("delete").description("Delete a chat session.")).requiredOption("--session-id <id>","Chat session id to delete.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await r.api.deleteSession(a,!1);if(r.outputJson){r.io.stdout(W({sessionId:a,deleted:!0,message:i.message}));return}r.io.stdout(`Chat deleted
84
+ sessionId ${a}
85
+ message ${i.message}
86
+ `)})}var ir=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function np(e,t){y(e.command("list").description("List normal chat sessions.")).action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const r=I(this,t),a=Ds(await r.api.listSessions({type:ir.CHAT,projectId:k(o.projectId),projectIds:bo(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(_s("Chat sessions",a.sessions))}).option("--project-id <id>","Filter chat sessions by a single project id.").option("--project-ids <ids...>","Filter chat sessions by multiple project ids.").option("--active-only","Only return non-archived chat sessions.").option("--include-archived","Include archived chat sessions.")}var op="the backend does not support Steer",Da="HAGI_SEND_STEER";function sr(){return new Se("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function lr(){return new Se("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var rp=new Set(["1","true","yes","on"]),ap=new Set(["0","false","no","off"]);function ip(e){const t=Ee(e[Da]);if(t===void 0)return;const n=t.toLowerCase();if(rp.has(n))return!0;if(ap.has(n))return!1;throw new N(`${Da} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function sp({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=ip(t);if(n!==void 0)return{requested:n,source:"env"};const o=$m(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function cr(e){const{context:t,sessionId:n,content:o,mode:r,executorType:a,steerFlag:i}=e,s=sp({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:r,executorType:a})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...r!==void 0?["--mode"]:[],...a!==void 0?["--executor-type"]:[]];if(c.length>0){if(s.source==="flag")throw new N(`--steer cannot be combined with ${c.join(" or ")}.`);return l(`${c.join(" or ")} cannot be combined with Steer`)}try{const u=await t.api.steerSession(n,{content:o}),h=u.outcome==="steered"?"steered":"queued";return{message:h==="steered"?"Steered":"Queued",steer:{requested:!0,source:s.source,effective:!0,outcome:h,...u.messageId!==void 0?{messageId:u.messageId}:{}}}}catch(u){if(s.source!=="flag"&&u instanceof C&&u.code===S.Unimplemented)return l(op);throw u}}var dr=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function lp(e,t){y(e.command("send").description("Send a follow-up message to a chat session.")).requiredOption("--session-id <id>","Chat session id.").requiredOption("--content <text>","Message content.").addOption(new Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Chat message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function cp(e,t){const n=e.command("chat").description("Manage normal chat sessions.");np(n,t),ep(n,t),xg(n,t),tp(n,t),lp(n,t)}async function dp(){const e=[];for await(const t of process.stdin)e.push(typeof t=="string"?Buffer.from(t):t);return Buffer.concat(e).toString("utf8")}async function Bn(e){const t=e.trim();if(!t)throw new N("Provide --input <file> or --input - for stdin.");const n=t==="-"?await dp():await(0,nc.readFile)(t,"utf8");try{return JSON.parse(n)}catch(o){throw new N(`Invalid JSON input from ${t}: ${o instanceof Error?o.message:String(o)}`)}}var up=["first","random"];async function mp(e){let t;try{t=await Bn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read HagiTask input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`HagiTask input from ${e} must be a JSON object.`);return t}function hp(e,t,n){if(!t&&!n)throw new N("Provide --task-id or --prompt-id.");if(e.input!==void 0&&!t)throw new N("--input requires --task-id.");if(e.targetBranchName&&e.targetBranchMode!=="new-custom")throw new N("--target-branch-name requires --target-branch-mode new-custom.");if(e.targetBranchMode==="new-custom"&&!k(e.targetBranchName))throw new N("--target-branch-name is required when --target-branch-mode is new-custom.");const o=k(e.heroSelectionMode);if(o&&!up.includes(o))throw new N("--hero-selection-mode must be first or random.")}function bp(e,t){y(e.command("create").description("Create a HagiTask session. Read the task schema first with `hagitask schema --task-id <id>`, then pass the input JSON with --input.")).requiredOption("--title <title>","HagiTask session title.").requiredOption("--project-id <id>","Owning project id.").option("--task-id <id>","HagiTask id from `hagitask list`. Required with --input.").option("--prompt-id <id>","Prompt template id, for example auto-compose-commit.en-US. Used when there is no --task-id.").option("--input <file|->","Structured task input: a JSON object file, or - to read it from stdin. Needs --task-id.").option("--message <text>","Optional message that overrides the prompt template.").option("--locale <locale>","Locale for the HagiTask prompt, for example en-US.").option("--repository-path <path>","Optional MonoSpecs sub-repository path, for example repos/cli.").option("--target-type <type>","Explicit target type: repository or vault.").option("--vault-id <id>","Registered vault id for vault-targeted execution.").option("--output-vault-id <id>","Output vault id for research-investigation tasks.").option("--reference-vault-id <ids...>","Reference vault ids the session may read.").option("--editable-vault-id <ids...>","Vault ids the session may edit.").option("--hero-id <id>","Preferred hero id. Takes precedence over --hero-selection-mode.").option("--hero-selection-mode <mode>","Hero choice when --hero-id is not given: first (default) or random.").option("--need-push","Request a push after commit creation when supported.").option("--pull-rebase","Run git pull --rebase before pushing, when push is requested.").option("--target-branch-mode <mode>","Target branch mode: current, new-custom or ai-generated-new. new-custom needs --target-branch-name.").option("--target-branch-name <name>","Custom target branch name. Requires --target-branch-mode new-custom.").option("--script-key <key>","Optional stable scenario script key.").action(async function(o){const r=k(o.taskId),a=k(o.promptId);hp(o,r,a);const i=o.input!==void 0?await mp(x(o.input,"--input")):void 0,s=I(this,t),l={title:x(o.title,"--title"),projectId:x(o.projectId,"--project-id"),promptId:a,presetTaskId:r,presetTaskLocale:k(o.locale),presetTaskInput:i,message:k(o.message),repositoryPath:k(o.repositoryPath),targetType:k(o.targetType),vaultId:k(o.vaultId),outputVaultId:k(o.outputVaultId),referenceVaultIds:bo(o.referenceVaultId),editableVaultIds:bo(o.editableVaultId),heroId:k(o.heroId),heroSelectionMode:k(o.heroSelectionMode),needPush:o.needPush?!0:void 0,pullRebaseBeforePush:o.pullRebase?!0:void 0,targetBranchMode:k(o.targetBranchMode),targetBranchName:k(o.targetBranchName),scriptKey:k(o.scriptKey)},c=Ae(await s.api.createHagiTaskSession(l));if(s.outputJson){s.io.stdout(W({session:c,presetTaskId:l.presetTaskId??null,promptId:l.promptId??null,requested:l}));return}s.io.stdout(`HagiTask session created
87
+ ${ke(c,[["presetTaskId",l.presetTaskId??void 0],["presetTaskLocale",l.presetTaskLocale??void 0],["promptId",l.promptId??void 0],["repositoryPath",l.repositoryPath??void 0],["targetBranchMode",l.targetBranchMode??void 0],["targetBranchName",l.targetBranchName??void 0],["scriptKey",l.scriptKey??void 0],["heroId",l.heroId??void 0],["heroSelectionMode",l.heroSelectionMode??void 0]])}`)})}var gp=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function pp(e){return gp.has(e)}async function Ap(e,t,n){const o=n.now(),r=t.timeoutSeconds*1e3,a=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,f=pp(u.status);if(l=l||f,!f&&(l||h>=a||h>=r))return c(u,{settled:!0,timedOut:!1});if(h>=r)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,r-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function _n(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function fp(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,a])=>a!==void 0).map(([a])=>a);if(!e.wait){if(t.length>0)throw new N(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:_n(e.timeout,"--timeout",1),o=e.interval===void 0?5:_n(e.interval,"--interval",1),r=e.grace===void 0?10:_n(e.grace,"--grace",0);if(o>=n)throw new N("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:r}}function el(e,t,n){y(e.command("get").description(n.description)).requiredOption("--session-id <id>","Session id to read.").option("--wait","Poll until the status settles: not Optimizing, Openspecing, Executing or Archiving. WaitingForReply counts as settled.").option("--timeout <seconds>","With --wait: stop waiting after this many seconds (default 900). Exit code 31 on timeout.").option("--interval <seconds>","With --wait: seconds between reads (default 5). Must be less than --timeout.").option("--grace <seconds>","With --wait: keep polling a stable status that never transitioned for this long (default 10, 0 disables).").action(async function(r){const a=fp(r),i=x(r.sessionId,"--session-id"),s=I(this,t);if(!a){const h=Ae(await s.api.getSession(i));if(s.outputJson){s.io.stdout(W({session:h}));return}s.io.stdout(ke(h));return}const l=await Ap(()=>s.api.getSession(i),a,{now:t.now??Date.now,sleep:t.sleep??Xn}),c=Ae(l.session),u={settled:l.settled,timedOut:l.timedOut,transitionSeen:l.transitionSeen,polls:l.polls,elapsedSeconds:l.elapsedSeconds};if(s.outputJson?s.io.stdout(W({session:c,wait:u})):s.io.stdout(`${ke(c)}${jg(u,c.status)}`),l.timedOut)throw new Do(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function Zp(e,t){el(e,t,{description:"Read one HagiTask session by id, including a Super Commit session. With --wait, poll until its status settles.",label:"HagiTask session"})}function Rp(e){if(e===void 0)return;const t=e.trim();if(!/^\d+$/.test(t)||Number(t)<1)throw new N("--last must be a positive whole number.");return Number(t)}function tl(e,t,n){y(e.command("messages").description(n.description)).requiredOption("--session-id <id>","Session id whose messages to read.").option("--last <n>","Read only the n newest messages. Omit it to read the backend default page (50 messages).").action(async function(r){const a=Rp(r.last),i=x(r.sessionId,"--session-id"),s=I(this,t),l=await s.api.getSessionMessages(i,a===void 0?{page:1,order:"desc"}:{page:1,pageSize:a,order:"desc"});if(s.outputJson){s.io.stdout(W(l));return}s.io.stdout(Tg(l))})}function Ep(e,t){tl(e,t,{description:"Read a HagiTask session's messages, newest first. For a Super Commit, --last 1 reads the final result message."})}var M="-";function _a(e){return e?"yes":"no"}function $a(e){return e&&e.length>0?e.join(", "):M}function An(e){if(Array.isArray(e))return e.map(t=>An(t));if(e&&typeof e=="object"){const t=e;return Object.fromEntries(Object.keys(t).sort().map(n=>[n,An(t[n])]))}return e}function nl(e){return[...e].sort((t,n)=>{const o=t.id??"",r=n.id??"";return o<r?-1:o>r?1:0})}function Sp(e){return An({tasks:nl(e)})}function Vp(e){if(e.length===0)return`No HagiTask is available.
88
+ `;const t=nl(e);return`HagiTasks (${t.length})
89
+ ${ie([{header:"ID",value:n=>n.id??M},{header:"Version",value:n=>n.version??M},{header:"Title",value:n=>n.title??M},{header:"Description",value:n=>n.description??M}],t)}
90
+ `}function Gp(e){const t=[];e.origin==="derived"&&t.push(e.producer?`derived by ${e.producer}`:"derived");for(const n of e.aliases??[])n.key&&t.push(`alias ${n.key} (deprecated)`);return e.options&&e.options.length>0&&t.push(`options: ${e.options.map(n=>n.value??"").join(", ")}`),t.length>0?t.join("; "):M}function Np(e){const t=e.id??M,n=[];n.push(q([["id",e.id??void 0],["title",e.title??void 0],["version",e.version??void 0],["locale",e.locale??void 0],["description",e.description??void 0]]));const o=e.scope?.targets??[];n.push(`Target scope (default ${e.scope?.defaultTargetType??M})${o.length===0?`
91
+ None.
92
+ `:`
93
+ ${ie([{header:"ID",value:c=>c.id??M},{header:"Kind",value:c=>c.kind??M},{header:"Selection",value:c=>c.selectionMode??M},{header:"Required",value:c=>_a(c.required)},{header:"Access",value:c=>$a(c.allowedAccessTypes)},{header:"Input key",value:c=>c.requestKey??M},{header:"Scope key",value:c=>c.scopeRequestKey??M}],o)}
94
+ `}`);const r=e.commands?.commands??[];n.push(`Commands${r.length===0?`
95
+ None.
96
+ `:`
97
+ ${ie([{header:"ID",value:c=>c.id??M},{header:"Group",value:c=>c.groupId??M},{header:"Label",value:c=>c.label??M},{header:"URL",value:c=>c.url??M}],r)}
98
+ `}`);const a=e.parameters??[];n.push(`Parameters${a.length===0?`
99
+ None.
100
+ `:`
101
+ ${ie([{header:"Key",value:c=>c.key??M},{header:"Required",value:c=>_a(c.required)},{header:"Origin",value:c=>c.origin??M},{header:"Type",value:c=>c.valueType??M},{header:"Label",value:c=>c.label??M},{header:"Notes",value:Gp}],a)}
102
+ `}`);const i=e.requirements??[];n.push(`Requirements${i.length===0?`
103
+ None.
104
+ `:`
105
+ ${i.map(c=>`- ${c.type??M}: ${c.name??$a(c.names)}`).join(`
106
+ `)}
107
+ `}`);const s=e.scenes?.registrations??[];n.push(`Scenes${s.length===0?`
108
+ None.
109
+ `:`
110
+ ${s.map(c=>`- ${c.sceneKey??M}: ${c.title??M}`).join(`
111
+ `)}
112
+ `}`);const l=e.request;return n.push(q([["endpoint",l?`${l.method??M} ${l.path??M}`:void 0],["presetTaskIdField",l?.presetTaskIdField??void 0],["localeField",l?.localeField??void 0],["requiredFields",l?.requiredFields&&l.requiredFields.length>0?l.requiredFields.join(", "):void 0]])),n.push(`Example
113
+ hagi hagitask schema --task-id ${t} --json # full input JSON Schema and example body
114
+ hagi hagitask create --title "<title>" --project-id <project-id> --task-id ${t} --input input.json
115
+ `),n.join(`
116
+ `)}function vp(e){return An(e)}function Wp(e,t){y(e.command("list").description("List the active HagiTasks with their id, version, title and description.")).action(async function(){const o=I(this,t),r=await o.api.listHagiTaskSchemas();if(o.outputJson){o.io.stdout(W(Sp(r)));return}o.io.stdout(Vp(r))})}function yp(e,t){const n=e&&typeof e=="object"?e[t]:void 0;return typeof n=="string"&&n.trim()?n.trim():void 0}function Ip(e){const t=e&&typeof e=="object"?e.diagnostics:void 0;return Array.isArray(t)?t:[]}async function Xp(e,t){try{return await e.getHagiTaskSchema(t)}catch(n){const o=vn(n);if(o?.status===404){const r=Ip(o.body);if(r.length>0){const a=r.map(i=>{const s=i.path?` (${i.path})`:"";return` - ${i.code??"diagnostic"}: ${i.message??""}${s}`});throw new ye(404,[yp(o.body,"error")??`HagiTask ${t} is not available.`,...a].join(`
117
+ `),o.body)}}throw n}}function Yp(e,t){y(e.command("schema").description("Show the creation schema of one HagiTask: scope, commands, parameters, requirements, scenes and an example. --json prints the full schema, including the input JSON Schema.")).requiredOption("--task-id <id>","HagiTask id to read.").action(async function(o){const r=x(o.taskId,"--task-id"),a=I(this,t),i=await Xp(a.api,r);if(a.outputJson){a.io.stdout(W(vp(i)));return}a.io.stdout(Np(i))})}function Bp(e,t){y(e.command("send").description("Send a follow-up message to a HagiTask session.")).requiredOption("--session-id <id>","HagiTask session id.").requiredOption("--content <text>","Message content.").addOption(new Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("HagiTask message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Cp(e,t){const n=e.command("hagitask").description("Manage HagiTask sessions: list tasks, read a task schema, create a session from it, read one session with get (--wait to follow a run) and its messages, and send follow-up messages.");Wp(n,t),Yp(n,t),bp(n,t),Bp(n,t),Zp(n,t),Ep(n,t)}function ge(e){const t=e?.trim();return t||void 0}function ol(e){if(!e)return"";const t=ge(e.mode);if(t==="once")return["once",ge(e.runAt)].filter(Boolean).join(" ");const n=ge(e.repeat?.rule)??t??"";return[n,n==="weekly"?(e.repeat?.weekdays??[]).map(o=>o.trim().slice(0,3).toLowerCase()).join(","):void 0,ge(e.timeOfDay),ge(e.timeZone)].filter(Boolean).join(" ")}function _e(e){return{id:ge(e.id)??"",type:ge(e.type)??"",name:ge(e.name)??"",enabled:e.enabled===!0,state:ge(e.state)??"",nextRunAt:ge(e.nextRunAt)??null,schedule:e.schedule,agentPool:e.agentPool,payload:e.payload}}function wp(e){return{plans:e.map(_e)}}function Fp(e){return e.length===0?`No scheduled plans found.
118
+ `:`Plans (${e.length})
119
+ ${ie([{header:"ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Enabled",value:t=>t.enabled?"yes":"no"},{header:"State",value:t=>t.state},{header:"Next Run",value:t=>t.nextRunAt??"-"},{header:"Schedule",value:t=>ol(t.schedule)}],e)}
120
+ `}function Qt(e){return q([["id",e.id],["type",e.type],["name",e.name],["enabled",e.enabled?"yes":"no"],["state",e.state],["nextRun",e.nextRunAt??"-"],["schedule",ol(e.schedule)]])}function kp(e){return{planId:e,deleted:!0}}function Up(e){return`Plan deleted
121
+ ${q([["planId",e.planId],["deleted",String(e.deleted)]])}`}function Jp(e){return{planId:ge(e.planId)??"",accepted:!0}}function xp(e){return`Plan run accepted
122
+ ${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var Kp=["id","createdAt","updatedAt","state","nextRunAt"];async function rl(e){let t;try{t=await Bn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read plan input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`Plan input from ${e} must be a JSON object.`);return t}function fn(e){const t={...e};for(const n of Kp)delete t[n];return t}function zp(e){return{strategy:"random",agents:[{heroId:e}]}}function al(e){return{...e.name!==void 0?{name:e.name}:{},...e.heroId!==void 0?{agentPool:zp(e.heroId)}:{},...e.enabled!==void 0?{enabled:e.enabled}:{}}}function il(e,t){return{...fn(e),...fn(t)}}function Lp(e,t){y(e.command("create").description("Create a scheduled plan from a JSON document. Plans are enabled unless --disabled or the document says otherwise.")).requiredOption("--input <file|->","Plan JSON file path, or - to read from stdin.").option("--name <name>","Plan name. Overrides the document name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the document agent pool.").option("--disabled","Create the plan disabled. Overrides the document enabled value.").action(async function(o){const r=I(this,t),a=fn(await rl(o.input)),i=_e(await r.api.createPlan({enabled:!0,...a,...al({name:k(o.name),heroId:k(o.heroId),enabled:o.disabled?!1:void 0})}));if(r.outputJson){r.io.stdout(W({plan:i}));return}r.io.stdout(`Plan created
123
+ ${Qt(i)}`)})}function jp(e,t){y(e.command("delete").description("Delete a scheduled plan by id.")).requiredOption("--id <id>","Plan id to delete.").action(async function(o){const r=I(this,t),a=x(o.id,"--id");await r.api.deletePlan(a);const i=kp(a);if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(Up(i))})}async function sl(e,t,n){const o=await e.api.getPlan(t);return _e(o).enabled===n?{view:_e(o),changed:!1}:{view:_e(await e.api.updatePlan(t,il(o,{enabled:n}))),changed:!0}}function Tp(e,t){y(e.command("disable").description("Disable a scheduled plan. Nothing is sent when it is already disabled.")).requiredOption("--id <id>","Plan id to disable.").action(async function(o){const r=I(this,t),{view:a,changed:i}=await sl(r,x(o.id,"--id"),!1);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
124
+ ${Qt(a)}`)})}function Hp(e,t){y(e.command("enable").description("Enable a scheduled plan. Nothing is sent when it is already enabled.")).requiredOption("--id <id>","Plan id to enable.").action(async function(o){const r=I(this,t),{view:a,changed:i}=await sl(r,x(o.id,"--id"),!0);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
125
+ ${Qt(a)}`)})}function Qp(e,t){y(e.command("get").description("Show one scheduled plan, including its schedule, agent pool and payload in --json mode.")).requiredOption("--id <id>","Plan id to read.").action(async function(o){const r=I(this,t),a=_e(await r.api.getPlan(x(o.id,"--id")));if(r.outputJson){r.io.stdout(W({plan:a}));return}r.io.stdout(Qt(a))})}function Mp(e,t){y(e.command("list").description("List scheduled plans with their state, next run time and schedule.")).action(async function(){const o=I(this,t),r=wp(await o.api.listPlans());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(Fp(r.plans))})}function Op(e,t){y(e.command("run").description("Run a scheduled plan now from its stored inputs. The schedule is not changed.")).requiredOption("--id <id>","Plan id to run.").option("--background","Start the run and print the accepted plan id without waiting for the session.").action(async function(o){const r=I(this,t),a=x(o.id,"--id");if(o.background){const s=Jp(await r.api.startPlan(a));if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(xp(s));return}const i=Ae(await r.api.runPlan(a));if(r.outputJson){r.io.stdout(W({session:i}));return}r.io.stdout(`Plan run created a session
126
+ ${ke(i)}`)})}function Dp(e,t){y(e.command("update").description("Update a scheduled plan. The current plan is read first and only the given fields change.")).requiredOption("--id <id>","Plan id to update.").option("--input <file|->","JSON document whose top-level fields replace the same fields of the plan.").option("--name <name>","Updated plan name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the agent pool.").option("--enabled","Enable the plan.").option("--disabled","Disable the plan.").action(async function(o){const r=x(o.id,"--id"),a=k(o.input),i=k(o.name),s=k(o.heroId);if(o.enabled&&o.disabled)throw new N("Pass either --enabled or --disabled, not both.");const l=o.enabled?!0:o.disabled?!1:void 0;if(!a&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=a?fn(await rl(a)):{},u=I(this,t),h=await u.api.getPlan(r),f=_e(await u.api.updatePlan(r,il(h,{...c,...al({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(W({plan:f}));return}u.io.stdout(`Plan updated
127
+ ${Qt(f)}`)})}function _p(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");Mp(n,t),Qp(n,t),Lp(n,t),Dp(n,t),Hp(n,t),Tp(n,t),jp(n,t),Op(n,t)}function ue(e){const t=e?.trim();return t||void 0}function ur(e){return{id:ue(e.id)??"",name:ue(e.name)??"",path:ue(e.path)??"",description:ue(e.description),isMonoSpecs:e.isMonoSpecs===!0,monoSpecsVersion:ue(e.monoSpecsVersion),monoSpecsRepoDirectory:ue(e.monoSpecsRepoDirectory),monoSpecsCommitWhenArchive:typeof e.monoSpecsCommitWhenArchive=="boolean"?e.monoSpecsCommitWhenArchive:void 0,hasError:"hasError"in e?e.hasError===!0:!1,error:"error"in e?ue(e.error):void 0}}function ll(e){return{projects:(e??[]).map(ur)}}function $p(e){return e.length===0?`No projects found.
128
+ `:`Projects (${e.length})
129
+ ${ie([{header:"Project ID",value:t=>t.id},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.path},{header:"MonoSpecs",value:t=>t.isMonoSpecs?"yes":"no"},{header:"Error",value:t=>t.hasError?"yes":"no"}],e)}
130
+ `}function cl(e,t=[]){return q([["id",e.id],["name",e.name],["path",e.path],["description",e.description],["isMonoSpecs",String(e.isMonoSpecs)],["monoSpecsVersion",e.monoSpecsVersion],["monoSpecsRepoDirectory",e.monoSpecsRepoDirectory],["monoSpecsCommitWhenArchive",typeof e.monoSpecsCommitWhenArchive=="boolean"?String(e.monoSpecsCommitWhenArchive):void 0],["hasError",String(e.hasError)],["error",e.error],...t])}function Pp(e){return{projectId:ue(e.id)??"",name:ue(e.name)??"",isMonoSpecs:e.isMonoSpecs===!0,hasError:e.hasError===!0,error:ue(e.error),repositories:(e.repositories??[]).map(t=>({name:ue(t.name),path:t.path??void 0,displayName:ue(t.displayName),type:ue(t.type),branch:ue(t.branch),isValidGitRepo:typeof t.isValidGitRepo=="boolean"?t.isValidGitRepo:void 0}))}}function qp(e){return`${q([["projectId",e.projectId],["name",e.name],["isMonoSpecs",String(e.isMonoSpecs)],["hasError",String(e.hasError)],["error",e.error??(e.hasError?"The project failed to load; its repository list may be incomplete.":void 0)]])}
131
+ ${e.repositories.length===0?`This project lists no repositories.
132
+ `:`${ie([{header:"Name",value:t=>t.name??""},{header:"Path",value:t=>t.path??""},{header:"Display name",value:t=>t.displayName??""},{header:"Type",value:t=>t.type??""},{header:"Branch",value:t=>t.branch??""}],e.repositories)}
133
+ `}`}function eA(e,t){y(e.command("create").description("Create a project through the generated project client.")).requiredOption("--name <name>","Project display name.").requiredOption("--path <path>","Project root path.").option("--description <text>","Optional project description.").action(async function(o){const r=I(this,t),a=ur(await r.api.createProject({name:x(o.name,"--name"),path:x(o.path,"--path"),description:k(o.description)}));if(r.outputJson){r.io.stdout(W({project:a}));return}r.io.stdout(`Project created
134
+ ${cl(a)}`)})}function tA(e,t){y(e.command("delete").description("Delete a project by id.")).requiredOption("--id <id>","Project id to delete.").action(async function(o){const r=I(this,t),a=o.id.trim();if(await r.api.deleteProject(a),r.outputJson){r.io.stdout(W({projectId:a,deleted:!0}));return}r.io.stdout(`Project deleted
135
+ projectId ${a}
136
+ `)})}function nA(e,t){y(e.command("list").description("List projects from the aggregation endpoint.")).action(async function(){const o=I(this,t),r=ll((await o.api.listProjects()).projects);if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout($p(r.projects))})}function ae(e){const t=e?.trim();return t||void 0}function dl(e){return{key:e.key??"",value:e.value??"",valueKind:e.valueKind??"string"}}function oA(e){const t=e.isValidGitRepo===!0;return{name:ae(e.name),code:ae(e.code),path:e.path??"",url:ae(e.url),displayName:ae(e.displayName),type:ae(e.type),icon:ae(e.icon),optional:e.optional===!0,tags:e.tags??[],metadata:(e.metadata??[]).map(dl),isValidGitRepo:t,branch:t?ae(e.branch):void 0,hasUncommittedChanges:e.hasUncommittedChanges===!0,unpushedCommitCount:e.unpushedCommitCount??0,hasTrackingBranch:e.hasTrackingBranch===!0,trackingBranch:ae(e.trackingBranch),aheadCount:e.aheadCount??0,behindCount:e.behindCount??0,syncState:t?ae(e.syncState):void 0}}function ul(e){return{version:ae(e.version)??"",repoDirectory:ae(e.repoDirectory)??"",configPath:ae(e.configPath)??"",commitWhenArchive:e.commitWhenArchive===!0,yamlPreview:e.yamlPreview??"",metadata:(e.metadata??[]).map(dl),repositories:(e.repositories??[]).map(oA)}}function rA(e){return e.isValidGitRepo?[e.branch??"no branch",e.syncState,e.hasUncommittedChanges?"uncommitted changes":void 0].filter(Boolean).join(", "):"missing or not a Git repository"}function ml(e,t={}){return`${q([["version",e.version],["repoDirectory",e.repoDirectory],["configPath",e.configPath],["commitWhenArchive",String(e.commitWhenArchive)]])}
137
+ ${e.repositories.length===0?`This document lists no repositories.
138
+ `:`${ie([{header:"Path",value:n=>n.path},{header:"Name",value:n=>n.name??""},{header:"Type",value:n=>n.type??""},{header:"URL",value:n=>n.url??""},{header:"Local state",value:n=>rA(n)}],e.repositories)}
139
+ `}${t.yaml?`
140
+ YAML
141
+ ${e.yamlPreview}${e.yamlPreview.endsWith(`
142
+ `)?"":`
143
+ `}`:""}`}function hl(e){return{results:(e??[]).map(t=>({path:t.path??"",status:t.status??"",message:ae(t.message)}))}}function bl(e){return e.results.length===0?`No repositories were selected for cloning.
144
+ `:`${ie([{header:"Path",value:t=>t.path},{header:"Status",value:t=>t.status},{header:"Message",value:t=>t.message??""}],e.results)}
145
+ `}function aA(e){return{isValid:e.isValid===!0,config:e.config?{version:ae(e.config.version),repoDirectory:ae(e.config.repoDirectory)}:null,warnings:e.warnings??[],errors:e.errors??[]}}function iA(e){const t=e.isValid?"MonoSpecs configuration is valid.":"MonoSpecs configuration is invalid.",n=q([["version",e.config?.version],["repoDirectory",e.config?.repoDirectory]]),o=e.warnings.map(a=>` - ${a}
146
+ `).join(""),r=e.errors.map(a=>` - ${a}
147
+ `).join("");return[t,n.trimEnd(),e.warnings.length>0?`Warnings:
148
+ ${o}`.trimEnd():"",e.errors.length>0?`Errors:
149
+ ${r}`.trimEnd():""].filter(Boolean).join(`
150
+ `)+`
151
+ `}function sA(e){return{path:e.path??"",removed:e.removed===!0,message:ae(e.message)}}function lA(e){const t=e.removed?`Removed checkout ${e.path}`:`Checkout ${e.path} was not removed`;return`${e.message?`${t}
152
+ ${e.message}`:t}
153
+ `}function mr(e,t,n={}){const o=ul(t);if(e.outputJson){e.io.stdout(W(o));return}const r=n.heading?`${n.heading}
154
+ `:"";e.io.stdout(`${r}${ml(o,{yaml:n.yaml})}`)}function po(e,t){return[...t,e]}function ht(e){const t=e.trim().replace(/\\/g,"/").replace(/^(\.\/)+/,"").replace(/\/+$/,"");if(!t||t===".")throw new N(`Repository path must name a directory below the project root: "${e}".`);return t}function cA(e,t){y(e.command("clone").description("Clone the configured repositories that are missing on the backend host. Exits with code 30 when any clone fails.")).requiredOption("--id <id>","Project id.").option("--path <path>","Configured repository path to clone. Repeatable; omit to clone every missing repository.",po,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const r=o.path.map(ht),a=I(this,t),i=x(o.id,"--id"),s=o.includeOptional===!0,l=hl((await a.api.cloneMonoSpecsRepositories(i,r.length>0?{paths:r,includeOptional:s}:{includeOptional:s})).results);a.outputJson?a.io.stdout(W(l)):a.io.stdout(bl(l));const c=l.results.filter(u=>u.status==="failed");if(c.length>0)throw new U(`${c.length} repository clone(s) failed. See the results above.`)})}function dA(e,t){y(e.command("init").description("Initialize the MonoSpecs configuration of a project. An initialized project returns its existing document.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=I(this,t);mr(r,await r.api.initializeMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function uA(e,t){y(e.command("reload").description("Reread monospecs.yaml on the backend host and refresh the local Git state of its repositories.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=I(this,t);mr(r,await r.api.reloadMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function mA(e,t){y(e.command("remove-checkout").description("Delete the local checkout of one configured repository on the backend host. monospecs.yaml is not changed.")).requiredOption("--id <id>","Project id.").requiredOption("--path <path>","Configured repository path whose local checkout to delete.").option("--force","Delete the checkout even with uncommitted changes, unpushed commits or no upstream branch.").action(async function(o){const r=I(this,t),a=x(o.id,"--id"),i=ht(x(o.path,"--path")),s=o.force===!0;let l;try{l=await r.api.removeMonoSpecsRepositoryCheckout(a,i,s)}catch(u){const h=ws(u);throw h.status===409&&!s&&/force/i.test(h.message)?new ye(409,`${h.message}
155
+ Re-run with --force to delete this checkout anyway.`,h.details):u}const c=sA(l);r.outputJson?r.io.stdout(W(c)):r.io.stdout(lA(c))})}var hA="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function bA(e){return{name:e.name,code:e.code,path:e.path,url:e.url,displayName:e.displayName,type:e.type,icon:e.icon,optional:e.optional,tags:e.tags,metadata:e.metadata}}function gA(e){return e.split("/").at(-1)??e}function $n(e,t,n){const o=ul(t),r=n?hl(n.results):void 0;if(e.outputJson){e.io.stdout(W(r?{...o,clone:r}:o));return}e.io.stdout(`MonoSpecs configuration saved.
156
+ ${ml(o)}`),r&&e.io.stdout(`
157
+ Clone results
158
+ ${bl(r)}`)}function pA(e,t){y(e.command("set").description("Change the MonoSpecs metadata or repositories. Reads the document, applies the given options and saves it.")).requiredOption("--id <id>","Project id.").option("--version <value>","MonoSpecs configuration version.").option("--repo-directory <dir>","Repository directory relative to the project root.").option("--commit-when-archive <true|false>","Whether archiving commits the MonoSpecs changes.").option("--add-repository <path>","Configured repository path to add. Repeatable.",po,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",po,[]).option("--url <url>","Clone URL of the single added repository.").option("--name <name>","Name of the single added repository. Defaults to the last path segment.").option("--display-name <name>","Display name of the single added repository.").option("--type <type>","Type of the single added repository.").option("--clone","Clone the added repositories after saving. Requires at least one --add-repository.").action(async function(o){const r=o.addRepository.map(ht),a=o.removeRepository.map(ht);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&r.length===0&&a.length===0)throw new N(`Provide at least one change: ${hA}.`);if(o.clone&&r.length===0)throw new N("--clone requires at least one --add-repository.");const i=[o.url!==void 0?"--url":void 0,o.name!==void 0?"--name":void 0,o.displayName!==void 0?"--display-name":void 0,o.type!==void 0?"--type":void 0].filter(Boolean);if(i.length>0&&r.length!==1)throw new N(`${i.join(", ")} apply to a single --add-repository only.`);let s;if(o.commitWhenArchive!==void 0){if(o.commitWhenArchive!=="true"&&o.commitWhenArchive!=="false")throw new N("--commit-when-archive must be true or false.");s=o.commitWhenArchive==="true"}const l=I(this,t),c=x(o.id,"--id"),u=await l.api.getMonoSpecsManagement(c),h=(u.repositories??[]).map(bA);for(const V of a){const X=h.findIndex(J=>ht(J.path??"")===V);if(X<0)throw new N(`Repository path ${V} is not configured, so it cannot be removed.`);h.splice(X,1)}for(const V of r){if(h.some(X=>ht(X.path??"")===V))throw new N(`Repository path ${V} is already configured.`);h.push({name:o.name??gA(V),code:null,path:V,url:o.url??null,displayName:o.displayName??null,type:o.type??null,icon:null,optional:!1,tags:[],metadata:[]})}const f=await l.api.saveMonoSpecsManagement(c,{version:o.version??u.version,repoDirectory:o.repoDirectory??u.repoDirectory,commitWhenArchive:s??u.commitWhenArchive,repositories:h,metadata:u.metadata??[]});if(!o.clone){$n(l,f);return}let p;try{p=(await l.api.cloneMonoSpecsRepositories(c,{paths:r,includeOptional:!1})).results??[]}catch(V){throw $n(l,f),V}$n(l,f,{results:p});const R=p.filter(V=>V.status==="failed");if(R.length>0)throw new U(`The configuration was saved, but ${R.length} repository clone(s) failed. See the clone results above.`)})}function AA(e,t){y(e.command("show").description("Show the MonoSpecs management document of a project, with local Git state per repository.")).requiredOption("--id <id>","Project id.").option("--yaml","Also print the YAML preview in human-readable mode.").action(async function(o){const r=I(this,t);mr(r,await r.api.getMonoSpecsManagement(x(o.id,"--id")),{yaml:o.yaml===!0})})}function fA(e,t){y(e.command("validate").description("Validate the MonoSpecs configuration of a project. Exits with code 30 when it is invalid.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=I(this,t),a=x(o.id,"--id"),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i?.path)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=aA(await r.api.validateMonoSpecs({projectPath:i.path}));if(r.outputJson?r.io.stdout(W(s)):r.io.stdout(iA(s)),!s.isValid)throw new U("MonoSpecs configuration is invalid. See the errors above.")})}function ZA(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");AA(n,t),dA(n,t),pA(n,t),fA(n,t),uA(n,t),cA(n,t),mA(n,t)}function RA(e,t){y(e.command("repositories").description("List the repositories of one project from the aggregation snapshot.")).requiredOption("--id <id>","Project id whose repositories to list.").action(async function(o){const r=I(this,t),a=o.id.trim(),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=Pp(i);if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(qp(s))})}function EA(e,t){y(e.command("update").description("Update a project by merging provided fields into the aggregation snapshot.")).requiredOption("--id <id>","Project id to update.").option("--name <name>","Updated project name.").option("--path <path>","Updated project path.").option("--description <text>","Updated project description.").option("--clear-description","Clear the stored description.").action(async function(o){if(!o.name&&!o.path&&!o.description&&!o.clearDescription)throw new N("Provide at least one field to update: --name, --path, --description, or --clear-description.");if(o.description&&o.clearDescription)throw new N("Use either --description or --clear-description, not both.");const r=I(this,t),a=o.id.trim(),i=ll((await r.api.listProjects()).projects).projects.find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=ur(await r.api.updateProject(a,{name:k(o.name)??i.name,path:k(o.path)??i.path,description:o.clearDescription?null:k(o.description)??i.description??null}));if(r.outputJson){r.io.stdout(W({project:s}));return}r.io.stdout(`Project updated
159
+ ${cl(s)}`)})}function SA(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");nA(n,t),RA(n,t),eA(n,t),EA(n,t),tA(n,t),ZA(n,t)}function VA(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new N("Annotation input must be a JSON object.");const n=t;if(!Array.isArray(n.files))throw new N("Annotation input must include a files array.");const o=typeof n.totalAnnotations=="number"?n.totalAnnotations:n.files.length,r=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:r,files:n.files}}function GA(e,t){y(e.command("annotate").description("Submit proposal annotations from structured JSON input.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=VA(a,await Bn(o.input)),s=await r.api.submitAnnotations(a,i);if(r.outputJson){r.io.stdout(W({sessionId:a,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}r.io.stdout(`Proposal annotations submitted
160
+ sessionId ${a}
161
+ message ${s.message}
162
+ annotationCount ${s.annotationCount??i.totalAnnotations}
163
+ fileCount ${s.fileCount??i.files.length}
164
+ `)})}function NA(e,t){y(e.command("archive").description("Archive a proposal session through the explicit archive endpoint.")).requiredOption("--session-id <id>","Proposal session id to archive.").option("--hero-id <id>","Optional hero override for archiving.").action(async function(o){const r=I(this,t),a=Ae(await r.api.archiveProposal(o.sessionId.trim(),{heroId:k(o.heroId)}));if(r.outputJson){r.io.stdout(W({session:a}));return}r.io.stdout(`Proposal archive started
165
+ ${ke(a)}`)})}function vA(e,t){y(e.command("complete").description("Mark a proposal session as completed through the dedicated completion endpoint.")).requiredOption("--session-id <id>","Proposal session id to complete.").action(async function(o){const r=I(this,t),a=Ae(await r.api.completeProposal(o.sessionId.trim()));if(r.outputJson){r.io.stdout(W({session:a}));return}r.io.stdout(`Proposal completed
166
+ ${ke(a)}`)})}function WA(e){return Ae(e)}function yA(e){return Ds(e)}function IA(e){return _s("Proposal sessions",e)}function XA(e,t=[]){return ke(e,t)}var gl="New Proposal";function YA(e){const t=k(e.title);if(t)return t;if(e.defaultTitle)return gl;throw new N("Provide --title or pass --default-title to use the placeholder proposal title.")}function BA(e,t){Ps(y(e.command("create").description("Create a proposal session only. This command does not trigger later lifecycle APIs.")).requiredOption("--project-id <id>","Project id that owns the new proposal session.").requiredOption("--chief-complaint <text>","Proposal chief complaint to store on the new session.").option("--original-chief-complaint <text>","Optional raw chief complaint text to keep alongside the stitched content.").option("--title <title>","Explicit proposal session title.").option("--default-title",`Mark the title as the placeholder title (${gl}).`).option("--enable-independent-workspace","Request an independent workspace for the proposal session.").option("--base-branch <branch>","Optional base branch for the independent workspace."),"proposal create",'--project-id <id> --chief-complaint "<text>" --default-title').action(async function(o){const r=I(this,t),a=YA(o),i=qs({entries:o.metadata,jsonSources:o.metadataJson}),s=WA(await r.api.createProposalSession({title:a,chiefComplaint:o.chiefComplaint.trim(),originalChiefComplaint:k(o.originalChiefComplaint),type:ir.PROPOSAL,projectId:o.projectId.trim(),enableIndependentWorkspace:o.enableIndependentWorkspace?!0:void 0,baseBranch:k(o.baseBranch),isDefaultTitle:!!o.defaultTitle,...i?{metadata:i}:{}})),l=`hagi proposal optimize-description --session-id ${s.sessionId} --description "<description>"`;if(r.outputJson){r.io.stdout(W({session:s,nextCommand:l}));return}r.io.stdout(`Proposal session created
167
+ ${XA(s,[["next",l]])}`)})}function CA(e,t){y(e.command("execute").description("Start proposal execution only. This command maps to the execute-proposal backend action.")).requiredOption("--session-id <id>","Proposal session id to execute.").option("--hero-id <id>","Optional hero override for the execute stage.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=k(o.heroId),s=await r.api.executeProposal(a,{heroId:i});if(r.outputJson){r.io.stdout(W({sessionId:a,message:s.message,requested:{heroId:i}}));return}r.io.stdout(`Proposal execution started
168
+ sessionId ${a}
169
+ message ${s.message}
170
+ `)})}var Ao=["zh-CN","zh-Hant","en-US","ja-JP","ko-KR","de-DE","fr-FR","es-ES","pt-BR","ru-RU"];function wA(e){if(e.enableExploreMode&&e.disableExploreMode)throw new N("Use either --enable-explore-mode or --disable-explore-mode, not both.");if(e.enableExploreMode)return!0;if(e.disableExploreMode)return!1}function FA(e){const t=e.trim();if(!Ao.includes(t))throw new N(`--proposal-content-language must be one of: ${Ao.join(", ")}.`);return t}function kA(e,t){y(e.command("generate").description("Start proposal generation only. This command does not execute the proposal.")).requiredOption("--session-id <id>","Proposal session id to generate.").requiredOption("--proposal-content-language <language>",`Language of the generated proposal content (${Ao.join(", ")}).`).option("--enable-explore-mode","Explicitly enable explore mode for proposal generation.").option("--disable-explore-mode","Explicitly disable explore mode for proposal generation.").option("--hero-id <id>","Optional hero override for the generate stage.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=wA(o),s=FA(o.proposalContentLanguage),l=await r.api.generateProposal(a,{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s}),c=`hagi proposal execute --session-id ${a}`;if(r.outputJson){r.io.stdout(W({sessionId:a,message:l.message,requested:{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s},nextCommand:c}));return}r.io.stdout(`Proposal generation started
171
+ sessionId ${a}
172
+ message ${l.message}
173
+ next Wait for the session to reach Reviewing, then run ${c}
174
+ `)})}function UA(e,t){el(e,t,{description:"Read one proposal session by id. With --wait, poll until its status settles, so a stage can be followed without guessing.",label:"proposal session"})}function JA(e,t){tl(e,t,{description:"Read a proposal session's messages, newest first. Use --last 1 to read the final message of a run."})}function xA(e,t){y(e.command("list").description("List proposal sessions from the backend Sessions API.")).option("--project-id <id>","Filter proposal sessions by a single project id.").option("--project-ids <ids...>","Filter proposal sessions by multiple project ids.").option("--active-only","Only return non-archived proposal sessions.").option("--include-archived","Include archived proposal sessions in the result set.").action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const r=I(this,t),a=yA(await r.api.listSessions({type:ir.PROPOSAL,projectId:k(o.projectId),projectIds:o.projectIds?.map(k).filter(Boolean),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(IA(a.sessions))})}function KA(e,t){const n=t.summary,o=t.result,r=o?.validation?.isValid===!0,a=n?.appliedTitle||o?.optimizedTitle||"",i=n?.appliedProposalName||o?.optimizedProposalName||"",s=o?.validation?.diagnostics??[],l=[r?"Proposal optimized":"Proposal optimization returned diagnostics",`sessionId ${e}`,`title ${a}`,`proposalName ${i}`,`valid ${r?"yes":"no"}`];for(const c of s)l.push(`diagnostic ${c.code??"UNKNOWN"}: ${c.message??""}`.trimEnd());return r&&l.push(`next hagi proposal generate --session-id ${e}`),`${l.join(`
175
+ `)}
176
+ `}function zA(e,t){y(e.command("optimize-description").description("Optimize the proposal description, title, and name in one backend step.")).requiredOption("--session-id <id>","Proposal session id to optimize.").requiredOption("--description <text>","Description text to optimize.").option("--title <title>","Current title snapshot. The session title is used when omitted.").option("--default-title","Treat the current title as the placeholder title.").option("--optimization-direction <text>","Optional optimization direction for AI guidance.").option("--original-chief-complaint <text>","Optional original chief complaint to keep as context.").action(async function(o){const r=I(this,t),a=x(o.sessionId,"--session-id"),i=await r.api.optimizeProposal(a,{description:x(o.description,"--description"),title:k(o.title),isDefaultTitle:o.defaultTitle?!0:void 0,optimizationDirection:k(o.optimizationDirection),originalChiefComplaint:k(o.originalChiefComplaint)});if(r.outputJson){r.io.stdout(W({sessionId:a,...i}));return}r.io.stdout(KA(a,i))})}function LA(e,t){y(e.command("send").description("Send a follow-up message to a proposal session.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--content <text>","Message content.").addOption(new Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Proposal message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function jA(e,t){y(e.command("status").description("Update proposal session status through read-before-write merging.")).requiredOption("--session-id <id>","Proposal session id.").addOption(new Se("--status <status>","Target session status.").choices(Object.values(Os)).makeOptionMandatory()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await r.api.getSession(a);await r.api.updateSession(a,{title:i.title,description:i.description,status:o.status,metadata:i.metadata});const s=Ae({...i,status:o.status});if(r.outputJson){r.io.stdout(W({session:s}));return}r.io.stdout(`Proposal status updated
177
+ ${ke(s)}`)})}function TA(e,t){const n=e.command("proposal").description("Manage proposal sessions through backend session APIs: create, generate, execute and archive stages, read one session with get (--wait to follow a stage), and read its messages.");xA(n,t),BA(n,t),zA(n,t),kA(n,t),GA(n,t),CA(n,t),NA(n,t),jA(n,t),UA(n,t),JA(n,t),vA(n,t),LA(n,t)}function HA(e){const t=["created","unchanged","merged"],n=["Saga resource installation",`root ${e.root}`,`force ${e.force?"yes":"no"}`];for(const o of t){const r=e.files.filter(a=>a.outcome===o).map(a=>a.path);n.push(`${o.padEnd(10)}${r.length>0?r.join(", "):"none"}`)}return`${n.join(`
178
+ `)}
179
+ `}function QA(e){return["Saga created",`id ${e.id}`,`directory ${e.directory}`,`createdAt ${e.metadata.createdAt}`,`method ${e.metadata.method}`,'next read the planning method with "hagi saga method goal", then write goal.md, research.md, acceptance.md and progress.md',""].join(`
180
+ `)}function pl(e){return`total ${e.total}, done ${e.done}, blocked ${e.blocked}, pending ${e.pending}, superseded ${e.superseded}`}function MA(e){return e.sagas.length===0?`No active Sagas found.
181
+ `:[`Active Sagas (${e.sagas.length})`,...e.sagas.map(t=>`${t.sagaId} ${t.state} revision ${t.revision} ${pl(t.counts)} open amendments ${t.openAmendments}`),""].join(`
182
+ `)}function OA(e){const t=Object.entries(e.artifacts).map(([o,r])=>`${o}=${r?"written":"missing"}`).join(", "),n=e.nextArtifact?`next artifact ${e.nextArtifact}: read the method with "hagi saga method ${e.nextArtifact}"`:"next artifact none";return[`Saga ${e.sagaId}`,`state ${e.state}`,`revision ${e.revision}`,`observed ${e.updatedAt}`,`artifacts ${t}`,n,`counts ${pl(e.counts)}`,`open amendments ${e.openAmendments}`,""].join(`
183
+ `)}function DA(e){return e.items.length===0?`No plan items for Saga ${e.sagaId}.
184
+ `:[`Saga ${e.sagaId} items (${e.items.length})`,...e.items.map(t=>{const n=[t.cmd?`cmd: ${t.cmd}`:void 0,t.note?`note: ${t.note}`:void 0].filter(Boolean);return`- [${t.state}] ${t.id} ${t.title}${n.length>0?` | ${n.join(" | ")}`:""}`}),""].join(`
185
+ `)}function _A(e){const t=Object.entries(e.session.userMetadata??{}).map(([n,o])=>`${n}=${o}`).join(", ");return[`session created: ${e.session.sessionId}`,`saga ${e.sagaId}`,`metadata ${t||"none"}`,`recorded in ${e.record}`,""].join(`
186
+ `)}function Al(e){return e?e.drift.map(t=>`notice: method ${t.name} differs from the digest recorded at freeze (recorded ${t.recorded??"none"}, installed ${t.current}); confirm before resuming
187
+ `).join(""):""}function $A(e){return Al(e.methods)}function fo(e,t,n){return[`refused: ${e} ${t}`,...n.map(o=>` - ${o}`),""].join(`
188
+ `)}function Pa(e){const t=Array.isArray(e)?e.map(String):[];return t.length>0?`[${t.map(n=>`'${n}'`).join(", ")}]`:"none"}function PA(e){if(!e||typeof e!="object")return[];const t=e;return[t.marked?"master mark saga.role=master set":`master mark not set: ${String(t.reason)}`]}function qA(e,t){const n=String(t.sagaId);switch(e){case"claim":return[`claimed: ${n}`,`owner session ${String(t.ownerSession)}`,`token ${String(t.token)}`,`created at ${String(t.createdAt)}`,...PA(t.master),""].join(`
189
+ `);case"assert-owner":return t.locked?`owner ok: ${n} is owned by session ${String(t.ownerSession)}
190
+ `:`no owner: ${n} has no execution lock
191
+ `;case"release":return`released: ${n} (owner session ${String(t.ownerSession)})
192
+ `;case"check":return`check passed: ${n} (${String(t.phase)})
193
+ `+Al(t.methods);case"set-status":return`status set: ${n} ${String(t.state)} (revision ${String(t.revision)})
194
+ `;case"tick":return`ticked: ${n} ${String(t.itemId)} (${String(t.evidence)})
195
+ `;case"block":return`blocked: ${n} ${String(t.itemId)}: ${String(t.reason)}
196
+ `;case"amend":return`amendment: ${n} ${String(t.name)} (open)
197
+ `;case"archive":return`archived: ${n} -> ${String(t.destination)}
198
+ `;case"freeze":return t.unchanged?`freeze unchanged: ${n} stays at revision ${String(t.revision)}
199
+ `:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${Pa(t.reopened)} added: ${Pa(t.added)}`,""].join(`
200
+ `);default:return`${e}: ${n}
201
+ `}}var hr=["goal","research","acceptance","plan","run","amend"],ef="install/gitignore.template",tf=".gitignore";function nf(){return typeof __filename=="string"?(0,hi.pathToFileURL)(__filename).href:{}.url}function of(e){let t=E.default.dirname((0,hi.fileURLToPath)(e));for(;;){const n=E.default.join(t,"resources","saga");if(Y.default.existsSync(n))return n;const o=E.default.dirname(t);if(o===t)break;t=o}throw new Error(`Unable to locate package resources/saga from ${e}`)}function fl(e,t){let n;try{n=Y.default.lstatSync(e)}catch(o){throw new U(`Unable to read ${t} at ${e}: ${o instanceof Error?o.message:String(o)}`)}if(!n.isFile())throw new U(`${t} is not a regular file: ${e}`);return Y.default.readFileSync(e)}function qa(e,t,n,o){if(!e||typeof e!="object"||Array.isArray(e))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must be an object`);const r=e,a=Object.keys(r).sort(),i=[...t].sort();if(a.length!==i.length||a.some((s,l)=>s!==i[l]))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must list exactly ${t.join(", ")}`);for(const s of a)if(typeof r[s]!="string")throw new U(`Invalid Saga asset manifest at ${o}: ${n}.${s} must be a digest`);return r}function rf(e,t){let n;try{n=JSON.parse(e.toString("utf8"))}catch(r){throw new U(`Invalid Saga asset manifest at ${t}: ${r instanceof Error?r.message:String(r)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new U(`Invalid Saga asset manifest at ${t}: expected an object`);const o=n;if(o.schemaVersion!==2)throw new U(`Unsupported Saga asset manifest schema at ${t}`);return{schemaVersion:2,install:qa(o.install,[ef],"install",t),methods:qa(o.methods,hr,"methods",t)}}function ei(e,t,n){const o=fl(E.default.join(e,...t.split("/")),`Saga asset ${t}`);if(!/^[0-9a-f]{64}$/.test(n)||(0,je.createHash)("sha256").update(o).digest("hex")!==n)throw new U(`Saga asset integrity check failed for ${t}`);return o}function Cn(e=nf()){const t=of(e),n=E.default.join(t,"manifest.json"),o=rf(fl(n,"Saga asset manifest"),n),r=new Map;for(const[i,s]of Object.entries(o.install))r.set(tf,ei(t,i,s));const a=new Map;for(const i of hr)a.set(i,ei(t,`prompts/${i}.md`,o.methods[i]));return{directory:t,install:r,methods:a}}var af=/^- \[( |x)\] (\S+) (.*?)\s*\|\s*(.*)$/,sf=/^- ~ (\S+) (.*?)\s*\|\s*(.*)$/,lf=new Set(["## 待决问题","## Open questions"]),cf=["[已决定","[decided"],df=new Set(["- 无","- none"]);function tt(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function $e(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Mt(e){if(!e)return[];const t=e.split(/\r?\n/);return t.at(-1)===""&&t.pop(),t}function Zl(e){const t=[],n=[];return Mt(e).forEach((o,r)=>{const a=af.exec(o);if(a){t.push({line:r,id:a[2],title:a[3],done:a[1]==="x",note:a[4].trim()});return}const i=sf.exec(o);i&&n.push({id:i[1],title:i[2]})}),{active:t,superseded:n}}function Rl(e){const t={};let n;for(const o of Mt(e)){const r=/^## (\S+)/.exec(o);r&&(n=r[1]);const a=/^cmd:\s*(.+)$/.exec(o);a&&n&&(t[n]=a[1].trim())}return t}function uf(e){const t=[];let n=!1;for(const o of Mt(e)){if(o.startsWith("## ")){n=lf.has(o.trim());continue}n&&o.startsWith("- ")&&!cf.some(r=>o.includes(r))&&!df.has(o.trim().toLowerCase())&&t.push(o.slice(2).trim())}return t}function mf(e){const t=/^merged-in:[ \t]*(\S*)[ \t]*$/m.exec(e);return t?t[1]:""}function hf(e){return[...e.active.map(t=>`${t.id} ${t.title}`),...e.superseded.map(t=>`~ ${t.id} ${t.title}`)].join(`
202
+ `)}function bf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,$e(n)]))}function ti(e){const t=n=>Object.entries(n).map(([o,r])=>` ${o}: ${r}
203
+ `).join("");return`revision: ${e.revision}
204
+ `+(e.frozenAt===void 0?"":`frozen-at: ${e.frozenAt}
205
+ `)+(e.prev===void 0?"":`prev: ${e.prev}
206
+ `)+`hashes:
207
+ ${t(e.hashes)}acceptance-by-item:
208
+ ${t(e.acceptanceByItem)}`+(e.methods===void 0?"":`methods:
209
+ ${t(e.methods)}`)+`items: ${e.items.join(" ")}
210
+ `}function El(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),r=/^acceptance-by-item:\r?\n/m.exec(e),a=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!r||!a)throw new U(`Invalid Saga data in "${t}": malformed contract lock.`);const i=Number(n[1]);if(!Number.isSafeInteger(i))throw new U(`Invalid Saga data in "${t}": invalid revision.`);return{revision:i,frozenAt:/^frozen-at:[ \t]*(\S*)/m.exec(e)?.[1],prev:/^prev:[ \t]*(\S*)/m.exec(e)?.[1],hashes:Pn(e,"hashes"),acceptanceByItem:Pn(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?Pn(e,"methods"):void 0,items:a[1].split(/\s+/).filter(Boolean)}}function Pn(e,t){const n=new RegExp(`^${t}:\\r?\\n((?: .*\\r?\\n?)*)`,"m").exec(e);return n?Object.fromEntries([...n[1].matchAll(/^ {2}(\S+):\s*(\S+)\s*$/gm)].map(o=>[o[1],o[2]])):{}}var Zo="**/runtime/";function Gt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function gf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function ne(e,t){const n=E.default.resolve(e),o=E.default.resolve(t),r=E.default.relative(n,o);if(r==="")return o;if(r===".."||r.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(r))throw new T([`path escapes the Saga root: ${t}`]);const a=Gt(n);if(a&&(a.isSymbolicLink()||!gf((0,Y.realpathSync)(n),n)))throw new T([`Saga root is redirected through a link: ${n}`]);let i=n;for(const s of r.split(E.default.sep)){i=E.default.join(i,s);const l=Gt(i);if(!l)break;if(l.isSymbolicLink())throw new T([`refusing a redirected Saga path: ${i}`])}return o}function Ue(e,t){const n=ne(e,t);try{(0,Y.mkdirSync)(n,{recursive:!0})}catch(o){throw new U(`Cannot create Saga directory "${t}": ${Fn(o)}`)}}function wn(e,t,n){const o=ne(e,t);let r;try{r=(0,Y.openSync)(o,"wx"),(0,Y.writeSync)(r,gr(n))}finally{r!==void 0&&(0,Y.closeSync)(r)}}function bt(e,t,n){const o=ne(e,t),r=E.default.join(E.default.dirname(o),`${E.default.basename(o)}.${(0,je.randomUUID)()}.tmp`);let a;try{a=(0,Y.openSync)(r,"wx"),(0,Y.writeSync)(a,gr(n)),(0,Y.closeSync)(a),a=void 0,(0,Y.renameSync)(r,o)}finally{a!==void 0&&(0,Y.closeSync)(a),Gt(r)&&(0,Y.unlinkSync)(r)}}function br(e,t,n){bt(e,t,`${JSON.stringify(n,null,2)}
211
+ `)}function pf(e,t,n){const o=ne(e,t),r=yt(e,t),a=r!==void 0&&r.length>0&&r[r.length-1]!==10;let i;try{i=(0,Y.openSync)(o,"a"),(0,Y.writeSync)(i,gr(a?`
212
+ ${n}`:n))}catch(s){throw new U(`Cannot append to Saga data "${t}": ${Fn(s)}`)}finally{i!==void 0&&(0,Y.closeSync)(i)}}function Sl(e,t){(0,Y.unlinkSync)(ne(e,t))}function Af(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function ff(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function yt(e,t){const n=ne(e,t);try{return(0,Y.readFileSync)(n)}catch(o){if(o.code==="ENOENT")return;throw new U(`Cannot read Saga data "${t}": ${Fn(o)}`)}}function Pe(e,t){return yt(e,t)?.toString("utf8")}function Zf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function Rf(e){return e.split(/\r?\n/).includes(Zo)}function It(e){Ue(e,e);const t=ne(e,E.default.join(e,".gitignore"));let n;try{if(n=Gt(t)?(0,Y.readFileSync)(t,"utf8"):void 0,n!==void 0&&Rf(n))return;if(n===void 0){wn(e,t,`${Zo}
213
+ `);return}const o=n.includes(`\r
214
+ `)?`\r
215
+ `:`
216
+ `;(0,Y.appendFileSync)(t,`${n.length>0&&!n.endsWith(`
217
+ `)?o:""}${Zo}${o}`)}catch(o){throw o instanceof T?o:new U(`Cannot write the runtime ignore rule in "${t}": ${Fn(o)}. No runtime files were created.`)}}function gr(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function Fn(e){return e instanceof Error?e.message:String(e)}var Ef=/^[a-z0-9][a-z0-9-]{0,62}$/,Sf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ro(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Vf(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Gf(e,t){if(!Ef.test(e))throw new N(`Invalid Saga ID ${JSON.stringify(e)}: use 1-63 lowercase letters, digits, or hyphens, beginning with a letter or digit.`);if(Sf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=E.default.join(t,e);if(Ro(n))throw new U(`Saga "${e}" already exists at ${n}.`);const o=E.default.join(t,"archive");if(Vf(o)){const r=(0,Y.readdirSync)(o).find(a=>a.endsWith(`-${e}`));if(r)throw new U(`Saga "${e}" already exists in the archive as "${r}".`)}}function Nf(e){return`hagi saga init ${e.kind==="path"?"--path":"--project-id"} ${JSON.stringify(e.value)}`}function vf(e,t){const n=E.default.dirname(E.default.dirname(e)),o=[".hagicode",".hagicode/sagas"],r=[".gitignore"],a=s=>{throw new U(`Saga resource path "${s}" is missing or unsafe. Run ${Nf(t)} after correcting the target.`)};for(const s of o){const l=E.default.join(n,s);Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isDirectory())&&a(s)}for(const s of r){const l=E.default.join(e,...s.split("/"));Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isFile())&&a(s)}const i=(0,Y.readFileSync)(E.default.join(e,".gitignore"),"utf8").split(/\r?\n/);!i.includes("**/runtime/")&&!i.includes("*/runtime/")&&a(".gitignore (runtime ignore rule)")}function Wf(e,t){const n=ne(t,E.default.join(t,e));try{(0,Y.mkdirSync)(n)}catch(r){throw r.code==="EEXIST"?new U(`Saga "${e}" already exists at ${n}.`):r}const o={id:e,createdAt:tt(),method:1};try{wn(t,E.default.join(n,"saga.json"),`${JSON.stringify(o,null,2)}
218
+ `)}catch(r){throw(0,Y.rmSync)(n,{recursive:!0,force:!0}),r}return o}var Vl=[".hagicode",".hagicode/sagas"];function Gl(e){return e.toString("utf8").split(/\r?\n/).includes("**/runtime/")}function yf(e){if(Gl(e))return e;const t=e.toString("utf8"),n=t.match(/\r\n|\n/)?.[0]??`
219
+ `,o=e.length>0&&!t.endsWith(`
220
+ `)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Tt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function ni(e,t,n){const o=E.default.join(E.default.dirname(e),`.${E.default.basename(e)}.${(0,je.randomUUID)()}.tmp`);let r;try{r=(0,Y.openSync)(o,"wx",n??438),(0,Y.writeFileSync)(r,t),(0,Y.closeSync)(r),r=void 0,(0,Y.renameSync)(o,e)}finally{r!==void 0&&(0,Y.closeSync)(r),Tt(o)&&(0,Y.unlinkSync)(o)}}function oi(e,t,n){const o=E.default.relative(e,n);if(o===".."||o.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(o))throw new U(`Saga installation path escapes the selected project: ${t}`);const r=E.default.resolve(t),a=E.default.resolve(n);if(process.platform==="win32"?r.toLowerCase()!==a.toLowerCase():r!==a)throw new U(`Saga installation path is redirected: ${t}`)}function on(e,t){const n=(0,Y.realpathSync)(e);if(!(0,Y.statSync)(n).isDirectory())throw new U(`Selected project path is not a directory: ${e}`);const o=E.default.join(n,".hagicode","sagas");for(const r of Vl){const a=E.default.join(n,r),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga installation directory: ${a}`);if(!i.isDirectory())throw new U(`Saga installation path is not a directory: ${a}`);oi(n,a,(0,Y.realpathSync)(a))}}for(const r of t.install.keys()){const a=E.default.join(o,...r.split("/")),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga resource: ${a}`);if(!i.isFile())throw new U(`Saga resource is not a regular file: ${a}`);if(oi(o,a,(0,Y.realpathSync)(a)),i.nlink>1&&!Gl((0,Y.readFileSync)(a)))throw new U(`Refusing to overwrite hard-linked Saga resource: ${a}`)}}return o}function If(e,t,n=!1){const o=on(e,t),r=E.default.dirname(E.default.dirname(o));for(const i of Vl){const s=E.default.join(r,i);Tt(s)||(0,Y.mkdirSync)(s)}on(r,t);const a=[];for(const[i,s]of t.install){const l=E.default.join(o,...i.split("/")),c=Tt(l);if(!c){on(r,t),ni(l,s),a.push({path:i,outcome:"created"});continue}const u=(0,Y.readFileSync)(l),h=yf(u);u.equals(h)?a.push({path:i,outcome:"unchanged"}):(on(r,t),ni(l,h,c.mode&511),a.push({path:i,outcome:"merged"}))}return{root:o,force:n,files:a,conflicts:[]}}var Ot=hr;function Xf(e){return Ot.includes(e)}function Yf(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Nl(e,t=Cn()){const n=t.methods.get(e);if(!n)throw new Error(`Saga method ${e} is missing from the verified bundle`);return{name:e,sha256:Yf(n),bytes:n}}function vl(e=Cn()){return Object.fromEntries(Ot.map(t=>[t,Nl(t,e).sha256]))}var Wl=/^[a-z0-9][a-z0-9-]{0,62}$/,yl=new Set(["prompts","tools","archive","runtime","amendments","revisions"]),Bf=[["goal","goal.md"],["research","research.md"],["acceptance","acceptance.md"],["plan","progress.md"]];function kn(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}function it(e){let t;try{t=(0,Y.statSync)(e)}catch(n){if(kn(n))return;throw new U(`Cannot inspect Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}if(!t.isFile())throw new U(`Cannot read Saga data "${e}": not a regular file.`);try{return(0,Y.readFileSync)(e,"utf8")}catch(n){throw new U(`Cannot read Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}}function Cf(e){const t=Zl(it(E.default.join(e,"progress.md"))??"");return{active:t.active.map(({id:n,title:o,done:r,note:a})=>({id:n,title:o,done:r,note:a})),superseded:t.superseded}}function wf(e){return Rl(it(E.default.join(e,"acceptance.md"))??"")}function Ff(e){const t=E.default.join(e,"runtime","blocked.json"),n=it(t);if(n===void 0)return{};let o;try{o=JSON.parse(n)}catch(r){throw new U(`Invalid Saga data in "${t}": ${r instanceof Error?r.message:String(r)}`)}if(!o||typeof o!="object"||Array.isArray(o))throw new U(`Invalid Saga data in "${t}": expected a JSON object.`);return o}function kf(e){const t=E.default.join(e,"contract.lock"),n=it(t);return n===void 0?0:El(n,t).revision}function pr(e){const t=E.default.join(e,"amendments");let n;try{if(!(0,Y.statSync)(t).isDirectory())return[];n=(0,Y.readdirSync)(t).filter(o=>o.endsWith(".md")).sort()}catch(o){if(kn(o))return[];throw new U(`Cannot read Saga amendments "${t}": ${o instanceof Error?o.message:String(o)}`)}return n.map(o=>{const r=E.default.join(t,o),a=it(r);if(a===void 0)throw new U(`Cannot read Saga amendment "${r}": not a regular file.`);return{name:o,mergedIn:mf(a)}})}function Uf(e){const t=n=>{const o=it(E.default.join(e,n));return o!==void 0&&o.trim()!==""};return{goal:t("goal.md"),research:t("research.md"),acceptance:t("acceptance.md"),plan:t("progress.md")}}function Il(e){const t=Cf(e),n=wf(e),o=Ff(e);return[...t.active.map(r=>({id:r.id,title:r.title,state:r.done?"done":r.id in o?"blocked":"pending",cmd:n[r.id]||"",note:r.note})),...t.superseded.map(r=>({id:r.id,title:r.title,state:"superseded",cmd:"",note:""}))]}function Jf(e){return Il(e)}var xf=["draft","planned","running","paused","done"];function Kf(e){const t=it(E.default.join(e,"runtime","status.json"));if(t===void 0)return;let n;try{n=JSON.parse(t)}catch{return}if(!n||typeof n!="object"||Array.isArray(n))return;const{state:o,note:r}=n;if(!(typeof o!="string"||!xf.includes(o)))return{state:o,note:typeof r=="string"?r:""}}function Ar(e,t){const n=kf(t),o=Il(t),r=Uf(t),a=o.filter(p=>p.state!=="superseded"),i=o.filter(p=>p.state==="done").length,s=Bf.find(([p])=>!r[p])?.[0]??null,l=n===0?s?"draft":"planned":i===a.length?"done":"running",c=Kf(t),u=c!==void 0&&(c.state!=="running"||l==="running"),h=u?c.state:l,f=u?c.note:"";return{schema:"saga-status/2",sagaId:e,revision:n,state:h,updatedAt:new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),note:f,artifacts:r,nextArtifact:s,counts:{total:a.length,done:i,blocked:o.filter(p=>p.state==="blocked").length,pending:o.filter(p=>p.state==="pending").length,superseded:o.filter(p=>p.state==="superseded").length},openAmendments:pr(t).filter(p=>!p.mergedIn).length,items:o.map(({id:p,title:R,state:V})=>({id:p,title:R,state:V}))}}function Un(e,t){const n=()=>{throw new ye(404,`Saga "${t}" was not found.`)};(!Wl.test(t)||yl.has(t))&&n();const o=E.default.join(e,t);let r;try{r=(0,Y.lstatSync)(o)}catch(a){throw kn(a)&&n(),new U(`Cannot inspect Saga "${o}": ${a instanceof Error?a.message:String(a)}`)}return r.isDirectory()||n(),o}function zf(e){let t;try{t=(0,Y.readdirSync)(e,{withFileTypes:!0})}catch(n){if(kn(n))return[];throw new U(`Cannot list Sagas in "${e}": ${n instanceof Error?n.message:String(n)}`)}return t.filter(n=>n.isDirectory()&&Wl.test(n.name)&&!yl.has(n.name)).map(n=>n.name).sort()}function Lf(e){return zf(e).map(t=>{const n=Ar(t,E.default.join(e,t));return{sagaId:n.sagaId,state:n.state,revision:n.revision,counts:n.counts,openAmendments:n.openAmendments,updatedAt:n.updatedAt}})}function jf(e){return{sagas:Lf(e)}}function Tf(e,t){return{sagaId:t,items:Jf(Un(e,t))}}function fr(e,t){return E.default.join(e,t)}function Zr(e,t){return E.default.join(fr(e,t),"runtime","execute.lock")}function Hf(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.token=="string"&&typeof t.ownerSession=="string"&&typeof t.createdAt=="string"}function Rr(e,t){const n=ne(e,Zr(e,t));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new U(`Cannot read the execution lock of Saga "${t}": ${a.message}`)}let r;try{r=JSON.parse(o)}catch{throw new U(`The execution lock of Saga "${t}" is not valid JSON.`)}if(!Hf(r))throw new U(`The execution lock of Saga "${t}" has an unexpected shape.`);return r}function Xl(e,t){return t===void 0||t===""?!1:(0,je.timingSafeEqual)(Buffer.from($e(e),"hex"),Buffer.from($e(t),"hex"))}function Yl(e,t){return`Saga "${e}" is owned by session ${t}; reconcile the prior orchestrator and its workers. Ownership is never taken over by age.`}function Qf(e,t,n){const o=n?.trim();if(!o)throw new N("claim requires a nonempty --session <owner-session-id>.");It(e),Ue(e,E.default.join(fr(e,t),"runtime"));const r={token:(0,je.randomUUID)(),ownerSession:o,createdAt:tt()},a=Zr(e,t),i=E.default.join(E.default.dirname(a),`.execute.lock.${(0,je.randomUUID)()}.tmp`);wn(e,i,`${JSON.stringify(r,null,2)}
221
+ `);try{Af(e,i,a)}catch(s){throw s.code!=="EEXIST"?s:new T([Yl(t,Rr(e,t)?.ownerSession??"unknown")])}finally{Sl(e,i)}return r}function Er(e,t,n){const o=Rr(e,t);if(!o)return{locked:!1};if(!Xl(o.token,n))throw new T([`${Yl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function Mf(e,t){const n=ne(e,E.default.join(fr(e,t),"runtime","status.json"));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(r){if(r.code==="ENOENT")return;throw r}try{const r=JSON.parse(o).state;return typeof r=="string"?r:void 0}catch{return}}function Of(e,t,n){const o=Rr(e,t);if(!o)throw new T([`Saga "${t}" has no execution lock; there is nothing to release.`]);if(!Xl(o.token,n.token))throw new T([`the execution token does not match the owner session ${o.ownerSession}.`]);if(!n.workersSettled)throw new T(["confirm that every worker has settled with --workers-settled."]);const r=Mf(e,t);if(r!=="paused"&&r!=="done")throw new T([`the stored status is ${r??"missing"}; write a paused or done snapshot with set-status before releasing.`]);return Sl(e,Zr(e,t)),{ownerSession:o.ownerSession}}function Sr(e){const t=E.default.resolve(e);let n;try{n=(0,Y.realpathSync)(t)}catch(o){throw new U(`Cannot use local project path "${e}": ${o instanceof Error?o.message:String(o)}`)}if(!(0,Y.statSync)(n).isDirectory())throw new U(`Local project path is not a directory: "${e}"`);return n}function Eo(e){if(!Array.isArray(e.projects))throw new U("Backend project list did not include a projects collection.");return e.projects}function Bl(e,t){if(typeof e.path!="string"||e.path.length===0)throw new U(`Backend project "${t}" has no host-local project path.`);return Sr(e.path)}async function Df(e,t,n){if(e.kind==="path")return Sr(e.value);const o=Eo(await I(t,n).api.listProjects()).find(r=>r.id===e.value);if(!o)throw new ye(404,`Project "${e.value}" was not found.`);return Bl(o,e.value)}function _f(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function $f(e){try{return(0,Y.realpathSync)(E.default.resolve(e))}catch{return}}function Pf(e,t){const n=e.flatMap(o=>{if(typeof o.id!="string"||typeof o.path!="string"||o.path.length===0)return[];const r=$f(o.path);return r!==void 0&&_f(r,t)?[{id:o.id}]:[]});if(n.length===0)throw new T([`no registered project has the path ${t}; register the project or pass --project-id.`]);if(n.length>1){const o=n.map(r=>r.id).join(", ");throw new T([`${n.length} registered projects have the path ${t} (${o}); pass --project-id to choose one.`])}return{projectId:n[0].id,projectDirectory:t}}async function qf(e,t){if(e.kind==="path"){const o=Sr(e.value);return Pf(Eo(await t()),o)}const n=Eo(await t()).find(o=>o.id===e.value);if(!n)throw new ye(404,`Project "${e.value}" was not found.`);return{projectId:e.value,projectDirectory:Bl(n,e.value)}}var ri=["implementation","verification"],e2="worker";function t2(e){const t={"saga.id":e.sagaId,"saga.role":e2,"saga.worker":e.role,"saga.master":e.masterSessionId};return e.item!==void 0&&(t["saga.item"]=e.item),t}function n2(e){const t=e.title.replace(/\s+/g," ").trim(),n=e.createdAt??tt();return`- ${e.sessionId} | ${n} | ${e.role} | ${e.item??"-"} | ${t}
222
+ `}function Cl(e){const t=e.path!==void 0;if(t===(e.projectId!==void 0))throw new N("Specify exactly one of --path <directory> or --project-id <id>.");if(t){const o=e.path;if(o===void 0||o==="")throw new N("--path <directory> must not be empty.");return{kind:"path",value:o}}const n=e.projectId?.trim();if(!n)throw new N("--project-id <id> must not be empty.");return{kind:"project-id",value:n}}function o2(e,t){const n=e.opts().token??e.optsWithGlobals().token;if(e.optsWithGlobals().projectId!==void 0&&n!==void 0)throw new N("--token is the backend bearer token with --project-id; set SAGA_EXECUTION_TOKEN to pass the execution token.");return n!==void 0&&n!==""?n:t.SAGA_EXECUTION_TOKEN||void 0}async function Xt(e,t){const n=e.optsWithGlobals(),o=Cl(n),r=await Df(o,e,t);return{env:t.env,io:t.io,outputJson:n.json===!0,projectDirectory:r,sagaRoot:E.default.join(r,".hagicode","sagas"),selector:o}}var wt="session create",r2=/[\\/]/;function rn(e,t){if(typeof e!="string"||e.trim()==="")throw new N(`session create requires a nonblank ${t} <value>.`);return e.trim()}function ai(e,t){if(r2.test(e)||e==="."||e===".."||e.includes("\0"))throw new N(`${t} must not contain a path separator or a traversal segment: ${JSON.stringify(e)}.`);return e}function a2(e){if(typeof e!="string"||!ri.includes(e))throw new N(`--role must be one of ${ri.join(", ")}.`);return e}function i2(e,t){const n=ai(rn(e.saga,"--saga"),"--saga"),o=rn(e.title,"--title"),r=a2(e.role),a=rn(e.master,"--master"),i=e.item===void 0?void 0:ai(rn(e.item,"--item"),"--item");if(e.token!==void 0)throw new N("--token is the backend bearer token; the Saga execution token comes only from SAGA_EXECUTION_TOKEN.");const s=t.SAGA_EXECUTION_TOKEN;if(s===void 0||s.trim()==="")throw new N("session create requires SAGA_EXECUTION_TOKEN to hold the execution token claimed for this Saga.");return{sagaId:n,title:o,role:r,masterSessionId:a,item:i,executionToken:s,selector:Cl(e)}}function s2(e,t){const n=E.default.join(e,t,"runtime"),o=E.default.join(n,"sessions.md");return ne(e,o),It(e),Ue(e,n),o}function l2(e){return e instanceof Error?e.message:String(e)}function c2(e){return async function(){const n=i2(this.optsWithGlobals(),e.env),o=I(this,e),r=i=>o.io.stdout(i),{sagaId:a}=n;try{const i=await qf(n.selector,()=>o.api.listProjects()),s=E.default.join(i.projectDirectory,".hagicode","sagas");Un(s,a),Er(s,a,n.executionToken);const l=s2(s,a),c=Ae(await o.api.createChatSession({title:n.title,projectId:i.projectId,metadata:t2({sagaId:a,role:n.role,masterSessionId:n.masterSessionId,item:n.item})}));try{pf(s,l,n2({sessionId:c.sessionId,role:n.role,item:n.item,title:n.title}))}catch(h){const f=`session ${c.sessionId} was created but its record could not be written to ${l}: ${l2(h)}`,p={sagaId:a,command:wt,ok:!1,errors:[f],session:c};throw r(o.outputJson?W(p):fo(wt,a,[f])),new T([f],{reported:!0})}const u={sagaId:a,command:wt,ok:!0,session:c,record:l};r(o.outputJson?W(u):_A(u))}catch(i){if(i instanceof T&&!i.reported){const s={sagaId:a,command:wt,ok:!1,errors:i.reasons};r(o.outputJson?W(s):fo(wt,a,i.reasons)),i.reported=!0}throw i}}}var d2=["goal.md","research.md","acceptance.md","progress.md"],wl=/^(状态|Status):\s*PASS\s*$/m;function Oe(e,t){const n=E.default.join(e,t),o=Pe(e,E.default.join(n,"progress.md")),r=Pe(e,E.default.join(n,"acceptance.md"));return{sagaRoot:e,sagaId:t,directory:n,goal:yt(e,E.default.join(n,"goal.md")),research:Pe(e,E.default.join(n,"research.md")),acceptance:r,progress:o,plan:Zl(o??""),commands:Rl(r??"")}}function u2(e){return/[\\/]/.test(e)||e==="."||e===".."}function Jn(e){const t=[],n={"goal.md":e.goal!==void 0,"research.md":e.research!==void 0,"acceptance.md":e.acceptance!==void 0,"progress.md":e.progress!==void 0};for(const r of d2)n[r]||t.push(`${r} is missing`);const o=e.plan.active.map(r=>r.id);o.length===0&&n["progress.md"]&&t.push("progress.md has no active items"),new Set(o).size!==o.length&&t.push("progress.md has duplicate item IDs");for(const r of[...o,...e.plan.superseded.map(a=>a.id)])u2(r)&&t.push(`unsafe item ID: ${r}`);for(const r of o)r in e.commands||t.push(`item ${r} has no acceptance cmd in acceptance.md`);for(const r of Object.keys(e.commands))o.includes(r)||t.push(`acceptance entry ${r} is not an active item in progress.md`);return t}function Fl(e){return{goal:$e(e.goal??Buffer.alloc(0)),acceptance:$e(e.acceptance!==void 0?Buffer.from(e.acceptance,"utf8"):Buffer.alloc(0)),"plan-items":$e(hf(e.plan))}}function Vr(e){return pr(e.directory).filter(t=>!t.mergedIn).map(t=>`open amendment ${t.name}: merge it into the artifacts and set merged-in`)}function kl(e){return uf(e.research??"").map(t=>`open question not decided by a human: ${t}`)}function Gr(e){const t=Pe(e.sagaRoot,E.default.join(e.directory,"contract.lock"));if(t!==void 0)return{text:t,lock:El(t,E.default.join(e.directory,"contract.lock"))}}function Ul(e){const t=[],n=Gr(e);if(!n)t.push("contract.lock missing: run freeze first");else{const o=Fl(e);for(const[r,a]of Object.entries(o))n.lock.hashes[r]!==a&&t.push(`hash mismatch for ${r}: frozen contract (r${n.lock.revision}) changed, run freeze after merging an amendment`)}return t.push(...Vr(e)),t.push(...kl(e)),t.push(...m2(e)),t}function m2(e){const t=[],n=E.default.join(e.directory,"runtime");for(const o of e.plan.active.filter(r=>r.done)){if(!o.note)t.push(`item ${o.id} is ticked but has no evidence reference`);else{const a=E.default.resolve(n,o.note);a.startsWith(`${E.default.resolve(n)}${E.default.sep}`)?yt(e.sagaRoot,a)===void 0&&t.push(`item ${o.id} is ticked but evidence file is missing: ${o.note}`):t.push(`item ${o.id} evidence reference escapes the runtime directory: ${o.note}`)}const r=Pe(e.sagaRoot,E.default.join(n,"reports",`${o.id}.md`));(r===void 0||!wl.test(r))&&t.push(`item ${o.id} is ticked but its PASS report is missing`)}return t}function Jl(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="run"?[...r,...Ul(o)]:r}function h2(e){const t=Gr(e);if(!t)return;const n=t.lock.methods;if(n===void 0)return{recorded:!1,drift:[]};const o=vl();return{recorded:!0,drift:Ot.filter(r=>n[r]!==o[r]).map(r=>({name:r,recorded:n[r]??null,current:o[r]}))}}function b2(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="plan"?{errors:r}:{errors:[...r,...Ul(o)],methods:h2(o)}}function g2(e,t){const n=Oe(e,t).plan.active;return[...n.length>0&&n.every(o=>o.done)?[]:["active items remain pending or blocked, or there are no active items"],...Jl(e,t,"run")]}function p2(e){return bf(e.commands)}function A2(e,t){const n=vl(),o=Oe(e,t),r=[...Jn(o),...kl(o),...Vr(o)];if(r.length>0)throw new T(r);const a=Fl(o),i=p2(o),s=o.plan.active,l=[...s.map(d=>d.id),...o.plan.superseded.map(d=>d.id)],c=E.default.join(o.directory,"contract.lock"),u=Gr(o);if(!u)return bt(e,c,ti({revision:1,frozenAt:tt(),prev:"-",hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:1,unchanged:!1,reopened:[],added:s.map(d=>d.id)};const{text:h,lock:f}=u;if(Object.keys(a).length===Object.keys(f.hashes).length&&Object.entries(a).every(([d,m])=>f.hashes[d]===m))return{revision:f.revision,unchanged:!0,reopened:[],added:[]};const p=`r${f.revision+1}`;if(!pr(o.directory).some(d=>d.mergedIn===p))throw new T([`contract changed without an amendment merged into ${p}: tamper or unrecorded change`]);const R=new Set(l),V=f.items.filter(d=>!R.has(d));if(V.length>0)throw new T([`item removed without being marked superseded: ${V.join(", ")}`]);Ue(e,E.default.join(o.directory,"revisions")),bt(e,E.default.join(o.directory,"revisions",`r${f.revision}.lock`),h);const X=Mt(o.progress??""),J=[];for(const d of s)d.done&&f.acceptanceByItem[d.id]!==i[d.id]&&(X[d.line]=`- [ ] ${d.id} ${d.title} | reopened in ${p}: acceptance changed`,J.push(d.id));if(J.length>0){It(e);const d=E.default.join(o.directory,"runtime","history",`r${f.revision}`);Ue(e,d);for(const m of J)for(const A of[E.default.join(o.directory,"runtime","evidence",`${m}.log`),E.default.join(o.directory,"runtime","reports",`${m}.md`)])yt(e,A)!==void 0&&ff(e,A,E.default.join(d,E.default.basename(A)))}return bt(e,E.default.join(o.directory,"progress.md"),`${X.join(`
223
+ `)}
224
+ `),bt(e,c,ti({revision:f.revision+1,frozenAt:tt(),prev:$e(h),hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:f.revision+1,previousRevision:f.revision,unchanged:!1,reopened:J,added:s.filter(d=>!f.items.includes(d.id)).map(d=>d.id)}}function xl(e){return e.length>0&&!/[\\/]/.test(e)&&e!=="."&&e!==".."}function Nr(e,t){const n=E.default.join(e,t,"runtime","blocked.json"),o=Pe(e,n);if(o===void 0)return{};let r;try{r=JSON.parse(o)}catch(a){throw new U(`Invalid Saga data in "${n}": ${a.message}`)}if(!r||typeof r!="object"||Array.isArray(r))throw new U(`Invalid Saga data in "${n}": expected a JSON object.`);return{...r}}function f2(e,t){return E.default.join(e,t,"progress.md")}function Z2(e,t,n){if(!n||!xl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const o=Oe(e,t),r=o.plan.active.find(h=>h.id===n);if(!r)throw new T([`unknown item ${n}: it is not an active item in progress.md`]);const a=E.default.join(o.directory,"runtime"),i=Pe(e,E.default.join(a,"reports",`${n}.md`));if(i===void 0||!wl.test(i))throw new T([`no PASS report for ${n}: runtime/reports/${n}.md must contain "Status: PASS"`]);if(yt(e,E.default.join(a,"evidence",`${n}.log`))===void 0)throw new T([`no evidence file for ${n}: runtime/evidence/${n}.log is missing`]);const s=Jl(e,t,"run");if(s.length>0)throw new T(s);const l=`evidence/${n}.log`,c=Mt(o.progress??"");c[r.line]=`- [x] ${n} ${r.title} | ${l}`,It(e),bt(e,f2(e,t),`${c.join(`
225
+ `)}
226
+ `);const u=Nr(e,t);return n in u&&(delete u[n],br(e,E.default.join(a,"blocked.json"),u)),{itemId:n,evidence:l}}function R2(e,t,n,o){if(o===void 0||o.trim()==="")throw new N("block requires a nonempty reason.");if(!n||!xl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const r=Oe(e,t);if(!r.plan.active.some(s=>s.id===n))throw new T([`unknown item ${n}: it is not an active item in progress.md`]);It(e);const a=E.default.join(r.directory,"runtime");Ue(e,a);const i=Nr(e,t);return i[n]=o.trim(),br(e,E.default.join(a,"blocked.json"),i),{itemId:n,reason:o.trim()}}function E2(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"amendment"}function S2(e,t,n,o){const r=(n??"").replace(/\s*[\r\n]+\s*/g," ").trim();if(r==="")throw new N("amend requires a nonempty title.");const a=E.default.join(e,t,"amendments");Ue(e,a);const i=(0,Y.readdirSync)(a).map(c=>/^(\d+)-.*\.md$/.exec(c)).filter(c=>c!==null).map(c=>Number(c[1])),s=(i.length>0?Math.max(...i):0)+1,l=`${String(s).padStart(3,"0")}-${E2(r)}.md`;return wn(e,E.default.join(a,l),`title: ${r}
227
+ created-at: ${tt()}
228
+ merged-in:
229
+ ---
230
+ ${o}
231
+ `),{name:l,mergedIn:""}}function V2(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function G2(e,t,n){const o=Oe(e,t),r=Nr(e,t),a=[];o.plan.active.length===0&&a.push("the saga has no active items");for(const l of o.plan.active.filter(c=>!c.done))a.push(`item ${l.id} is ${l.id in r?"blocked":"pending"}`);if(a.push(...Vr(o)),a.length>0&&!n)throw new T([...a,"use --force to archive anyway"]);const i=E.default.join(e,"archive");Ue(e,i);const s=E.default.join(i,`${V2()}-${t}`);return Zf(e,E.default.join(e,t),s),{destination:s}}var vr=["draft","planned","running","paused","done"];function Kl(e){return typeof e=="string"&&vr.includes(e)}function N2(e,t,n,o){if(!Kl(n))throw new N(`--state must be one of ${vr.join(", ")}.`);const r=E.default.join(e,t);if(n==="planned"||n==="running"){const i=Jn(Oe(e,t));if(i.length>0)throw new T(i)}if(n==="done"){const i=g2(e,t);if(i.length>0)throw new T(i)}const a={...Ar(t,r),state:n,note:o??"",updatedAt:tt()};return It(e),Ue(e,E.default.join(r,"runtime")),br(e,E.default.join(r,"runtime","status.json"),a),a}function Ye(e,t){return async function(...o){const r=o.slice(0,-2).map(String),a=this.opts();t.preflight?.(a);const i=t.takesToken?o2(this,e.env):void 0,s=await Xt(this,e),l=r[0];if(!l)throw new N(`${t.name} requires a Saga ID.`);Un(s.sagaRoot,l);const c=u=>s.io.stdout(u);try{t.guard&&Er(s.sagaRoot,l,i);const u=await t.run({sagaId:l,sagaRoot:s.sagaRoot,token:i,command:this},a,r),h={sagaId:l,command:t.name,ok:!0,...u};c(s.outputJson?W(h):qA(t.name,h))}catch(u){if(u instanceof T){const h={sagaId:l,command:t.name,ok:!1,errors:u.reasons,...u.details};c(s.outputJson?W(h):fo(t.name,l,u.reasons)+$A(u.details)),u.reported=!0}throw u}}}function v2(e){if(typeof e.session!="string"||e.session.trim()==="")throw new N("claim requires a nonempty --session <owner-session-id>.")}var ii=1e4;async function W2(e,t,n,o){let r;try{const{api:a}=I(e,t),i=new Promise((s,l)=>{r=setTimeout(()=>l(new Error(`no answer within ${ii/1e3} s`)),ii)});return await Promise.race([a.addSessionUserMetadata(o,{"saga.id":n,"saga.role":"master"}),i]),{sessionId:o,marked:!0}}catch(a){return{sessionId:o,marked:!1,reason:a instanceof Error?a.message:String(a)}}finally{r!==void 0&&clearTimeout(r)}}function y2(e){return Ye(e,{name:"claim",takesToken:!1,preflight:v2,run:async({sagaId:t,sagaRoot:n,command:o},r)=>{const a=Qf(n,t,r.session),i=r.markSession===!1?{sessionId:a.ownerSession,marked:!1,reason:"skipped by --no-mark-session"}:await W2(o,e,t,a.ownerSession);return{ownerSession:a.ownerSession,token:a.token,createdAt:a.createdAt,master:i}}})}function I2(e){return Ye(e,{name:"assert-owner",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o})=>{const r=Er(n,t,o);return r.locked?{locked:!0,ownerSession:r.ownerSession}:{locked:!1}}})}function X2(e){return Ye(e,{name:"freeze",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n})=>{const o=A2(n,t);return{revision:o.revision,previousRevision:o.previousRevision??null,unchanged:o.unchanged,reopened:o.reopened,added:o.added}}})}function Y2(e){return Ye(e,{name:"check",takesToken:!1,preflight:t=>{if(t.phase!=="plan"&&t.phase!=="run")throw new N("check --phase must be plan or run.")},run:({sagaId:t,sagaRoot:n},o)=>{const r=o.phase,{errors:a,methods:i}=b2(n,t,r),s=i===void 0?{}:{methods:i};if(a.length>0)throw new T(a,{details:s});return{phase:r,errors:[],...s}}})}function B2(e){return Ye(e,{name:"tick",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...Z2(n,t,r[1])})})}function C2(e){return Ye(e,{name:"block",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...R2(n,t,r[1],r[2])})})}function w2(e){return Ye(e,{name:"amend",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({name:S2(n,t,r[1],r[2]??"").name,merged:!1})})}function F2(e){return Ye(e,{name:"archive",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o)=>({...G2(n,t,o.force===!0)})})}function k2(e){return Ye(e,{name:"set-status",takesToken:!0,guard:!0,preflight:t=>{if(!Kl(t.state))throw new N(`--state must be one of ${vr.join(", ")}.`)},run:({sagaId:t,sagaRoot:n},o)=>({...N2(n,t,o.state,o.note)})})}function U2(e){return Ye(e,{name:"release",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o},r)=>({released:!0,ownerSession:Of(n,t,{token:o,workersSettled:r.workersSettled===!0}).ownerSession})})}function ce(e){return y(e.option("--path <directory>","Select a local project directory without backend access.").option("--project-id <id>","Select a project from the configured backend."))}function Ke(e){return e.option("--token <token>","Execution token of the Saga owner (or set SAGA_EXECUTION_TOKEN).")}function J2(e){return async function(){const n=await Xt(this,e),o=this.opts().force===!0,r=If(n.projectDirectory,Cn(),o);n.io.stdout(n.outputJson?W(r):HA(r))}}function x2(e){return async function(n){const o=this.optsWithGlobals();if(!Xf(n))throw new N(`Unknown Saga method ${JSON.stringify(n)}: use one of ${Ot.join(", ")}.`);const r=Nl(n,Cn()),a=r.bytes.toString("utf8");e.io.stdout(o.json===!0?W({name:r.name,sha256:r.sha256,content:a}):a)}}function K2(e){return async function(n){const o=await Xt(this,e);Gf(n,o.sagaRoot),vf(o.sagaRoot,o.selector);const r=Wf(n,o.sagaRoot),a={id:r.id,directory:E.default.join(o.sagaRoot,n),metadata:r};o.io.stdout(o.outputJson?W(a):QA(a))}}function z2(e){return async function(){const n=await Xt(this,e),o=jf(n.sagaRoot);n.io.stdout(n.outputJson?W(o):MA(o))}}function L2(e){return async function(n){const o=await Xt(this,e),r=Ar(n,Un(o.sagaRoot,n));o.io.stdout(o.outputJson?W(r):OA(r))}}function j2(e){return async function(n){const o=await Xt(this,e),r=Tf(o.sagaRoot,n);o.io.stdout(o.outputJson?W(r):DA(r))}}function T2(e,t){const n=e.command("saga").description("Initialize, create, and inspect project-local Sagas.");ce(n.command("init").description("Install the Saga ignore rule. Method prompts come from the CLI (see method).")).option("--force","Accepted for compatibility; no managed resource is replaced.").action(J2(t)),y(n.command("method <name>").description(`Print a published Saga method (${Ot.join(", ")}) from the installed CLI.`)).action(x2(t)),ce(n.command("new <saga-id>").description("Create a Saga in an initialized project.")).action(K2(t)),ce(n.command("list").description("List active Sagas.")).action(z2(t)),ce(n.command("status <saga-id>").description("Read a Saga status projection.")).action(L2(t)),ce(n.command("items <saga-id>").description("Read Saga plan items.")).action(j2(t)),ce(n.command("claim <saga-id>").description("Claim exclusive execution ownership of a Saga.")).requiredOption("--session <id>","Owner session identifier recorded in the lock.").option("--no-mark-session","Do not add saga.id and saga.role=master to the owner session (by default the claim marks it, so session lists group it with its Workers).").action(y2(t)),Ke(ce(n.command("assert-owner <saga-id>").description("Check the execution token before dispatch."))).action(I2(t)),Ke(ce(n.command("release <saga-id>").description("Release execution ownership after a paused or done snapshot."))).option("--workers-settled","Confirm that every worker has settled.").action(U2(t)),Ke(ce(n.command("freeze <saga-id>").description("Freeze the Saga contract as revision 1, or the next revision after a merged amendment."))).action(X2(t)),Ke(ce(n.command("set-status <saga-id>").description("Write the runtime status snapshot (draft, planned, running, paused or done)."))).requiredOption("--state <state>","draft, planned, running, paused or done.").option("--note <text>","Note stored with the snapshot.").action(k2(t)),Ke(ce(n.command("tick <saga-id> <item-id>").description("Mark a plan item done once its PASS report and evidence exist."))).action(B2(t)),Ke(ce(n.command("block <saga-id> <item-id> <reason>").description("Record why a plan item is blocked."))).action(C2(t)),Ke(ce(n.command("amend <saga-id> <title> <text>").description("Append an open amendment to the Saga contract."))).action(w2(t)),Ke(ce(n.command("archive <saga-id>").description("Archive a finished Saga; --force archives unfinished work."))).option("--force","Archive even when items are unfinished or amendments are open.").action(F2(t)),ce(n.command("check <saga-id>").description("Check the plan (--phase plan) or the frozen run contract (--phase run, the default).")).option("--phase <phase>","plan or run.","run").action(Y2(t)),y(n.command("session").description("Create Saga Worker chat sessions and record them.").command("create").description("Create a Worker chat session marked with saga.* metadata and record it in runtime/sessions.md.")).option("--saga <id>","Saga whose Worker this is.").option("--title <title>","Title of the Worker chat session.").option("--role <role>","implementation or verification.").option("--master <session-id>","Session ID of the orchestrating (master) session.").option("--item <id>",'Plan item the Worker serves; recorded as "-" when omitted.').option("--path <directory>","Project directory. The backend is called to find the registered project with this real path.").option("--project-id <id>","Backend project ID.").addHelpText("after",`
232
+ ${H2}
233
+ `).action(c2(t))}var H2=["Metadata written to the session (userMetadata):"," saga.id the Saga ID"," saga.role always worker"," saga.worker the --role value"," saga.master the --master value"," saga.item the --item value (only when --item is given)","","The execution token comes only from SAGA_EXECUTION_TOKEN; --token is refused because it is the backend bearer token.","The command creates and records the session. It sends no message and does not archive it (see hagi chat archive).","","Exit codes: 0 created and recorded; 1 refused, or the record could not be written (the session ID is named);","2 usage error, nothing sent; 24 Saga not found.","",$s(),"","Example:",' SAGA_EXECUTION_TOKEN=<token> hagi saga session create --saga demo --path <root> --title "T1 implementation"'," --role implementation --master <your-session-id> --item T1"].join(`
234
+ `);function nt(e){return e?"yes":"no"}function Q2(e){return e&&e.length>0?e.join(", "):"-"}function zl(e){return e.origin??"user"}function Ll(e){return zl(e)==="built-in"}function M2(e){return Ll(e)?nt(e.builtIn?.enabled):"-"}function O2(e){return(Ll(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function D2(e){const t=e.items??[];return t.length===0?`No local skills installed.
235
+ `:`Local skills (${t.length})
236
+ ${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:zl},{header:"Enabled",value:M2},{header:"Version",value:O2},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>Q2(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
237
+ `}function _2(e){return q([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function $2(e){return q([["skillName",e.slug??void 0],["enabled",nt(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function P2(e){const t=e.items??[];return t.length===0?`No gallery skills found.
238
+ `:`Gallery skills (${t.length})
239
+ ${ie([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>nt(n.isTrustedSource)}],t)}
240
+ `}function q2(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function eZ(e,t={providers:[]}){const n=e.trustedProvider;return`${q([["id",e.id??void 0],["source",e.source??void 0],["skillSlug",e.skillSlug??void 0],["installable",nt(e.isInstallable)],["description",e.description??void 0],["repository",e.repositoryFullName??e.repositoryName??void 0],["repositoryUrl",e.repositoryUrl??void 0],["defaultBranch",e.repositoryDefaultBranch??void 0],["trustedSource",nt(e.isTrustedSource)],["trustedProvider",n?`${n.displayName??n.providerId??"-"}`:void 0],["installReference",e.installReference??void 0],["installCommand",e.installCommandPreview??void 0],["installVersion",e.installVersion??void 0],["installHint",e.installHint??void 0]])}${t.providers.map(o=>`${q2(o)}
241
+ `).join("")}`}function tZ(e){return q([["installReference",e.installReference??void 0],["normalizedSkillKey",e.normalizedSkillKey??void 0],["version",e.version??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0],["commandPreview",e.commandPreview??void 0]])}function an(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
242
+ `:`Trusted providers (${t.length}, directory version ${e.version??0})
243
+ ${ie([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>nt(n.isEnabled)},{header:"Preset",value:n=>nt(n.isPreset)},{header:"Rules",value:n=>String(n.ruleCount??0)}],t)}
244
+ `}function nZ(e,t){const n=e.command("gallery").description("Search the skill gallery, read skill details, and start managed installs.");y(n.command("search").description("Search the skill gallery by keyword.")).option("--query <query>","Keyword to search for. Omit to list the gallery.").action(async function(r){const a=I(this,t),i=await a.api.searchSkillGallery(k(r.query));if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(P2(i))}),y(n.command("detail").description("Show one gallery skill with installability, trust, and repository details.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").action(async function(r){const a=I(this,t),i=x(r.id,"--id"),s=x(r.source,"--source"),[l,c]=await Promise.allSettled([a.api.getSkillGalleryDetail(i,s),a.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(a.outputJson){a.io.stdout(W({...u,audit:h}));return}a.io.stdout(eZ(u,h))}),y(n.command("install").description("Start a managed install of one gallery skill.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").requiredOption("--skill-slug <slug>","Skill slug inside the source repository.").option("--version <version>","Optional version token to install.").action(async function(r){const a=I(this,t),i=await a.api.installGallerySkill({id:x(r.id,"--id"),source:x(r.source,"--source"),skillSlug:x(r.skillSlug,"--skill-slug"),version:k(r.version)});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(tZ(i))})}var oZ="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function si(e,t,n){const o=n?"enable":"disable";y(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${oZ}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(a){const i=I(this,t),s=await i.api.setBuiltInSkillAvailability({slug:x(a.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(W(s)):i.io.stdout($2(s)),!s.succeeded)throw new U(s.userMessage??`The built-in skill availability was not changed for ${s.slug??a.skillName}.`)})}function rZ(e,t){const n=e.command("local").description("List, enable or disable built-in skills, and uninstall user-installed local skills.");y(n.command("list").description("List installed local skills with their managed install metadata.")).action(async function(){const r=I(this,t),a=await r.api.listLocalSkills();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(D2(a))}),si(n,t,!0),si(n,t,!1),y(n.command("uninstall").description("Uninstall one user-installed local skill by name. Built-in skills cannot be uninstalled; use `skills local disable --skill-name <name>` to stop one from loading.")).requiredOption("--skill-name <name>","Local skill name to uninstall.").action(async function(r){const a=I(this,t),i=await a.api.uninstallLocalSkill({skillName:x(r.skillName,"--skill-name")});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(_2(i))})}async function aZ(e,t){const n=await Bn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new N(`${t} must be a JSON object.`);return n}function iZ(e,t){const n=e.command("trusted").description("Manage the trusted skill provider directory.");y(n.command("list").description("List trusted skill providers.")).action(async function(){const r=I(this,t),a=await r.api.listTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))}),y(n.command("upsert").description("Create or update a trusted provider from a JSON document.")).requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(r){const a=I(this,t),i=await aZ(x(r.input,"--input"),"Trusted provider input"),s=await a.api.upsertTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(r){const a=I(this,t),i={providerId:x(r.providerId,"--provider-id")},s=await a.api.deleteTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const r=I(this,t),a=await r.api.resetTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))})}function sZ(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");rZ(n,t),nZ(n,t),iZ(n,t)}function li(e,t,n){const o=n.guard;return{state:o?o.state:n.reason===null?null:"unknown",reason:o?o.reason:n.reason,provider:n.provider??null,status:e?.status??"unavailable",source:e?.source??"none",failureReason:e?.failureReason??null,dateKey:e?.dateKey??null,totalTokens:e?.totalTokens??null,costUsd:e?.costUsd??null,windows:t.map(r=>({provider:r.provider,kind:r.kind,remainingPercent:r.remainingPercent,resetsAtUtc:r.resetsAtUtc,minutesToReset:r.minutesToReset,windowMinutes:r.windowMinutes,watched:r.watched})),guard:o}}function lZ(e){const t=e.provider??"all providers",n=[];n.push(cZ(e,t));for(const o of e.windows)n.push(` ${uZ(o)}`);return e.windows.length===0&&e.state!=="unknown"&&n.push(" No limit windows reported."),`${n.join(`
245
+ `)}
246
+ `}function cZ(e,t){const n=e.guard;if(n?.state==="ready")return`READY ${t}: every watched window is above ${n.thresholdPercent}% remaining (waited ${n.waitedSeconds}s, stagger ${n.jitterSeconds}s).`;if(n?.state==="low"){const o=n.blockers.map(dZ).join("; ");return`LOW ${t}: at or below ${n.thresholdPercent}% after waiting ${n.waitedSeconds}s: ${o}.`}return e.state==="unknown"?`UNAVAILABLE ${t}: ${e.reason??"no usable figure"}.`:`READ ${t}: ${e.windows.length} limit window(s), no threshold given.`}function dZ(e){const t=e.remainingPercent===null?"remaining unknown":`${e.remainingPercent}% remaining`;return`${e.provider} ${e.kind} ${t}, resets ${e.resetsAtUtc??"at an unknown time"}`}function uZ(e){const t=e.windowMinutes===null?"":` [${e.windowMinutes} min]`,n=e.remainingPercent===null?"remaining unknown":`remaining ${e.remainingPercent}%`,o=e.resetsAtUtc===null?"reset unknown":`resets ${e.resetsAtUtc} (in ${e.minutesToReset??"?"} min)`,r=e.watched?"":" (not watched: weekly or longer)";return`${e.provider} ${e.kind}${t}: ${n}, ${o}${r}`}var mZ=1800,ci=21600,di=3600;function hZ(e){return typeof e.remainingPercent=="number"&&Number.isFinite(e.remainingPercent)?ui(e.remainingPercent):typeof e.usedPercent=="number"&&Number.isFinite(e.usedPercent)?ui(100-e.usedPercent):null}function bZ(e){return typeof e.windowMinutes=="number"?e.windowMinutes<=360:e.kind==="session"}function jl(e,t,n){const o=[];for(const r of e.limits?.providers??[])if(!(n!==void 0&&r.provider!==n))for(const a of r.windows??[]){const i=a.resetsAtUtc?Date.parse(a.resetsAtUtc):NaN;o.push({provider:r.provider,kind:a.kind,windowMinutes:typeof a.windowMinutes=="number"?a.windowMinutes:null,remainingPercent:hZ(a),resetsAtUtc:a.resetsAtUtc??null,minutesToReset:Number.isNaN(i)?null:pZ((i-t)/6e4),watched:bZ(a)})}return o}function Tl(e,t,n,o){return e.status!=="ok"?e.failureReason?`Token Monitor status is ${e.status}: ${e.failureReason}`:`Token Monitor status is ${e.status}`:t.some(r=>(!o||r.watched)&&r.remainingPercent!==null)?null:`no ${o?"watched ":""}${n??"provider"} window with a remaining figure in the Token Monitor snapshot`}async function gZ(e,t,n){const o=n.now(),r=()=>Math.floor((n.now()-o)/1e3);let a=0,i=null,s=[];const l=(c,u)=>({wait:{state:c,provider:t.provider,thresholdPercent:t.thresholdPercent,checkedAtUtc:new Date(n.now()).toISOString(),...u},snapshot:i,windows:s});for(;;){let c=null,u=null;try{c=await e(),i=c}catch(d){u=d instanceof Error?d.message:String(d)}const h=c?jl(c,n.now(),t.provider):[];c&&(s=h);const f=c?Tl(c,h,t.provider,!0):u;if(f!==null){a+=1;const d=r();if(a>3||d>=t.maxWaitSeconds)return l("unknown",{waitedSeconds:d,jitterSeconds:0,blockers:[],reason:f});await n.sleep(Math.min(30,t.maxWaitSeconds-d)*1e3);continue}a=0;const p=h.filter(d=>d.watched&&d.remainingPercent!==null&&d.remainingPercent<=t.thresholdPercent),R=r();if(p.length===0){const d=t.jitterSeconds>0&&R>0?Math.floor(n.random()*(t.jitterSeconds+1)):0;return d>0&&await n.sleep(d*1e3),l("ready",{waitedSeconds:R,jitterSeconds:d,blockers:[],reason:null})}if(R>=t.maxWaitSeconds)return l("low",{waitedSeconds:R,jitterSeconds:0,blockers:p,reason:null});const V=Math.max(...p.map(d=>d.minutesToReset===null?300:Math.max(0,d.minutesToReset*60)+60)),X=t.maxWaitSeconds-R,J=Math.max(1,Math.min(300,V,X));await n.sleep(J*1e3)}}function ui(e){return Math.min(100,Math.max(0,e))}function pZ(e){return Math.round(e*10)/10}function AZ(e,t){y(e.command("usage").description("Read Token Monitor usage: each provider's limit windows with their remaining percent and reset times.").command("limits").description("Read provider limit windows. With --wait-until-above, wait for a reset for a bounded time. Read-only.").option("--provider <id>","Only this provider, for example claude or codex. Required with --wait-until-above.").option("--wait-until-above <percent>","Wait until every short window (six hours or less) of --provider is above this remaining percent.").option("--max-wait <seconds>",`Longest wait with --wait-until-above (default ${mZ}; 0 checks once; at most ${ci}).`).option("--jitter-seconds <seconds>",`Random delay after a wait that ends ready (default 120; 0 disables; at most ${di}).`).addHelpText("after",`
247
+ Exit codes: 0 a usable reading (with --wait-until-above: ready or low; low is not a failure),
248
+ ${$.QUOTA_UNKNOWN} unavailable (no usable figure was read), 2 invalid options.
249
+ Transport and HTTP failures keep their usual codes. Quota comes only from the backend Token Monitor usage RPC.
250
+ `)).action(async function(){const o=this.opts(),r=o.provider?.trim()||void 0,a=qn(o.waitUntilAbove,"--wait-until-above",0,100),i=qn(o.maxWait,"--max-wait",0,ci),s=qn(o.jitterSeconds,"--jitter-seconds",0,di);if(a===void 0){if(o.maxWait!==void 0||o.jitterSeconds!==void 0)throw new N("--max-wait and --jitter-seconds apply only with --wait-until-above <percent>.")}else if(r===void 0)throw new N("--wait-until-above needs --provider <id>: a wait watches one provider's windows.");const l=I(this,t),c={now:t.now??Date.now,sleep:t.sleep??Xn,random:Math.random},u=()=>l.api.getTokenMonitorUsage(),h=p=>{l.io.stdout(l.outputJson?W(p):lZ(p))};if(a===void 0){const p=await u(),R=jl(p,c.now(),r),V=Tl(p,R,r,!1);if(h(li(p,R,{provider:r,reason:V,guard:null})),V!==null)throw new mo(`Quota unavailable: ${V}.`);return}const f=await gZ(u,{provider:r,thresholdPercent:a,maxWaitSeconds:i??1800,jitterSeconds:s??120},c);if(h(li(f.snapshot,f.windows,{provider:r,reason:null,guard:f.wait})),f.wait.state==="unknown")throw new mo(`${r} quota could not be read: ${f.wait.reason??"no usable figure"}.`)})}function qn(e,t,n,o){if(e===void 0)return;if(!/^\d+$/.test(e.trim()))throw new N(`${t} must be a whole number.`);const r=Number(e.trim());if(r<n||r>o)throw new N(`${t} must be between ${n} and ${o}.`);return r}function j(e){const t=e?.trim();return t||void 0}function fZ(e){return{severity:j(e.severity)??"",code:j(e.code)??"",message:j(e.message)??"",relativePath:j(e.relativePath)}}function Wr(e){return{id:j(e.id)??"",name:j(e.name)??"",type:j(e.type)??"",physicalPath:j(e.physicalPath)??"",gitUrl:j(e.gitUrl),createdAtUtc:j(e.createdAtUtc),updatedAtUtc:j(e.updatedAtUtc),bootstrapDiagnostics:(e.bootstrapDiagnostics??[]).map(fZ)}}function Hl(e){return{generatedAtUtc:j(e.generatedAtUtc),vaults:(e.items??[]).map(Wr)}}function ZZ(e){return e.length===0?`No vaults found.
251
+ `:`Vaults (${e.length})
252
+ ${ie([{header:"Vault ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.physicalPath}],e)}
253
+ `}function Ql(e,t=[]){return q([["id",e.id],["name",e.name],["type",e.type],["physicalPath",e.physicalPath],["gitUrl",e.gitUrl],["createdAtUtc",e.createdAtUtc],["updatedAtUtc",e.updatedAtUtc],["bootstrapDiagnostics",String(e.bootstrapDiagnostics.length)],...t])}function RZ(e){return{relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",isDirectory:e.isDirectory===!0,extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),previewSupported:e.previewSupported===!0}}function EZ(e){return{vaultId:j(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:j(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function SZ(e){return`Vault deleted
254
+ ${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function VZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),isTruncated:e.isTruncated===!0,totalFileCount:typeof e.totalFileCount=="number"?e.totalFileCount:0,items:(e.items??[]).map(RZ)}}function GZ(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["status",e.status],["errorCode",e.errorCode],["message",e.message],["isTruncated",String(e.isTruncated)],["totalFileCount",String(e.totalFileCount)]]);return e.items.length===0?`Vault files
255
+ ${t}No files found.
256
+ `:`Vault files
257
+ ${t}${ie([{header:"Relative Path",value:n=>n.relativePath},{header:"Directory",value:n=>n.isDirectory?"yes":"no"},{header:"Extension",value:n=>n.extension},{header:"Size",value:n=>String(n.sizeBytes)},{header:"Preview",value:n=>n.previewSupported?"yes":"no"}],e.items)}
258
+ `}function NZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),previewSupported:e.previewSupported===!0,contentTruncated:e.contentTruncated===!0,content:j(e.content)}}function vZ(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["relativePath",e.relativePath],["fileName",e.fileName],["extension",e.extension],["sizeBytes",String(e.sizeBytes)],["lastModifiedUtc",e.lastModifiedUtc],["status",e.status],["errorCode",e.errorCode],["message",e.message],["previewSupported",String(e.previewSupported)],["contentTruncated",String(e.contentTruncated)]]);if(!e.content)return`Vault file preview
259
+ ${t}`;const n=e.content.endsWith(`
260
+ `)?"":`
261
+ `;return`Vault file preview
262
+ ${t}content
263
+ -------
264
+ ${e.content}${n}`}function WZ(e,t){y(e.command("create").description("Create a vault through the generated vault client.")).requiredOption("--name <name>","Vault display name.").requiredOption("--type <type>","Vault type, such as folder, obsidian, or coderef.").requiredOption("--physical-path <path>","Vault physical path.").option("--git-url <url>","Optional git remote URL for git-backed vaults.").action(async function(o){const r=I(this,t),a=Wr(await r.api.createVault({name:x(o.name,"--name"),type:x(o.type,"--type"),physicalPath:x(o.physicalPath,"--physical-path"),gitUrl:k(o.gitUrl)}));if(r.outputJson){r.io.stdout(W({vault:a}));return}r.io.stdout(`Vault created
265
+ ${Ql(a)}`)})}function yZ(e,t){y(e.command("delete").description("Delete a vault by id and optionally request local file cleanup.")).requiredOption("--id <id>","Vault id to delete.").option("--delete-local-files","Request backend deletion of local vault files.").action(async function(o){const r=I(this,t),a=EZ(await r.api.deleteVault(x(o.id,"--id"),o.deleteLocalFiles===!0));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(SZ(a))})}function IZ(e,t){y(e.command("list").description("List files under a registered vault path.")).requiredOption("--id <id>","Vault id to browse.").option("--path <path>","Optional relative path under the vault root.").action(async function(o){const r=I(this,t),a=VZ(await r.api.listVaultFiles(x(o.id,"--id"),k(o.path)));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(GZ(a))})}function XZ(e,t){y(e.command("preview").description("Preview supported file content from a registered vault.")).requiredOption("--id <id>","Vault id to browse.").requiredOption("--path <path>","Relative file path to preview.").action(async function(o){const r=I(this,t),a=NZ(await r.api.previewVaultFile(x(o.id,"--id"),x(o.path,"--path")));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(vZ(a))})}function YZ(e,t){y(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=I(this,t),r=Hl(await o.api.listVaults());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(ZZ(r.vaults))})}function BZ(e,t){y(e.command("update").description("Update a vault by merging provided fields into the current vault snapshot.")).requiredOption("--id <id>","Vault id to update.").option("--name <name>","Updated vault display name.").option("--type <type>","Updated vault type.").option("--physical-path <path>","Updated vault physical path.").option("--git-url <url>","Updated git remote URL.").action(async function(o){const r=k(o.name),a=k(o.type),i=k(o.physicalPath),s=k(o.gitUrl);if(!r&&!a&&!i&&!s)throw new N("Provide at least one field to update: --name, --type, --physical-path, or --git-url.");const l=I(this,t),c=x(o.id,"--id"),u=Hl(await l.api.listVaults()).vaults.find(f=>f.id===c);if(!u)throw new ye(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=Wr(await l.api.updateVault(c,{name:r??u.name,type:a??u.type,physicalPath:i??u.physicalPath,gitUrl:s??u.gitUrl??null}));if(l.outputJson){l.io.stdout(W({vault:h}));return}l.io.stdout(`Vault updated
266
+ ${Ql(h)}`)})}function CZ(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");YZ(n,t),WZ(n,t),BZ(n,t),yZ(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");IZ(o,t),XZ(o,t)}function wZ(e){return e.includes("--json")}function Ml(e=Hs(),t=!1){const n=new lc;return n.name("hagi").description("HagiCode CLI for project, proposal, Saga, vault, chat, HagiTask, and scheduled plan management, plus agent-facing capabilities.").showHelpAfterError().exitOverride(),n.configureOutput({writeOut:o=>{e.io.stdout(o)},writeErr:o=>{t||e.io.stderr(o)},getOutHelpWidth:()=>100,getErrHelpWidth:()=>100}),Ag(n),SA(n,e),TA(n,e),CZ(n,e),cp(n,e),Cp(n,e),_p(n,e),sZ(n,e),Jg(n,e),T2(n,e),AZ(n,e),n}function FZ(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(Fs({exitCode:$.USAGE,message:e.message},{json:!0})),$.USAGE)}async function kZ(e=process.argv,t=Hs()){const n=wZ(e),o=Ml(t,n);try{return await o.parseAsync([...e]),0}catch(r){if(r instanceof sc)return FZ(r,t,n);const a=ws(r,{baseUrl:eh()});return(r instanceof et||r instanceof T)&&r.reported||t.io.stderr(Fs(a,{json:n})),a.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return $}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return Ml}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return kZ}});