@toloka-platform/sdk 0.1.0-preview.6 → 0.1.0-preview.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -15
- package/dist/cli/toloka.js +209 -121
- package/dist/cli/toloka.js.jsc +0 -0
- package/dist/cli/toloka.js.jsc.sha256 +1 -1
- package/dist/cli/toloka.js.sha256 +1 -1
- package/docs/authoring.md +20 -9
- package/docs/cli-v2.md +3 -3
- package/docs/cli.md +44 -16
- package/docs/getting-started.md +7 -12
- package/docs/limitations.md +6 -6
- package/docs/testing-examples.md +248 -0
- package/docs/testing.md +115 -0
- package/examples/face-image-collection/README.md +7 -1
- package/examples/face-image-collection/fields.ts +20 -8
- package/examples/face-image-collection/nodes/annotate-faces/node.ts +1 -9
- package/examples/face-image-collection/nodes/order-faces/node.ts +3 -5
- package/examples/face-image-collection/pipeline.browser.integration.spec.ts +78 -0
- package/examples/video-pair-rating/README.md +14 -6
- package/examples/video-pair-rating/nodes/adjudicate/node.ts +1 -3
- package/examples/video-pair-rating/nodes/adjudicate_op/node.ts +1 -3
- package/examples/video-pair-rating/nodes/adjudication_match/node.ts +15 -17
- package/examples/video-pair-rating/nodes/assemble/node.ts +25 -27
- package/examples/video-pair-rating/nodes/cascade/node.ts +24 -26
- package/examples/video-pair-rating/nodes/finalize_overall/node.ts +17 -19
- package/examples/video-pair-rating/nodes/merge_adjudication/node.ts +13 -15
- package/examples/video-pair-rating/nodes/merge_op_adjudication/node.ts +12 -14
- package/examples/video-pair-rating/nodes/op_quorum_resolve/node.ts +13 -15
- package/examples/video-pair-rating/nodes/overall_preference_pick/node.ts +1 -1
- package/examples/video-pair-rating/nodes/rate_pair/node.ts +1 -1
- package/examples/video-pair-rating/nodes/route_adjudication/node.ts +1 -3
- package/examples/video-pair-rating/nodes/route_op_adjudication/node.ts +5 -7
- package/examples/video-pair-rating/nodes/route_overall/node.ts +1 -3
- package/examples/video-pair-rating/nodes/shuffle_ab/node.ts +11 -13
- package/examples/video-pair-rating/pipeline.browser.integration.spec.ts +267 -0
- package/openapi/gen/api.ts +48 -11
- package/openapi/gen/models/createDatasetExportBody.ts +3 -3
- package/openapi/gen/models/createDatasetExportBodyOneOf.ts +6 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfFormat.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThree.ts +10 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeContract.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeFormat.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilter.ts +9 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/datasetExportReport.ts +9 -0
- package/openapi/gen/models/datasetExportReportErrorsItem.ts +5 -0
- package/openapi/gen/models/datasetExportReportTokens.ts +7 -0
- package/openapi/gen/models/datasetItem.ts +0 -2
- package/openapi/gen/models/exportJob.ts +2 -0
- package/openapi/gen/models/exportJobReport.ts +3 -0
- package/openapi/gen/models/index.ts +48 -1
- package/openapi/gen/models/sampleDatasetItemsBody.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOf.ts +8 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilter.ts +9 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethree.ts +8 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilter.ts +9 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/sampleJob.ts +13 -0
- package/openapi/gen/models/sampleJobStatus.ts +2 -0
- package/openapi/gen/models/sampleResult.ts +5 -0
- package/package.json +23 -2
- package/skills/catalog.json +14 -6
- package/skills/toloka-build/SKILL.md +35 -12
- package/skills/toloka-build/references/node-semantics.md +32 -29
- package/skills/toloka-build/references/workflow-and-cli.md +61 -27
- package/skills/toloka-report-issue/references/report-template.md +1 -1
- package/src/authoring/index.ts +27 -26
- package/src/checks/ast.ts +32 -0
- package/src/checks/index.ts +14 -0
- package/src/checks/postprocess-collisions.ts +145 -0
- package/src/checks/task-ui-declarations.generated.ts +19 -0
- package/src/checks/task-ui-typecheck.ts +345 -0
- package/src/checks/typescript-vfs.d.ts +26 -0
- package/src/checks/typescript-vfs.js +5 -0
- package/src/cli/analytics.ts +9 -19
- package/src/cli/auto-update.ts +367 -0
- package/src/cli/boolean-flag.ts +13 -0
- package/src/cli/check.ts +977 -0
- package/src/cli/credentials.ts +3 -0
- package/src/cli/program.ts +184 -20
- package/src/cli/project-context.ts +14 -4
- package/src/cli/runs.ts +21 -11
- package/src/cli/settings.ts +93 -0
- package/src/cli/skill.ts +17 -6
- package/src/importer.ts +12 -16
- package/src/testing/code-node.ts +160 -0
- package/src/testing/index.ts +15 -0
- package/src/testing/task-ui-browser.ts +120 -0
- package/src/testing/task-ui-validation.ts +135 -0
- package/src/testing/task-ui.ts +557 -0
- package/src/testing/test-evidence.ts +170 -0
- package/src/testing/types.ts +141 -0
- package/openapi/gen/models/datasetItemDuplicateOfSubmissionId.ts +0 -2
package/dist/cli/toloka.js
CHANGED
|
@@ -1,173 +1,261 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun @bytecode @bun-cjs
|
|
3
|
-
(function(exports, require, module, __filename, __dirname) {var rb=Object.create;var{getPrototypeOf:nb,defineProperty:Hs,getOwnPropertyNames:ib}=Object;var sb=Object.prototype.hasOwnProperty;function ob(e){return this[e]}var ab,lb,Re=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var i=t?ab??=new WeakMap:lb??=new WeakMap,s=i.get(e);if(s)return s}r=e!=null?rb(nb(e)):{};let o=t||!e||!e.__esModule?Hs(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of ib(e))if(!sb.call(o,a))Hs(o,a,{get:ob.bind(e,a),enumerable:!0})}if(n)i.set(e,o);return o};var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var db=(e)=>e;function cb(e,t){this[e]=db.bind(null,t)}var ub=(e,t)=>{for(var r in t)Hs(e,r,{get:t[r],enumerable:!0,configurable:!0,set:cb.bind(t,r)})};var en=P(function(q){Object.defineProperty(q,"__esModule",{value:!0});q.regexpCode=q.getEsmExportName=q.getProperty=q.safeStringify=q.stringify=q.strConcat=q.addCodeArg=q.str=q._=q.nil=q._Code=q.Name=q.IDENTIFIER=q._CodeOrName=void 0;class ui{}q._CodeOrName=ui;q.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class lr extends ui{constructor(e){super();if(!q.IDENTIFIER.test(e))throw Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}q.Name=lr;class Me extends ui{constructor(e){super();this._items=typeof e==="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((t,r)=>`${t}${r}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((t,r)=>{if(r instanceof lr)t[r.str]=(t[r.str]||0)+1;return t},{})}}q._Code=Me;q.nil=new Me("");function Jc(e,...t){let r=[e[0]],n=0;while(n<t.length)ho(r,t[n]),r.push(e[++n]);return new Me(r)}q._=Jc;var mo=new Me("+");function Qc(e,...t){let r=[Zr(e[0])],n=0;while(n<t.length)r.push(mo),ho(r,t[n]),r.push(mo,Zr(e[++n]));return Cw(r),new Me(r)}q.str=Qc;function ho(e,t){if(t instanceof Me)e.push(...t._items);else if(t instanceof lr)e.push(t);else e.push(Tw(t))}q.addCodeArg=ho;function Cw(e){let t=1;while(t<e.length-1){if(e[t]===mo){let r=Ow(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function Ow(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string"){if(t instanceof lr||e[e.length-1]!=='"')return;if(typeof t!="string")return`${e.slice(0,-1)}${t}"`;if(t[0]==='"')return e.slice(0,-1)+t.slice(1);return}if(typeof t=="string"&&t[0]==='"'&&!(e instanceof lr))return`"${e}${t.slice(1)}`;return}function Fw(e,t){return t.emptyStr()?e:e.emptyStr()?t:Qc`${e}${t}`}q.strConcat=Fw;function Tw(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:Zr(Array.isArray(e)?e.join(","):e)}function Aw(e){return new Me(Zr(e))}q.stringify=Aw;function Zr(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}q.safeStringify=Zr;function kw(e){return typeof e=="string"&&q.IDENTIFIER.test(e)?new Me(`.${e}`):Jc`[${e}]`}q.getProperty=kw;function Dw(e){if(typeof e=="string"&&q.IDENTIFIER.test(e))return new Me(`${e}`);throw Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}q.getEsmExportName=Dw;function Nw(e){return new Me(e.toString())}q.regexpCode=Nw});var _o=P(function(Pe){Object.defineProperty(Pe,"__esModule",{value:!0});Pe.ValueScope=Pe.ValueScopeName=Pe.Scope=Pe.varKinds=Pe.UsedValueState=void 0;var be=en();class Yc extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`);this.value=e.value}}var pi;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(pi||(Pe.UsedValueState=pi={}));Pe.varKinds={const:new be.Name("const"),let:new be.Name("let"),var:new be.Name("var")};class go{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof be.Name?e:this.name(e)}name(e){return new be.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){var t,r;if(((r=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||r===void 0?void 0:r.has(e))||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}Pe.Scope=go;class yo extends be.Name{constructor(e,t){super(t);this.prefix=e}setValue(e,{property:t,itemIndex:r}){this.value=e,this.scopePath=be._`.${new be.Name(t)}[${r}]`}}Pe.ValueScopeName=yo;var Mw=be._`\n`;class Xc extends go{constructor(e){super(e);this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?Mw:be.nil}}get(){return this._scope}name(e){return new yo(e,this._newName(e))}value(e,t){var r;if(t.ref===void 0)throw Error("CodeGen: ref must be passed in value");let n=this.toName(e),{prefix:i}=n,s=(r=t.key)!==null&&r!==void 0?r:t.ref,o=this._values[i];if(o){let d=o.get(s);if(d)return d}else o=this._values[i]=new Map;o.set(s,n);let a=this._scope[i]||(this._scope[i]=[]),l=a.length;return a[l]=t.ref,n.setValue(t,{property:i,itemIndex:l}),n}getValue(e,t){let r=this._values[e];if(!r)return;return r.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(r)=>{if(r.scopePath===void 0)throw Error(`CodeGen: name "${r}" has no value`);return be._`${e}${r.scopePath}`})}scopeCode(e=this._values,t,r){return this._reduceValues(e,(n)=>{if(n.value===void 0)throw Error(`CodeGen: name "${n}" has no value`);return n.value.code},t,r)}_reduceValues(e,t,r={},n){let i=be.nil;for(let s in e){let o=e[s];if(!o)continue;let a=r[s]=r[s]||new Map;o.forEach((l)=>{if(a.has(l))return;a.set(l,pi.Started);let d=t(l);if(d){let c=this.opts.es5?Pe.varKinds.var:Pe.varKinds.const;i=be._`${i}${c} ${l} = ${d};${this.opts._n}`}else if(d=n===null||n===void 0?void 0:n(l))i=be._`${i}${d}${this.opts._n}`;else throw new Yc(l);a.set(l,pi.Completed)})}return i}}Pe.ValueScope=Xc});var O=P(function(A){Object.defineProperty(A,"__esModule",{value:!0});A.or=A.and=A.not=A.CodeGen=A.operators=A.varKinds=A.ValueScopeName=A.ValueScope=A.Scope=A.Name=A.regexpCode=A.stringify=A.getProperty=A.nil=A.strConcat=A.str=A._=void 0;var N=en(),Le=_o(),Pt=en();Object.defineProperty(A,"_",{enumerable:!0,get:function(){return Pt._}});Object.defineProperty(A,"str",{enumerable:!0,get:function(){return Pt.str}});Object.defineProperty(A,"strConcat",{enumerable:!0,get:function(){return Pt.strConcat}});Object.defineProperty(A,"nil",{enumerable:!0,get:function(){return Pt.nil}});Object.defineProperty(A,"getProperty",{enumerable:!0,get:function(){return Pt.getProperty}});Object.defineProperty(A,"stringify",{enumerable:!0,get:function(){return Pt.stringify}});Object.defineProperty(A,"regexpCode",{enumerable:!0,get:function(){return Pt.regexpCode}});Object.defineProperty(A,"Name",{enumerable:!0,get:function(){return Pt.Name}});var _i=_o();Object.defineProperty(A,"Scope",{enumerable:!0,get:function(){return _i.Scope}});Object.defineProperty(A,"ValueScope",{enumerable:!0,get:function(){return _i.ValueScope}});Object.defineProperty(A,"ValueScopeName",{enumerable:!0,get:function(){return _i.ValueScopeName}});Object.defineProperty(A,"varKinds",{enumerable:!0,get:function(){return _i.varKinds}});A.operators={GT:new N._Code(">"),GTE:new N._Code(">="),LT:new N._Code("<"),LTE:new N._Code("<="),EQ:new N._Code("==="),NEQ:new N._Code("!=="),NOT:new N._Code("!"),OR:new N._Code("||"),AND:new N._Code("&&"),ADD:new N._Code("+")};class vt{optimizeNodes(){return this}optimizeNames(e,t){return this}}class Zc extends vt{constructor(e,t,r){super();this.varKind=e,this.name=t,this.rhs=r}render({es5:e,_n:t}){let r=e?Le.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${r} ${this.name}${n};`+t}optimizeNames(e,t){if(!e[this.name.str])return;if(this.rhs)this.rhs=cr(this.rhs,e,t);return this}get names(){return this.rhs instanceof N._CodeOrName?this.rhs.names:{}}}class vo extends vt{constructor(e,t,r){super();this.lhs=e,this.rhs=t,this.sideEffects=r}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(this.lhs instanceof N.Name&&!e[this.lhs.str]&&!this.sideEffects)return;return this.rhs=cr(this.rhs,e,t),this}get names(){let e=this.lhs instanceof N.Name?{}:{...this.lhs.names};return yi(e,this.rhs)}}class eu extends vo{constructor(e,t,r,n){super(e,r,n);this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class tu extends vt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class ru extends vt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class nu extends vt{constructor(e){super();this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class iu extends vt{constructor(e){super();this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=cr(this.code,e,t),this}get names(){return this.code instanceof N._CodeOrName?this.code.names:{}}}class bi extends vt{constructor(e=[]){super();this.nodes=e}render(e){return this.nodes.reduce((t,r)=>t+r.render(e),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;while(t--){let r=e[t].optimizeNodes();if(Array.isArray(r))e.splice(t,1,...r);else if(r)e[t]=r;else e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:r}=this,n=r.length;while(n--){let i=r[n];if(i.optimizeNames(e,t))continue;Lw(e,i.names),r.splice(n,1)}return r.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>kt(e,t.names),{})}}class wt extends bi{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class su extends bi{}class tn extends wt{}tn.kind="else";class ut extends wt{constructor(e,t){super(t);this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);if(this.else)t+="else "+this.else.render(e);return t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let r=t.optimizeNodes();t=this.else=Array.isArray(r)?new tn(r):r}if(t){if(e===!1)return t instanceof ut?t:t.nodes;if(this.nodes.length)return this;return new ut(cu(e),t instanceof ut?[t]:t.nodes)}if(e===!1||!this.nodes.length)return;return this}optimizeNames(e,t){var r;if(this.else=(r=this.else)===null||r===void 0?void 0:r.optimizeNames(e,t),!(super.optimizeNames(e,t)||this.else))return;return this.condition=cr(this.condition,e,t),this}get names(){let e=super.names;if(yi(e,this.condition),this.else)kt(e,this.else.names);return e}}ut.kind="if";class dr extends wt{}dr.kind="for";class ou extends dr{constructor(e){super();this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iteration=cr(this.iteration,e,t),this}get names(){return kt(super.names,this.iteration.names)}}class au extends dr{constructor(e,t,r,n){super();this.varKind=e,this.name=t,this.from=r,this.to=n}render(e){let t=e.es5?Le.varKinds.var:this.varKind,{name:r,from:n,to:i}=this;return`for(${t} ${r}=${n}; ${r}<${i}; ${r}++)`+super.render(e)}get names(){let e=yi(super.names,this.from);return yi(e,this.to)}}class bo extends dr{constructor(e,t,r,n){super();this.loop=e,this.varKind=t,this.name=r,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iterable=cr(this.iterable,e,t),this}get names(){return kt(super.names,this.iterable.names)}}class fi extends wt{constructor(e,t,r){super();this.name=e,this.args=t,this.async=r}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}fi.kind="func";class mi extends bi{render(e){return"return "+super.render(e)}}mi.kind="return";class lu extends wt{render(e){let t="try"+super.render(e);if(this.catch)t+=this.catch.render(e);if(this.finally)t+=this.finally.render(e);return t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(e,t){var r,n;return super.optimizeNames(e,t),(r=this.catch)===null||r===void 0||r.optimizeNames(e,t),(n=this.finally)===null||n===void 0||n.optimizeNames(e,t),this}get names(){let e=super.names;if(this.catch)kt(e,this.catch.names);if(this.finally)kt(e,this.finally.names);return e}}class hi extends wt{constructor(e){super();this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}hi.kind="catch";class gi extends wt{render(e){return"finally"+super.render(e)}}gi.kind="finally";class du{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
4
|
-
`:""},this._extScope=e,this._scope=new Le.Scope({parent:e}),this._nodes=[new su]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let r=this._extScope.value(e,t);return(this._values[r.prefix]||(this._values[r.prefix]=new Set)).add(r),r}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,r,n){let i=this._scope.toName(t);if(r!==void 0&&n)this._constants[i.str]=r;return this._leafNode(new Zc(e,i,r)),i}const(e,t,r){return this._def(Le.varKinds.const,e,t,r)}let(e,t,r){return this._def(Le.varKinds.let,e,t,r)}var(e,t,r){return this._def(Le.varKinds.var,e,t,r)}assign(e,t,r){return this._leafNode(new vo(e,t,r))}add(e,t){return this._leafNode(new eu(e,A.operators.ADD,t))}code(e){if(typeof e=="function")e();else if(e!==N.nil)this._leafNode(new iu(e));return this}object(...e){let t=["{"];for(let[r,n]of e){if(t.length>1)t.push(",");if(t.push(r),r!==n||this.opts.es5)t.push(":"),(0,N.addCodeArg)(t,n)}return t.push("}"),new N._Code(t)}if(e,t,r){if(this._blockNode(new ut(e)),t&&r)this.code(t).else().code(r).endIf();else if(t)this.code(t).endIf();else if(r)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new ut(e))}else(){return this._elseNode(new tn)}endIf(){return this._endBlockNode(ut,tn)}_for(e,t){if(this._blockNode(e),t)this.code(t).endFor();return this}for(e,t){return this._for(new ou(e),t)}forRange(e,t,r,n,i=this.opts.es5?Le.varKinds.var:Le.varKinds.let){let s=this._scope.toName(e);return this._for(new au(i,s,t,r),()=>n(s))}forOf(e,t,r,n=Le.varKinds.const){let i=this._scope.toName(e);if(this.opts.es5){let s=t instanceof N.Name?t:this.var("_arr",t);return this.forRange("_i",0,N._`${s}.length`,(o)=>{this.var(i,N._`${s}[${o}]`),r(i)})}return this._for(new bo("of",n,i,t),()=>r(i))}forIn(e,t,r,n=this.opts.es5?Le.varKinds.var:Le.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,N._`Object.keys(${t})`,r);let i=this._scope.toName(e);return this._for(new bo("in",n,i,t),()=>r(i))}endFor(){return this._endBlockNode(dr)}label(e){return this._leafNode(new tu(e))}break(e){return this._leafNode(new ru(e))}return(e){let t=new mi;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(mi)}try(e,t,r){if(!t&&!r)throw Error('CodeGen: "try" without "catch" and "finally"');let n=new lu;if(this._blockNode(n),this.code(e),t){let i=this.name("e");this._currNode=n.catch=new hi(i),t(i)}if(r)this._currNode=n.finally=new gi,this.code(r);return this._endBlockNode(hi,gi)}throw(e){return this._leafNode(new nu(e))}block(e,t){if(this._blockStarts.push(this._nodes.length),e)this.code(e).endBlock(t);return this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error("CodeGen: not in self-balancing block");let r=this._nodes.length-t;if(r<0||e!==void 0&&r!==e)throw Error(`CodeGen: wrong number of nodes: ${r} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=N.nil,r,n){if(this._blockNode(new fi(e,t,r)),n)this.code(n).endFunc();return this}endFunc(){return this._endBlockNode(fi)}optimize(e=1){while(e-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let r=this._currNode;if(r instanceof e||t&&r instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof ut))throw Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}}A.CodeGen=du;function kt(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function yi(e,t){return t instanceof N._CodeOrName?kt(e,t.names):e}function cr(e,t,r){if(e instanceof N.Name)return n(e);if(!i(e))return e;return new N._Code(e._items.reduce((s,o)=>{if(o instanceof N.Name)o=n(o);if(o instanceof N._Code)s.push(...o._items);else s.push(o);return s},[]));function n(s){let o=r[s.str];if(o===void 0||t[s.str]!==1)return s;return delete t[s.str],o}function i(s){return s instanceof N._Code&&s._items.some((o)=>o instanceof N.Name&&t[o.str]===1&&r[o.str]!==void 0)}}function Lw(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function cu(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:N._`!${Po(e)}`}A.not=cu;var qw=uu(A.operators.AND);function Uw(...e){return e.reduce(qw)}A.and=Uw;var Bw=uu(A.operators.OR);function Gw(...e){return e.reduce(Bw)}A.or=Gw;function uu(e){return(t,r)=>t===N.nil?r:r===N.nil?t:N._`${Po(t)} ${e} ${Po(r)}`}function Po(e){return e instanceof N.Name?e:N._`(${e})`}});var D=P(function(k){Object.defineProperty(k,"__esModule",{value:!0});k.checkStrictMode=k.getErrorPath=k.Type=k.useFunc=k.setEvaluated=k.evaluatedPropsToName=k.mergeEvaluated=k.eachItem=k.unescapeJsonPointer=k.escapeJsonPointer=k.escapeFragment=k.unescapeFragment=k.schemaRefOrVal=k.schemaHasRulesButRef=k.schemaHasRules=k.checkUnknownRules=k.alwaysValidSchema=k.toHash=void 0;var G=O(),Vw=en();function zw(e){let t={};for(let r of e)t[r]=!0;return t}k.toHash=zw;function Kw(e,t){if(typeof t=="boolean")return t;if(Object.keys(t).length===0)return!0;return mu(e,t),!hu(t,e.self.RULES.all)}k.alwaysValidSchema=Kw;function mu(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema)return;if(typeof t==="boolean")return;let i=n.RULES.keywords;for(let s in t)if(!i[s])_u(e,`unknown keyword: "${s}"`)}k.checkUnknownRules=mu;function hu(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}k.schemaHasRules=hu;function Ww(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}k.schemaHasRulesButRef=Ww;function Hw({topSchemaRef:e,schemaPath:t},r,n,i){if(!i){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return G._`${r}`}return G._`${e}${t}${(0,G.getProperty)(n)}`}k.schemaRefOrVal=Hw;function Jw(e){return gu(decodeURIComponent(e))}k.unescapeFragment=Jw;function Qw(e){return encodeURIComponent($o(e))}k.escapeFragment=Qw;function $o(e){if(typeof e=="number")return`${e}`;return e.replace(/~/g,"~0").replace(/\//g,"~1")}k.escapeJsonPointer=$o;function gu(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}k.unescapeJsonPointer=gu;function Yw(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}k.eachItem=Yw;function pu({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(i,s,o,a)=>{let l=o===void 0?s:o instanceof G.Name?(s instanceof G.Name?e(i,s,o):t(i,s,o),o):s instanceof G.Name?(t(i,o,s),s):r(s,o);return a===G.Name&&!(l instanceof G.Name)?n(i,l):l}}k.mergeEvaluated={props:pu({mergeNames:(e,t,r)=>e.if(G._`${r} !== true && ${t} !== undefined`,()=>{e.if(G._`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,G._`${r} || {}`).code(G._`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if(G._`${r} !== true`,()=>{if(t===!0)e.assign(r,!0);else e.assign(r,G._`${r} || {}`),Io(e,r,t)}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:yu}),items:pu({mergeNames:(e,t,r)=>e.if(G._`${r} !== true && ${t} !== undefined`,()=>e.assign(r,G._`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if(G._`${r} !== true`,()=>e.assign(r,t===!0?!0:G._`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function yu(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",G._`{}`);if(t!==void 0)Io(e,r,t);return r}k.evaluatedPropsToName=yu;function Io(e,t,r){Object.keys(r).forEach((n)=>e.assign(G._`${t}${(0,G.getProperty)(n)}`,!0))}k.setEvaluated=Io;var fu={};function Xw(e,t){return e.scopeValue("func",{ref:t,code:fu[t.code]||(fu[t.code]=new Vw._Code(t.code))})}k.useFunc=Xw;var wo;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(wo||(k.Type=wo={}));function Zw(e,t,r){if(e instanceof G.Name){let n=t===wo.Num;return r?n?G._`"[" + ${e} + "]"`:G._`"['" + ${e} + "']"`:n?G._`"/" + ${e}`:G._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,G.getProperty)(e).toString():"/"+$o(e)}k.getErrorPath=Zw;function _u(e,t,r=e.opts.strictSchema){if(!r)return;if(t=`strict mode: ${t}`,r===!0)throw Error(t);e.self.logger.warn(t)}k.checkStrictMode=_u});var Ce=P(function(Eo){Object.defineProperty(Eo,"__esModule",{value:!0});var le=O(),e$={data:new le.Name("data"),valCxt:new le.Name("valCxt"),instancePath:new le.Name("instancePath"),parentData:new le.Name("parentData"),parentDataProperty:new le.Name("parentDataProperty"),rootData:new le.Name("rootData"),dynamicAnchors:new le.Name("dynamicAnchors"),vErrors:new le.Name("vErrors"),errors:new le.Name("errors"),this:new le.Name("this"),self:new le.Name("self"),scope:new le.Name("scope"),json:new le.Name("json"),jsonPos:new le.Name("jsonPos"),jsonLen:new le.Name("jsonLen"),jsonPart:new le.Name("jsonPart")};Eo.default=e$});var rn=P(function(de){Object.defineProperty(de,"__esModule",{value:!0});de.extendErrors=de.resetErrorsCount=de.reportExtraError=de.reportError=de.keyword$DataError=de.keywordError=void 0;var M=O(),Pi=D(),me=Ce();de.keywordError={message:({keyword:e})=>M.str`must pass "${e}" keyword validation`};de.keyword$DataError={message:({keyword:e,schemaType:t})=>t?M.str`"${e}" keyword must be ${t} ($data)`:M.str`"${e}" keyword is invalid ($data)`};function t$(e,t=de.keywordError,r,n){let{it:i}=e,{gen:s,compositeRule:o,allErrors:a}=i,l=vu(e,t,r);if(n!==null&&n!==void 0?n:o||a)bu(s,l);else Pu(i,M._`[${l}]`)}de.reportError=t$;function r$(e,t=de.keywordError,r){let{it:n}=e,{gen:i,compositeRule:s,allErrors:o}=n,a=vu(e,t,r);if(bu(i,a),!(s||o))Pu(n,me.default.vErrors)}de.reportExtraError=r$;function n$(e,t){e.assign(me.default.errors,t),e.if(M._`${me.default.vErrors} !== null`,()=>e.if(t,()=>e.assign(M._`${me.default.vErrors}.length`,t),()=>e.assign(me.default.vErrors,null)))}de.resetErrorsCount=n$;function i$({gen:e,keyword:t,schemaValue:r,data:n,errsCount:i,it:s}){if(i===void 0)throw Error("ajv implementation error");let o=e.name("err");e.forRange("i",i,me.default.errors,(a)=>{if(e.const(o,M._`${me.default.vErrors}[${a}]`),e.if(M._`${o}.instancePath === undefined`,()=>e.assign(M._`${o}.instancePath`,(0,M.strConcat)(me.default.instancePath,s.errorPath))),e.assign(M._`${o}.schemaPath`,M.str`${s.errSchemaPath}/${t}`),s.opts.verbose)e.assign(M._`${o}.schema`,r),e.assign(M._`${o}.data`,n)})}de.extendErrors=i$;function bu(e,t){let r=e.const("err",t);e.if(M._`${me.default.vErrors} === null`,()=>e.assign(me.default.vErrors,M._`[${r}]`),M._`${me.default.vErrors}.push(${r})`),e.code(M._`${me.default.errors}++`)}function Pu(e,t){let{gen:r,validateName:n,schemaEnv:i}=e;if(i.$async)r.throw(M._`new ${e.ValidationError}(${t})`);else r.assign(M._`${n}.errors`,t),r.return(!1)}var Dt={keyword:new M.Name("keyword"),schemaPath:new M.Name("schemaPath"),params:new M.Name("params"),propertyName:new M.Name("propertyName"),message:new M.Name("message"),schema:new M.Name("schema"),parentSchema:new M.Name("parentSchema")};function vu(e,t,r){let{createErrors:n}=e.it;if(n===!1)return M._`{}`;return s$(e,t,r)}function s$(e,t,r={}){let{gen:n,it:i}=e,s=[o$(i,r),a$(e,r)];return l$(e,t,s),n.object(...s)}function o$({errorPath:e},{instancePath:t}){let r=t?M.str`${e}${(0,Pi.getErrorPath)(t,Pi.Type.Str)}`:e;return[me.default.instancePath,(0,M.strConcat)(me.default.instancePath,r)]}function a$({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:n}){let i=n?t:M.str`${t}/${e}`;if(r)i=M.str`${i}${(0,Pi.getErrorPath)(r,Pi.Type.Str)}`;return[Dt.schemaPath,i]}function l$(e,{params:t,message:r},n){let{keyword:i,data:s,schemaValue:o,it:a}=e,{opts:l,propertyName:d,topSchemaRef:c,schemaPath:p}=a;if(n.push([Dt.keyword,i],[Dt.params,typeof t=="function"?t(e):t||M._`{}`]),l.messages)n.push([Dt.message,typeof r=="function"?r(e):r]);if(l.verbose)n.push([Dt.schema,o],[Dt.parentSchema,M._`${c}${p}`],[me.default.data,s]);if(d)n.push([Dt.propertyName,d])}});var $u=P(function(ur){Object.defineProperty(ur,"__esModule",{value:!0});ur.boolOrEmptySchema=ur.topBoolOrEmptySchema=void 0;var d$=rn(),c$=O(),u$=Ce(),p$={message:"boolean schema is false"};function f$(e){let{gen:t,schema:r,validateName:n}=e;if(r===!1)wu(e,!1);else if(typeof r=="object"&&r.$async===!0)t.return(u$.default.data);else t.assign(c$._`${n}.errors`,null),t.return(!0)}ur.topBoolOrEmptySchema=f$;function m$(e,t){let{gen:r,schema:n}=e;if(n===!1)r.var(t,!1),wu(e);else r.var(t,!0)}ur.boolOrEmptySchema=m$;function wu(e,t){let{gen:r,data:n}=e,i={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,d$.reportError)(i,p$,void 0,t)}});var So=P(function(pr){Object.defineProperty(pr,"__esModule",{value:!0});pr.getRules=pr.isJSONType=void 0;var h$=["string","number","integer","boolean","null","object","array"],g$=new Set(h$);function y$(e){return typeof e=="string"&&g$.has(e)}pr.isJSONType=y$;function _$(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}pr.getRules=_$});var xo=P(function($t){Object.defineProperty($t,"__esModule",{value:!0});$t.shouldUseRule=$t.shouldUseGroup=$t.schemaHasRulesForType=void 0;function b$({schema:e,self:t},r){let n=t.RULES.types[r];return n&&n!==!0&&Iu(e,n)}$t.schemaHasRulesForType=b$;function Iu(e,t){return t.rules.some((r)=>Eu(e,r))}$t.shouldUseGroup=Iu;function Eu(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some((n)=>e[n]!==void 0))}$t.shouldUseRule=Eu});var nn=P(function(ce){Object.defineProperty(ce,"__esModule",{value:!0});ce.reportTypeError=ce.checkDataTypes=ce.checkDataType=ce.coerceAndCheckDataType=ce.getJSONTypes=ce.getSchemaTypes=ce.DataType=void 0;var P$=So(),v$=xo(),w$=rn(),F=O(),Su=D(),fr;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(fr||(ce.DataType=fr={}));function $$(e){let t=xu(e.type);if(t.includes("null")){if(e.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(e.nullable===!0)t.push("null")}return t}ce.getSchemaTypes=$$;function xu(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(P$.isJSONType))return t;throw Error("type must be JSONType or JSONType[]: "+t.join(","))}ce.getJSONTypes=xu;function I$(e,t){let{gen:r,data:n,opts:i}=e,s=E$(t,i.coerceTypes),o=t.length>0&&!(s.length===0&&t.length===1&&(0,v$.schemaHasRulesForType)(e,t[0]));if(o){let a=Ro(t,n,i.strictNumbers,fr.Wrong);r.if(a,()=>{if(s.length)S$(e,t,s);else Co(e)})}return o}ce.coerceAndCheckDataType=I$;var ju=new Set(["string","number","integer","boolean","null"]);function E$(e,t){return t?e.filter((r)=>ju.has(r)||t==="array"&&r==="array"):[]}function S$(e,t,r){let{gen:n,data:i,opts:s}=e,o=n.let("dataType",F._`typeof ${i}`),a=n.let("coerced",F._`undefined`);if(s.coerceTypes==="array")n.if(F._`${o} == 'object' && Array.isArray(${i}) && ${i}.length == 1`,()=>n.assign(i,F._`${i}[0]`).assign(o,F._`typeof ${i}`).if(Ro(t,i,s.strictNumbers),()=>n.assign(a,i)));n.if(F._`${a} !== undefined`);for(let d of r)if(ju.has(d)||d==="array"&&s.coerceTypes==="array")l(d);n.else(),Co(e),n.endIf(),n.if(F._`${a} !== undefined`,()=>{n.assign(i,a),x$(e,a)});function l(d){switch(d){case"string":n.elseIf(F._`${o} == "number" || ${o} == "boolean"`).assign(a,F._`"" + ${i}`).elseIf(F._`${i} === null`).assign(a,F._`""`);return;case"number":n.elseIf(F._`${o} == "boolean" || ${i} === null
|
|
5
|
-
|| (${
|
|
6
|
-
|| (${
|
|
7
|
-
|| ${o} === "boolean" || ${i} === null`).assign(a,F._`[${i}]`)}}}function x$({gen:e,parentData:t,parentDataProperty:r},n){e.if(F._`${t} !== undefined`,()=>e.assign(F._`${t}[${r}]`,n))}function jo(e,t,r,n=fr.Correct){let i=n===fr.Correct?F.operators.EQ:F.operators.NEQ,s;switch(e){case"null":return F._`${t} ${i} null`;case"array":s=F._`Array.isArray(${t})`;break;case"object":s=F._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=o(F._`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=o();break;default:return F._`typeof ${t} ${i} ${e}`}return n===fr.Correct?s:(0,F.not)(s);function o(a=F.nil){return(0,F.and)(F._`typeof ${t} == "number"`,a,r?F._`isFinite(${t})`:F.nil)}}ce.checkDataType=jo;function Ro(e,t,r,n){if(e.length===1)return jo(e[0],t,r,n);let i,s=(0,Su.toHash)(e);if(s.array&&s.object){let o=F._`typeof ${t} != "object"`;i=s.null?o:F._`!${t} || ${o}`,delete s.null,delete s.array,delete s.object}else i=F.nil;if(s.number)delete s.integer;for(let o in s)i=(0,F.and)(i,jo(o,t,r,n));return i}ce.checkDataTypes=Ro;var j$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?F._`{type: ${e}}`:F._`{type: ${t}}`};function Co(e){let t=R$(e);(0,w$.reportError)(t,j$)}ce.reportTypeError=Co;function R$(e){let{gen:t,data:r,schema:n}=e,i=(0,Su.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:i,schemaValue:i,parentSchema:n,params:{},it:e}}});var Cu=P(function(vi){Object.defineProperty(vi,"__esModule",{value:!0});vi.assignDefaults=void 0;var mr=O(),C$=D();function O$(e,t){let{properties:r,items:n}=e.schema;if(t==="object"&&r)for(let i in r)Ru(e,i,r[i].default);else if(t==="array"&&Array.isArray(n))n.forEach((i,s)=>Ru(e,s,i.default))}vi.assignDefaults=O$;function Ru(e,t,r){let{gen:n,compositeRule:i,data:s,opts:o}=e;if(r===void 0)return;let a=mr._`${s}${(0,mr.getProperty)(t)}`;if(i){(0,C$.checkStrictMode)(e,`default is ignored for: ${a}`);return}let l=mr._`${a} === undefined`;if(o.useDefaults==="empty")l=mr._`${l} || ${a} === null || ${a} === ""`;n.if(l,mr._`${a} = ${(0,mr.stringify)(r)}`)}});var Oe=P(function(B){Object.defineProperty(B,"__esModule",{value:!0});B.validateUnion=B.validateArray=B.usePattern=B.callValidateCode=B.schemaProperties=B.allSchemaProperties=B.noPropertyInData=B.propertyInData=B.isOwnProperty=B.hasPropFunc=B.reportMissingProp=B.checkMissingProp=B.checkReportMissingProp=void 0;var K=O(),Oo=D(),It=Ce(),F$=D();function T$(e,t){let{gen:r,data:n,it:i}=e;r.if(To(r,n,t,i.opts.ownProperties),()=>{e.setParams({missingProperty:K._`${t}`},!0),e.error()})}B.checkReportMissingProp=T$;function A$({gen:e,data:t,it:{opts:r}},n,i){return(0,K.or)(...n.map((s)=>(0,K.and)(To(e,t,s,r.ownProperties),K._`${i} = ${s}`)))}B.checkMissingProp=A$;function k$(e,t){e.setParams({missingProperty:t},!0),e.error()}B.reportMissingProp=k$;function Ou(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:K._`Object.prototype.hasOwnProperty`})}B.hasPropFunc=Ou;function Fo(e,t,r){return K._`${Ou(e)}.call(${t}, ${r})`}B.isOwnProperty=Fo;function D$(e,t,r,n){let i=K._`${t}${(0,K.getProperty)(r)} !== undefined`;return n?K._`${i} && ${Fo(e,t,r)}`:i}B.propertyInData=D$;function To(e,t,r,n){let i=K._`${t}${(0,K.getProperty)(r)} === undefined`;return n?(0,K.or)(i,(0,K.not)(Fo(e,t,r))):i}B.noPropertyInData=To;function Fu(e){return e?Object.keys(e).filter((t)=>t!=="__proto__"):[]}B.allSchemaProperties=Fu;function N$(e,t){return Fu(t).filter((r)=>!(0,Oo.alwaysValidSchema)(e,t[r]))}B.schemaProperties=N$;function M$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:n,schemaPath:i,errorPath:s},it:o},a,l,d){let c=d?K._`${e}, ${t}, ${n}${i}`:t,p=[[It.default.instancePath,(0,K.strConcat)(It.default.instancePath,s)],[It.default.parentData,o.parentData],[It.default.parentDataProperty,o.parentDataProperty],[It.default.rootData,It.default.rootData]];if(o.opts.dynamicRef)p.push([It.default.dynamicAnchors,It.default.dynamicAnchors]);let h=K._`${c}, ${r.object(...p)}`;return l!==K.nil?K._`${a}.call(${l}, ${h})`:K._`${a}(${h})`}B.callValidateCode=M$;var L$=K._`new RegExp`;function q$({gen:e,it:{opts:t}},r){let n=t.unicodeRegExp?"u":"",{regExp:i}=t.code,s=i(r,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:K._`${i.code==="new RegExp"?L$:(0,F$.useFunc)(e,i)}(${r}, ${n})`})}B.usePattern=q$;function U$(e){let{gen:t,data:r,keyword:n,it:i}=e,s=t.name("valid");if(i.allErrors){let a=t.let("valid",!0);return o(()=>t.assign(a,!1)),a}return t.var(s,!0),o(()=>t.break()),s;function o(a){let l=t.const("len",K._`${r}.length`);t.forRange("i",0,l,(d)=>{e.subschema({keyword:n,dataProp:d,dataPropType:Oo.Type.Num},s),t.if((0,K.not)(s),a)})}}B.validateArray=U$;function B$(e){let{gen:t,schema:r,keyword:n,it:i}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(r.some((l)=>(0,Oo.alwaysValidSchema)(i,l))&&!i.opts.unevaluated)return;let o=t.let("valid",!1),a=t.name("_valid");t.block(()=>r.forEach((l,d)=>{let c=e.subschema({keyword:n,schemaProp:d,compositeRule:!0},a);if(t.assign(o,K._`${o} || ${a}`),!e.mergeValidEvaluated(c,a))t.if((0,K.not)(o))})),e.result(o,()=>e.reset(),()=>e.error(!0))}B.validateUnion=B$});var ku=P(function(Qe){Object.defineProperty(Qe,"__esModule",{value:!0});Qe.validateKeywordUsage=Qe.validSchemaType=Qe.funcKeywordCode=Qe.macroKeywordCode=void 0;var he=O(),Nt=Ce(),G$=Oe(),V$=rn();function z$(e,t){let{gen:r,keyword:n,schema:i,parentSchema:s,it:o}=e,a=t.macro.call(o.self,i,s,o),l=Au(r,n,a);if(o.opts.validateSchema!==!1)o.self.validateSchema(a,!0);let d=r.name("valid");e.subschema({schema:a,schemaPath:he.nil,errSchemaPath:`${o.errSchemaPath}/${n}`,topSchemaRef:l,compositeRule:!0},d),e.pass(d,()=>e.error(!0))}Qe.macroKeywordCode=z$;function K$(e,t){var r;let{gen:n,keyword:i,schema:s,parentSchema:o,$data:a,it:l}=e;H$(l,t);let d=!a&&t.compile?t.compile.call(l.self,s,o,l):t.validate,c=Au(n,i,d),p=n.let("valid");e.block$data(p,h),e.ok((r=t.valid)!==null&&r!==void 0?r:p);function h(){if(t.errors===!1){if(m(),t.modifying)Tu(e);g(()=>e.error())}else{let y=t.async?u():f();if(t.modifying)Tu(e);g(()=>W$(e,y))}}function u(){let y=n.let("ruleErrs",null);return n.try(()=>m(he._`await `),(b)=>n.assign(p,!1).if(he._`${b} instanceof ${l.ValidationError}`,()=>n.assign(y,he._`${b}.errors`),()=>n.throw(b))),y}function f(){let y=he._`${c}.errors`;return n.assign(y,null),m(he.nil),y}function m(y=t.async?he._`await `:he.nil){let b=l.opts.passContext?Nt.default.this:Nt.default.self,v=!(("compile"in t)&&!a||t.schema===!1);n.assign(p,he._`${y}${(0,G$.callValidateCode)(e,c,b,v)}`,t.modifying)}function g(y){var b;n.if((0,he.not)((b=t.valid)!==null&&b!==void 0?b:p),y)}}Qe.funcKeywordCode=K$;function Tu(e){let{gen:t,data:r,it:n}=e;t.if(n.parentData,()=>t.assign(r,he._`${n.parentData}[${n.parentDataProperty}]`))}function W$(e,t){let{gen:r}=e;r.if(he._`Array.isArray(${t})`,()=>{r.assign(Nt.default.vErrors,he._`${Nt.default.vErrors} === null ? ${t} : ${Nt.default.vErrors}.concat(${t})`).assign(Nt.default.errors,he._`${Nt.default.vErrors}.length`),(0,V$.extendErrors)(e)},()=>e.error())}function H$({schemaEnv:e},t){if(t.async&&!e.$async)throw Error("async keyword in sync schema")}function Au(e,t,r){if(r===void 0)throw Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,he.stringify)(r)})}function J$(e,t,r=!1){return!t.length||t.some((n)=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||r&&typeof e>"u")}Qe.validSchemaType=J$;function Q$({schema:e,opts:t,self:r,errSchemaPath:n},i,s){if(Array.isArray(i.keyword)?!i.keyword.includes(s):i.keyword!==s)throw Error("ajv implementation error");let o=i.dependencies;if(o===null||o===void 0?void 0:o.some((a)=>!Object.prototype.hasOwnProperty.call(e,a)))throw Error(`parent schema must have dependencies of ${s}: ${o.join(",")}`);if(i.validateSchema){if(!i.validateSchema(e[s])){let l=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(i.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(l);else throw Error(l)}}}Qe.validateKeywordUsage=Q$});var Nu=P(function(Et){Object.defineProperty(Et,"__esModule",{value:!0});Et.extendSubschemaMode=Et.extendSubschemaData=Et.getSubschema=void 0;var Ye=O(),Du=D();function Y$(e,{keyword:t,schemaProp:r,schema:n,schemaPath:i,errSchemaPath:s,topSchemaRef:o}){if(t!==void 0&&n!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let a=e.schema[t];return r===void 0?{schema:a,schemaPath:Ye._`${e.schemaPath}${(0,Ye.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:a[r],schemaPath:Ye._`${e.schemaPath}${(0,Ye.getProperty)(t)}${(0,Ye.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Du.escapeFragment)(r)}`}}if(n!==void 0){if(i===void 0||s===void 0||o===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:i,topSchemaRef:o,errSchemaPath:s}}throw Error('either "keyword" or "schema" must be passed')}Et.getSubschema=Y$;function X$(e,t,{dataProp:r,dataPropType:n,data:i,dataTypes:s,propertyName:o}){if(i!==void 0&&r!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=t;if(r!==void 0){let{errorPath:d,dataPathArr:c,opts:p}=t,h=a.let("data",Ye._`${t.data}${(0,Ye.getProperty)(r)}`,!0);l(h),e.errorPath=Ye.str`${d}${(0,Du.getErrorPath)(r,n,p.jsPropertySyntax)}`,e.parentDataProperty=Ye._`${r}`,e.dataPathArr=[...c,e.parentDataProperty]}if(i!==void 0){let d=i instanceof Ye.Name?i:a.let("data",i,!0);if(l(d),o!==void 0)e.propertyName=o}if(s)e.dataTypes=s;function l(d){e.data=d,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,d]}}Et.extendSubschemaData=X$;function Z$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:i,allErrors:s}){if(n!==void 0)e.compositeRule=n;if(i!==void 0)e.createErrors=i;if(s!==void 0)e.allErrors=s;e.jtdDiscriminator=t,e.jtdMetadata=r}Et.extendSubschemaMode=Z$});var Ao=P(function(Kk,Mu){Mu.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,s;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[i]))return!1;for(i=n;i--!==0;){var o=s[i];if(!e(t[o],r[o]))return!1}return!0}return t!==t&&r!==r}});var qu=P(function(Wk,Lu){var St=Lu.exports=function(e,t,r){if(typeof t=="function")r=t,t={};r=t.cb||r;var n=typeof r=="function"?r:r.pre||function(){},i=r.post||function(){};wi(t,n,i,e,"",e)};St.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};St.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};St.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};St.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function wi(e,t,r,n,i,s,o,a,l,d){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,i,s,o,a,l,d);for(var c in n){var p=n[c];if(Array.isArray(p)){if(c in St.arrayKeywords)for(var h=0;h<p.length;h++)wi(e,t,r,p[h],i+"/"+c+"/"+h,s,i,c,n,h)}else if(c in St.propsKeywords){if(p&&typeof p=="object")for(var u in p)wi(e,t,r,p[u],i+"/"+c+"/"+eI(u),s,i,c,n,u)}else if(c in St.keywords||e.allKeys&&!(c in St.skipKeywords))wi(e,t,r,p,i+"/"+c,s,i,c,n)}r(n,i,s,o,a,l,d)}}function eI(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var sn=P(function(ve){Object.defineProperty(ve,"__esModule",{value:!0});ve.getSchemaRefs=ve.resolveUrl=ve.normalizeId=ve._getFullPath=ve.getFullPath=ve.inlineRef=void 0;var tI=D(),rI=Ao(),nI=qu(),iI=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function sI(e,t=!0){if(typeof e=="boolean")return!0;if(t===!0)return!ko(e);if(!t)return!1;return Uu(e)<=t}ve.inlineRef=sI;var oI=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function ko(e){for(let t in e){if(oI.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(ko))return!0;if(typeof r=="object"&&ko(r))return!0}return!1}function Uu(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,iI.has(r))continue;if(typeof e[r]=="object")(0,tI.eachItem)(e[r],(n)=>t+=Uu(n));if(t===1/0)return 1/0}return t}function Bu(e,t="",r){if(r!==!1)t=hr(t);let n=e.parse(t);return Gu(e,n)}ve.getFullPath=Bu;function Gu(e,t){return e.serialize(t).split("#")[0]+"#"}ve._getFullPath=Gu;var aI=/#\/?$/;function hr(e){return e?e.replace(aI,""):""}ve.normalizeId=hr;function lI(e,t,r){return r=hr(r),e.resolve(t,r)}ve.resolveUrl=lI;var dI=/^[a-z_][-a-z0-9._]*$/i;function cI(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,i=hr(e[r]||t),s={"":i},o=Bu(n,i,!1),a={},l=new Set;return nI(e,{allKeys:!0},(p,h,u,f)=>{if(f===void 0)return;let m=o+h,g=s[f];if(typeof p[r]=="string")g=y.call(this,p[r]);b.call(this,p.$anchor),b.call(this,p.$dynamicAnchor),s[h]=g;function y(v){let I=this.opts.uriResolver.resolve;if(v=hr(g?I(g,v):v),l.has(v))throw c(v);l.add(v);let E=this.refs[v];if(typeof E=="string")E=this.refs[E];if(typeof E=="object")d(p,E.schema,v);else if(v!==hr(m))if(v[0]==="#")d(p,a[v],v),a[v]=p;else this.refs[v]=m;return v}function b(v){if(typeof v=="string"){if(!dI.test(v))throw Error(`invalid anchor "${v}"`);y.call(this,`#${v}`)}}}),a;function d(p,h,u){if(h!==void 0&&!rI(p,h))throw c(u)}function c(p){return Error(`reference "${p}" resolves to more than one schema`)}}ve.getSchemaRefs=cI});var gr=P(function(xt){Object.defineProperty(xt,"__esModule",{value:!0});xt.getData=xt.KeywordCxt=xt.validateFunctionCode=void 0;var Hu=$u(),Vu=nn(),No=xo(),$i=nn(),uI=Cu(),an=ku(),Do=Nu(),S=O(),C=Ce(),pI=sn(),pt=D(),on=rn();function fI(e){if(Yu(e)){if(Xu(e),Qu(e)){gI(e);return}}Ju(e,()=>(0,Hu.topBoolOrEmptySchema)(e))}xt.validateFunctionCode=fI;function Ju({gen:e,validateName:t,schema:r,schemaEnv:n,opts:i},s){if(i.code.es5)e.func(t,S._`${C.default.data}, ${C.default.valCxt}`,n.$async,()=>{e.code(S._`"use strict"; ${zu(r,i)}`),hI(e,i),e.code(s)});else e.func(t,S._`${C.default.data}, ${mI(i)}`,n.$async,()=>e.code(zu(r,i)).code(s))}function mI(e){return S._`{${C.default.instancePath}="", ${C.default.parentData}, ${C.default.parentDataProperty}, ${C.default.rootData}=${C.default.data}${e.dynamicRef?S._`, ${C.default.dynamicAnchors}={}`:S.nil}}={}`}function hI(e,t){e.if(C.default.valCxt,()=>{if(e.var(C.default.instancePath,S._`${C.default.valCxt}.${C.default.instancePath}`),e.var(C.default.parentData,S._`${C.default.valCxt}.${C.default.parentData}`),e.var(C.default.parentDataProperty,S._`${C.default.valCxt}.${C.default.parentDataProperty}`),e.var(C.default.rootData,S._`${C.default.valCxt}.${C.default.rootData}`),t.dynamicRef)e.var(C.default.dynamicAnchors,S._`${C.default.valCxt}.${C.default.dynamicAnchors}`)},()=>{if(e.var(C.default.instancePath,S._`""`),e.var(C.default.parentData,S._`undefined`),e.var(C.default.parentDataProperty,S._`undefined`),e.var(C.default.rootData,C.default.data),t.dynamicRef)e.var(C.default.dynamicAnchors,S._`{}`)})}function gI(e){let{schema:t,opts:r,gen:n}=e;Ju(e,()=>{if(r.$comment&&t.$comment)ep(e);if(vI(e),n.let(C.default.vErrors,null),n.let(C.default.errors,0),r.unevaluated)yI(e);Zu(e),II(e)});return}function yI(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",S._`${r}.evaluated`),t.if(S._`${e.evaluated}.dynamicProps`,()=>t.assign(S._`${e.evaluated}.props`,S._`undefined`)),t.if(S._`${e.evaluated}.dynamicItems`,()=>t.assign(S._`${e.evaluated}.items`,S._`undefined`))}function zu(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?S._`/*# sourceURL=${r} */`:S.nil}function _I(e,t){if(Yu(e)){if(Xu(e),Qu(e)){bI(e,t);return}}(0,Hu.boolOrEmptySchema)(e,t)}function Qu({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function Yu(e){return typeof e.schema!="boolean"}function bI(e,t){let{schema:r,gen:n,opts:i}=e;if(i.$comment&&r.$comment)ep(e);wI(e),$I(e);let s=n.const("_errs",C.default.errors);Zu(e,s),n.var(t,S._`${s} === ${C.default.errors}`)}function Xu(e){(0,pt.checkUnknownRules)(e),PI(e)}function Zu(e,t){if(e.opts.jtd)return Ku(e,[],!1,t);let r=(0,Vu.getSchemaTypes)(e.schema),n=(0,Vu.coerceAndCheckDataType)(e,r);Ku(e,r,!n,t)}function PI(e){let{schema:t,errSchemaPath:r,opts:n,self:i}=e;if(t.$ref&&n.ignoreKeywordsWithRef&&(0,pt.schemaHasRulesButRef)(t,i.RULES))i.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function vI(e){let{schema:t,opts:r}=e;if(t.default!==void 0&&r.useDefaults&&r.strictSchema)(0,pt.checkStrictMode)(e,"default is ignored in the schema root")}function wI(e){let t=e.schema[e.opts.schemaId];if(t)e.baseId=(0,pI.resolveUrl)(e.opts.uriResolver,e.baseId,t)}function $I(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error("async schema in sync schema")}function ep({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:i}){let s=r.$comment;if(i.$comment===!0)e.code(S._`${C.default.self}.logger.log(${s})`);else if(typeof i.$comment=="function"){let o=S.str`${n}/$comment`,a=e.scopeValue("root",{ref:t.root});e.code(S._`${C.default.self}.opts.$comment(${s}, ${o}, ${a}.schema)`)}}function II(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:i,opts:s}=e;if(r.$async)t.if(S._`${C.default.errors} === 0`,()=>t.return(C.default.data),()=>t.throw(S._`new ${i}(${C.default.vErrors})`));else{if(t.assign(S._`${n}.errors`,C.default.vErrors),s.unevaluated)EI(e);t.return(S._`${C.default.errors} === 0`)}}function EI({gen:e,evaluated:t,props:r,items:n}){if(r instanceof S.Name)e.assign(S._`${t}.props`,r);if(n instanceof S.Name)e.assign(S._`${t}.items`,n)}function Ku(e,t,r,n){let{gen:i,schema:s,data:o,allErrors:a,opts:l,self:d}=e,{RULES:c}=d;if(s.$ref&&(l.ignoreKeywordsWithRef||!(0,pt.schemaHasRulesButRef)(s,c))){i.block(()=>rp(e,"$ref",c.all.$ref.definition));return}if(!l.jtd)SI(e,t);i.block(()=>{for(let h of c.rules)p(h);p(c.post)});function p(h){if(!(0,No.shouldUseGroup)(s,h))return;if(h.type){if(i.if((0,$i.checkDataType)(h.type,o,l.strictNumbers)),Wu(e,h),t.length===1&&t[0]===h.type&&r)i.else(),(0,$i.reportTypeError)(e);i.endIf()}else Wu(e,h);if(!a)i.if(S._`${C.default.errors} === ${n||0}`)}}function Wu(e,t){let{gen:r,schema:n,opts:{useDefaults:i}}=e;if(i)(0,uI.assignDefaults)(e,t.type);r.block(()=>{for(let s of t.rules)if((0,No.shouldUseRule)(n,s))rp(e,s.keyword,s.definition,t.type)})}function SI(e,t){if(e.schemaEnv.meta||!e.opts.strictTypes)return;if(xI(e,t),!e.opts.allowUnionTypes)jI(e,t);RI(e,e.dataTypes)}function xI(e,t){if(!t.length)return;if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach((r)=>{if(!tp(e.dataTypes,r))Mo(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),OI(e,t)}function jI(e,t){if(t.length>1&&!(t.length===2&&t.includes("null")))Mo(e,"use allowUnionTypes to allow union type keyword")}function RI(e,t){let r=e.self.RULES.all;for(let n in r){let i=r[n];if(typeof i=="object"&&(0,No.shouldUseRule)(e.schema,i)){let{type:s}=i.definition;if(s.length&&!s.some((o)=>CI(t,o)))Mo(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function CI(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function tp(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function OI(e,t){let r=[];for(let n of e.dataTypes)if(tp(t,n))r.push(n);else if(t.includes("integer")&&n==="number")r.push("integer");e.dataTypes=r}function Mo(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,pt.checkStrictMode)(e,t,e.opts.strictTypes)}class Lo{constructor(e,t,r){if((0,an.validateKeywordUsage)(e,t,r),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=r,this.data=e.data,this.schema=e.schema[r],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,pt.schemaRefOrVal)(e,this.schema,r,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",np(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,an.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw Error(`${r} value must be ${JSON.stringify(t.schemaType)}`);if("code"in t?t.trackErrors:t.errors!==!1)this.errsCount=e.gen.const("_errs",C.default.errors)}result(e,t,r){this.failResult((0,S.not)(e),t,r)}failResult(e,t,r){if(this.gen.if(e),r)r();else this.error();if(t){if(this.gen.else(),t(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(e,t){this.failResult((0,S.not)(e),void 0,t)}fail(e){if(e===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(e),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail(S._`${t} !== undefined && (${(0,S.or)(this.invalid$data(),e)})`)}error(e,t,r){if(t){this.setParams(t),this._error(e,r),this.setParams({});return}this._error(e,r)}_error(e,t){(e?on.reportExtraError:on.reportError)(this,this.def.error,t)}$dataError(){(0,on.reportError)(this,this.def.$dataError||on.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,on.resetErrorsCount)(this.gen,this.errsCount)}ok(e){if(!this.allErrors)this.gen.if(e)}setParams(e,t){if(t)Object.assign(this.params,e);else this.params=e}block$data(e,t,r=S.nil){this.gen.block(()=>{this.check$data(e,r),t()})}check$data(e=S.nil,t=S.nil){if(!this.$data)return;let{gen:r,schemaCode:n,schemaType:i,def:s}=this;if(r.if((0,S.or)(S._`${n} === undefined`,t)),e!==S.nil)r.assign(e,!0);if(i.length||s.validateSchema){if(r.elseIf(this.invalid$data()),this.$dataError(),e!==S.nil)r.assign(e,!1)}r.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:r,def:n,it:i}=this;return(0,S.or)(s(),o());function s(){if(r.length){if(!(t instanceof S.Name))throw Error("ajv implementation error");let a=Array.isArray(r)?r:[r];return S._`${(0,$i.checkDataTypes)(a,t,i.opts.strictNumbers,$i.DataType.Wrong)}`}return S.nil}function o(){if(n.validateSchema){let a=e.scopeValue("validate$data",{ref:n.validateSchema});return S._`!${a}(${t})`}return S.nil}}subschema(e,t){let r=(0,Do.getSubschema)(this.it,e);(0,Do.extendSubschemaData)(r,this.it,e),(0,Do.extendSubschemaMode)(r,e);let n={...this.it,...r,items:void 0,props:void 0};return _I(n,t),n}mergeEvaluated(e,t){let{it:r,gen:n}=this;if(!r.opts.unevaluated)return;if(r.props!==!0&&e.props!==void 0)r.props=pt.mergeEvaluated.props(n,e.props,r.props,t);if(r.items!==!0&&e.items!==void 0)r.items=pt.mergeEvaluated.items(n,e.items,r.items,t)}mergeValidEvaluated(e,t){let{it:r,gen:n}=this;if(r.opts.unevaluated&&(r.props!==!0||r.items!==!0))return n.if(t,()=>this.mergeEvaluated(e,S.Name)),!0}}xt.KeywordCxt=Lo;function rp(e,t,r,n){let i=new Lo(e,r,t);if("code"in r)r.code(i,n);else if(i.$data&&r.validate)(0,an.funcKeywordCode)(i,r);else if("macro"in r)(0,an.macroKeywordCode)(i,r);else if(r.compile||r.validate)(0,an.funcKeywordCode)(i,r)}var FI=/^\/(?:[^~]|~0|~1)*$/,TI=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function np(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let i,s;if(e==="")return C.default.rootData;if(e[0]==="/"){if(!FI.test(e))throw Error(`Invalid JSON-pointer: ${e}`);i=e,s=C.default.rootData}else{let d=TI.exec(e);if(!d)throw Error(`Invalid JSON-pointer: ${e}`);let c=+d[1];if(i=d[2],i==="#"){if(c>=t)throw Error(l("property/index",c));return n[t-c]}if(c>t)throw Error(l("data",c));if(s=r[t-c],!i)return s}let o=s,a=i.split("/");for(let d of a)if(d)s=S._`${s}${(0,S.getProperty)((0,pt.unescapeJsonPointer)(d))}`,o=S._`${o} && ${s}`;return o;function l(d,c){return`Cannot access ${d} ${c} levels up, current level is ${t}`}}xt.getData=np});var ln=P(function(qo){Object.defineProperty(qo,"__esModule",{value:!0});class ip extends Error{constructor(e){super("validation failed");this.errors=e,this.ajv=this.validation=!0}}qo.default=ip});var yr=P(function(Bo){Object.defineProperty(Bo,"__esModule",{value:!0});var Uo=sn();class sp extends Error{constructor(e,t,r,n){super(n||`can't resolve reference ${r} from id ${t}`);this.missingRef=(0,Uo.resolveUrl)(e,t,r),this.missingSchema=(0,Uo.normalizeId)((0,Uo.getFullPath)(e,this.missingRef))}}Bo.default=sp});var cn=P(function(Fe){Object.defineProperty(Fe,"__esModule",{value:!0});Fe.resolveSchema=Fe.getCompilingSchema=Fe.resolveRef=Fe.compileSchema=Fe.SchemaEnv=void 0;var qe=O(),AI=ln(),Mt=Ce(),Ue=sn(),op=D(),kI=gr();class dn{constructor(e){var t;this.refs={},this.dynamicAnchors={};let r;if(typeof e.schema=="object")r=e.schema;this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(t=e.baseId)!==null&&t!==void 0?t:(0,Ue.normalizeId)(r===null||r===void 0?void 0:r[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=r===null||r===void 0?void 0:r.$async,this.refs={}}}Fe.SchemaEnv=dn;function Vo(e){let t=ap.call(this,e);if(t)return t;let r=(0,Ue.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:i}=this.opts.code,{ownProperties:s}=this.opts,o=new qe.CodeGen(this.scope,{es5:n,lines:i,ownProperties:s}),a;if(e.$async)a=o.scopeValue("Error",{ref:AI.default,code:qe._`require("ajv/dist/runtime/validation_error").default`});let l=o.scopeName("validate");e.validateName=l;let d={gen:o,allErrors:this.opts.allErrors,data:Mt.default.data,parentData:Mt.default.parentData,parentDataProperty:Mt.default.parentDataProperty,dataNames:[Mt.default.data],dataPathArr:[qe.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:o.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,qe.stringify)(e.schema)}:{ref:e.schema}),validateName:l,ValidationError:a,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:qe.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:qe._`""`,opts:this.opts,self:this},c;try{this._compilations.add(e),(0,kI.validateFunctionCode)(d),o.optimize(this.opts.code.optimize);let p=o.toString();if(c=`${o.scopeRefs(Mt.default.scope)}return ${p}`,this.opts.code.process)c=this.opts.code.process(c,e);let u=Function(`${Mt.default.self}`,`${Mt.default.scope}`,c)(this,this.scope.get());if(this.scope.value(l,{ref:u}),u.errors=null,u.schema=e.schema,u.schemaEnv=e,e.$async)u.$async=!0;if(this.opts.code.source===!0)u.source={validateName:l,validateCode:p,scopeValues:o._values};if(this.opts.unevaluated){let{props:f,items:m}=d;if(u.evaluated={props:f instanceof qe.Name?void 0:f,items:m instanceof qe.Name?void 0:m,dynamicProps:f instanceof qe.Name,dynamicItems:m instanceof qe.Name},u.source)u.source.evaluated=(0,qe.stringify)(u.evaluated)}return e.validate=u,e}catch(p){if(delete e.validate,delete e.validateName,c)this.logger.error("Error compiling schema, function code:",c);throw p}finally{this._compilations.delete(e)}}Fe.compileSchema=Vo;function DI(e,t,r){var n;r=(0,Ue.resolveUrl)(this.opts.uriResolver,t,r);let i=e.refs[r];if(i)return i;let s=LI.call(this,e,r);if(s===void 0){let o=(n=e.localRefs)===null||n===void 0?void 0:n[r],{schemaId:a}=this.opts;if(o)s=new dn({schema:o,schemaId:a,root:e,baseId:t})}if(s===void 0)return;return e.refs[r]=NI.call(this,s)}Fe.resolveRef=DI;function NI(e){if((0,Ue.inlineRef)(e.schema,this.opts.inlineRefs))return e.schema;return e.validate?e:Vo.call(this,e)}function ap(e){for(let t of this._compilations)if(MI(t,e))return t}Fe.getCompilingSchema=ap;function MI(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function LI(e,t){let r;while(typeof(r=this.refs[t])=="string")t=r;return r||this.schemas[t]||Ii.call(this,e,t)}function Ii(e,t){let r=this.opts.uriResolver.parse(t),n=(0,Ue._getFullPath)(this.opts.uriResolver,r),i=(0,Ue.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===i)return Go.call(this,r,e);let s=(0,Ue.normalizeId)(n),o=this.refs[s]||this.schemas[s];if(typeof o=="string"){let a=Ii.call(this,e,o);if(typeof(a===null||a===void 0?void 0:a.schema)!=="object")return;return Go.call(this,r,a)}if(typeof(o===null||o===void 0?void 0:o.schema)!=="object")return;if(!o.validate)Vo.call(this,o);if(s===(0,Ue.normalizeId)(t)){let{schema:a}=o,{schemaId:l}=this.opts,d=a[l];if(d)i=(0,Ue.resolveUrl)(this.opts.uriResolver,i,d);return new dn({schema:a,schemaId:l,root:e,baseId:i})}return Go.call(this,r,o)}Fe.resolveSchema=Ii;var qI=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function Go(e,{baseId:t,schema:r,root:n}){var i;if(((i=e.fragment)===null||i===void 0?void 0:i[0])!=="/")return;for(let a of e.fragment.slice(1).split("/")){if(typeof r==="boolean")return;let l=r[(0,op.unescapeFragment)(a)];if(l===void 0)return;r=l;let d=typeof r==="object"&&r[this.opts.schemaId];if(!qI.has(a)&&d)t=(0,Ue.resolveUrl)(this.opts.uriResolver,t,d)}let s;if(typeof r!="boolean"&&r.$ref&&!(0,op.schemaHasRulesButRef)(r,this.RULES)){let a=(0,Ue.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=Ii.call(this,n,a)}let{schemaId:o}=this.opts;if(s=s||new dn({schema:r,schemaId:o,root:n,baseId:t}),s.schema!==s.root.schema)return s;return}});var lp=P(function(Zk,UI){UI.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var Ko=P(function(eD,pp){var BI=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),cp=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function zo(e){let t="",r=0,n=0;for(n=0;n<e.length;n++){if(r=e[n].charCodeAt(0),r===48)continue;if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}var GI=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function dp(e){return e.length=0,!0}function VI(e,t,r){if(e.length){let n=zo(e);if(n!=="")t.push(n);else return r.error=!0,!1;e.length=0}return!0}function zI(e){let t=0,r={error:!1,address:"",zone:""},n=[],i=[],s=!1,o=!1,a=VI;for(let l=0;l<e.length;l++){let d=e[l];if(d==="["||d==="]")continue;if(d===":"){if(s===!0)o=!0;if(!a(i,n,r))break;if(++t>7){r.error=!0;break}if(l>0&&e[l-1]===":")s=!0;n.push(":");continue}else if(d==="%"){if(!a(i,n,r))break;a=dp}else{i.push(d);continue}}if(i.length)if(a===dp)r.zone=i.join("");else if(o)n.push(i.join(""));else n.push(zo(i));return r.address=n.join(""),r}function up(e){if(KI(e,":")<2)return{host:e,isIPV6:!1};let t=zI(e);if(!t.error){let{address:r,address:n}=t;if(t.zone)r+="%"+t.zone,n+="%25"+t.zone;return{host:r,isIPV6:!0,escapedHost:n}}else return{host:e,isIPV6:!1}}function KI(e,t){let r=0;for(let n=0;n<e.length;n++)if(e[n]===t)r++;return r}function WI(e){let t=e,r=[],n=-1,i=0;while(i=t.length){if(i===1)if(t===".")break;else if(t==="/"){r.push("/");break}else{r.push(t);break}else if(i===2){if(t[0]==="."){if(t[1]===".")break;else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."||t[1]==="/"){r.push("/");break}}}else if(i===3){if(t==="/.."){if(r.length!==0)r.pop();r.push("/");break}}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."){if(t[3]==="/"){if(t=t.slice(3),r.length!==0)r.pop();continue}}}}if((n=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")}function HI(e,t){let r=t!==!0?escape:unescape;if(e.scheme!==void 0)e.scheme=r(e.scheme);if(e.userinfo!==void 0)e.userinfo=r(e.userinfo);if(e.host!==void 0)e.host=r(e.host);if(e.path!==void 0)e.path=r(e.path);if(e.query!==void 0)e.query=r(e.query);if(e.fragment!==void 0)e.fragment=r(e.fragment);return e}function JI(e){let t=[];if(e.userinfo!==void 0)t.push(e.userinfo),t.push("@");if(e.host!==void 0){let r=unescape(e.host);if(!cp(r)){let n=up(r);if(n.isIPV6===!0)r=`[${n.escapedHost}]`;else r=e.host}t.push(r)}if(typeof e.port==="number"||typeof e.port==="string")t.push(":"),t.push(String(e.port));return t.length?t.join(""):void 0}pp.exports={nonSimpleDomain:GI,recomposeAuthority:JI,normalizeComponentEncoding:HI,removeDotSegments:WI,isIPv4:cp,isUUID:BI,normalizeIPv6:up,stringArrayToHexStripped:zo}});var yp=P(function(tD,gp){var{isUUID:QI}=Ko(),YI=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,XI=["http","https","ws","wss","urn","urn:uuid"];function ZI(e){return XI.indexOf(e)!==-1}function Wo(e){if(e.secure===!0)return!0;else if(e.secure===!1)return!1;else if(e.scheme)return e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S");else return!1}function fp(e){if(!e.host)e.error=e.error||"HTTP URIs must have a host.";return e}function mp(e){let t=String(e.scheme).toLowerCase()==="https";if(e.port===(t?443:80)||e.port==="")e.port=void 0;if(!e.path)e.path="/";return e}function eE(e){return e.secure=Wo(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function tE(e){if(e.port===(Wo(e)?443:80)||e.port==="")e.port=void 0;if(typeof e.secure==="boolean")e.scheme=e.secure?"wss":"ws",e.secure=void 0;if(e.resourceName){let[t,r]=e.resourceName.split("?");e.path=t&&t!=="/"?t:void 0,e.query=r,e.resourceName=void 0}return e.fragment=void 0,e}function rE(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(YI);if(r){let n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let i=`${n}:${t.nid||e.nid}`,s=Ho(i);if(e.path=void 0,s)e=s.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e}function nE(e,t){if(e.nid===void 0)throw Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),i=`${r}:${t.nid||n}`,s=Ho(i);if(s)e=s.serialize(e,t);let o=e,a=e.nss;return o.path=`${n||t.nid}:${a}`,t.skipEscape=!0,o}function iE(e,t){let r=e;if(r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!QI(r.uuid)))r.error=r.error||"UUID is not valid.";return r}function sE(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var hp={scheme:"http",domainHost:!0,parse:fp,serialize:mp},oE={scheme:"https",domainHost:hp.domainHost,parse:fp,serialize:mp},Ei={scheme:"ws",domainHost:!0,parse:eE,serialize:tE},aE={scheme:"wss",domainHost:Ei.domainHost,parse:Ei.parse,serialize:Ei.serialize},lE={scheme:"urn",parse:rE,serialize:nE,skipNormalize:!0},dE={scheme:"urn:uuid",parse:iE,serialize:sE,skipNormalize:!0},Si={http:hp,https:oE,ws:Ei,wss:aE,urn:lE,"urn:uuid":dE};Object.setPrototypeOf(Si,null);function Ho(e){return e&&(Si[e]||Si[e.toLowerCase()])||void 0}gp.exports={wsIsSecure:Wo,SCHEMES:Si,isValidSchemeName:ZI,getSchemeHandler:Ho}});var Pp=P(function(rD,ji){var{normalizeIPv6:cE,removeDotSegments:un,recomposeAuthority:uE,normalizeComponentEncoding:xi,isIPv4:pE,nonSimpleDomain:fE}=Ko(),{SCHEMES:mE,getSchemeHandler:_p}=yp();function hE(e,t){if(typeof e==="string")e=Xe(ft(e,t),t);else if(typeof e==="object")e=ft(Xe(e,t),t);return e}function gE(e,t,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},i=bp(ft(e,n),ft(t,n),n,!0);return n.skipEscape=!0,Xe(i,n)}function bp(e,t,r,n){let i={};if(!n)e=ft(Xe(e,r),r),t=ft(Xe(t,r),r);if(r=r||{},!r.tolerant&&t.scheme)i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=un(t.path||""),i.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=un(t.path||""),i.query=t.query;else{if(!t.path)if(i.path=e.path,t.query!==void 0)i.query=t.query;else i.query=e.query;else{if(t.path[0]==="/")i.path=un(t.path);else{if((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path)i.path="/"+t.path;else if(!e.path)i.path=t.path;else i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path;i.path=un(i.path)}i.query=t.query}i.userinfo=e.userinfo,i.host=e.host,i.port=e.port}i.scheme=e.scheme}return i.fragment=t.fragment,i}function yE(e,t,r){if(typeof e==="string")e=unescape(e),e=Xe(xi(ft(e,r),!0),{...r,skipEscape:!0});else if(typeof e==="object")e=Xe(xi(e,!0),{...r,skipEscape:!0});if(typeof t==="string")t=unescape(t),t=Xe(xi(ft(t,r),!0),{...r,skipEscape:!0});else if(typeof t==="object")t=Xe(xi(t,!0),{...r,skipEscape:!0});return e.toLowerCase()===t.toLowerCase()}function Xe(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),i=[],s=_p(n.scheme||r.scheme);if(s&&s.serialize)s.serialize(r,n);if(r.path!==void 0)if(!n.skipEscape){if(r.path=escape(r.path),r.scheme!==void 0)r.path=r.path.split("%3A").join(":")}else r.path=unescape(r.path);if(n.reference!=="suffix"&&r.scheme)i.push(r.scheme,":");let o=uE(r);if(o!==void 0){if(n.reference!=="suffix")i.push("//");if(i.push(o),r.path&&r.path[0]!=="/")i.push("/")}if(r.path!==void 0){let a=r.path;if(!n.absolutePath&&(!s||!s.absolutePath))a=un(a);if(o===void 0&&a[0]==="/"&&a[1]==="/")a="/%2F"+a.slice(2);i.push(a)}if(r.query!==void 0)i.push("?",r.query);if(r.fragment!==void 0)i.push("#",r.fragment);return i.join("")}var _E=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function ft(e,t){let r=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},i=!1;if(r.reference==="suffix")if(r.scheme)e=r.scheme+":"+e;else e="//"+e;let s=e.match(_E);if(s){if(n.scheme=s[1],n.userinfo=s[3],n.host=s[4],n.port=parseInt(s[5],10),n.path=s[6]||"",n.query=s[7],n.fragment=s[8],isNaN(n.port))n.port=s[5];if(n.host)if(pE(n.host)===!1){let l=cE(n.host);n.host=l.host.toLowerCase(),i=l.isIPV6}else i=!0;if(n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path)n.reference="same-document";else if(n.scheme===void 0)n.reference="relative";else if(n.fragment===void 0)n.reference="absolute";else n.reference="uri";if(r.reference&&r.reference!=="suffix"&&r.reference!==n.reference)n.error=n.error||"URI is not a "+r.reference+" reference.";let o=_p(r.scheme||n.scheme);if(!r.unicodeSupport&&(!o||!o.unicodeSupport)){if(n.host&&(r.domainHost||o&&o.domainHost)&&i===!1&&fE(n.host))try{n.host=URL.domainToASCII(n.host.toLowerCase())}catch(a){n.error=n.error||"Host's domain name can not be converted to ASCII: "+a}}if(!o||o&&!o.skipNormalize){if(e.indexOf("%")!==-1){if(n.scheme!==void 0)n.scheme=unescape(n.scheme);if(n.host!==void 0)n.host=unescape(n.host)}if(n.path)n.path=escape(unescape(n.path));if(n.fragment)n.fragment=encodeURI(decodeURIComponent(n.fragment))}if(o&&o.parse)o.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return n}var Jo={SCHEMES:mE,normalize:hE,resolve:gE,resolveComponent:bp,equal:yE,serialize:Xe,parse:ft};ji.exports=Jo;ji.exports.default=Jo;ji.exports.fastUri=Jo});var wp=P(function(Qo){Object.defineProperty(Qo,"__esModule",{value:!0});var vp=Pp();vp.code='require("ajv/dist/runtime/uri").default';Qo.default=vp});var Zo=P(function(ie){Object.defineProperty(ie,"__esModule",{value:!0});ie.CodeGen=ie.Name=ie.nil=ie.stringify=ie.str=ie._=ie.KeywordCxt=void 0;var bE=gr();Object.defineProperty(ie,"KeywordCxt",{enumerable:!0,get:function(){return bE.KeywordCxt}});var _r=O();Object.defineProperty(ie,"_",{enumerable:!0,get:function(){return _r._}});Object.defineProperty(ie,"str",{enumerable:!0,get:function(){return _r.str}});Object.defineProperty(ie,"stringify",{enumerable:!0,get:function(){return _r.stringify}});Object.defineProperty(ie,"nil",{enumerable:!0,get:function(){return _r.nil}});Object.defineProperty(ie,"Name",{enumerable:!0,get:function(){return _r.Name}});Object.defineProperty(ie,"CodeGen",{enumerable:!0,get:function(){return _r.CodeGen}});var PE=ln(),xp=yr(),vE=So(),pn=cn(),wE=O(),fn=sn(),Ri=nn(),Xo=D(),$p=lp(),$E=wp(),jp=(e,t)=>new RegExp(e,t);jp.code="new RegExp";var IE=["removeAdditional","useDefaults","coerceTypes"],EE=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),SE={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},xE={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},Ip=200;function jE(e){var t,r,n,i,s,o,a,l,d,c,p,h,u,f,m,g,y,b,v,I,E,w,x,T,R;let V=e.strict,Q=(t=e.code)===null||t===void 0?void 0:t.optimize,ee=Q===!0||Q===void 0?1:Q||0,je=(n=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:jp,Hr=(i=e.uriResolver)!==null&&i!==void 0?i:$E.default;return{strictSchema:(o=(s=e.strictSchema)!==null&&s!==void 0?s:V)!==null&&o!==void 0?o:!0,strictNumbers:(l=(a=e.strictNumbers)!==null&&a!==void 0?a:V)!==null&&l!==void 0?l:!0,strictTypes:(c=(d=e.strictTypes)!==null&&d!==void 0?d:V)!==null&&c!==void 0?c:"log",strictTuples:(h=(p=e.strictTuples)!==null&&p!==void 0?p:V)!==null&&h!==void 0?h:"log",strictRequired:(f=(u=e.strictRequired)!==null&&u!==void 0?u:V)!==null&&f!==void 0?f:!1,code:e.code?{...e.code,optimize:ee,regExp:je}:{optimize:ee,regExp:je},loopRequired:(m=e.loopRequired)!==null&&m!==void 0?m:Ip,loopEnum:(g=e.loopEnum)!==null&&g!==void 0?g:Ip,meta:(y=e.meta)!==null&&y!==void 0?y:!0,messages:(b=e.messages)!==null&&b!==void 0?b:!0,inlineRefs:(v=e.inlineRefs)!==null&&v!==void 0?v:!0,schemaId:(I=e.schemaId)!==null&&I!==void 0?I:"$id",addUsedSchema:(E=e.addUsedSchema)!==null&&E!==void 0?E:!0,validateSchema:(w=e.validateSchema)!==null&&w!==void 0?w:!0,validateFormats:(x=e.validateFormats)!==null&&x!==void 0?x:!0,unicodeRegExp:(T=e.unicodeRegExp)!==null&&T!==void 0?T:!0,int32range:(R=e.int32range)!==null&&R!==void 0?R:!0,uriResolver:Hr}}class Ci{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...jE(e)};let{es5:t,lines:r}=this.opts.code;this.scope=new wE.ValueScope({scope:{},prefixes:EE,es5:t,lines:r}),this.logger=AE(e.logger);let n=e.validateFormats;if(e.validateFormats=!1,this.RULES=(0,vE.getRules)(),Ep.call(this,SE,e,"NOT SUPPORTED"),Ep.call(this,xE,e,"DEPRECATED","warn"),this._metaOpts=FE.call(this),e.formats)CE.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords)OE.call(this,e.keywords);if(typeof e.meta=="object")this.addMetaSchema(e.meta);RE.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:r}=this.opts,n=$p;if(r==="id")n={...$p},n.id=n.$id,delete n.$id;if(t&&e)this.addMetaSchema(n,n[r],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[t]||e:void 0}validate(e,t){let r;if(typeof e=="string"){if(r=this.getSchema(e),!r)throw Error(`no schema with key or ref "${e}"`)}else r=this.compile(e);let n=r(t);if(!("$async"in r))this.errors=r.errors;return n}compile(e,t){let r=this._addSchema(e,t);return r.validate||this._compileSchemaEnv(r)}compileAsync(e,t){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:r}=this.opts;return n.call(this,e,t);async function n(d,c){await i.call(this,d.$schema);let p=this._addSchema(d,c);return p.validate||s.call(this,p)}async function i(d){if(d&&!this.getSchema(d))await n.call(this,{$ref:d},!0)}async function s(d){try{return this._compileSchemaEnv(d)}catch(c){if(!(c instanceof xp.default))throw c;return o.call(this,c),await a.call(this,c.missingSchema),s.call(this,d)}}function o({missingSchema:d,missingRef:c}){if(this.refs[d])throw Error(`AnySchema ${d} is loaded but ${c} cannot be resolved`)}async function a(d){let c=await l.call(this,d);if(!this.refs[d])await i.call(this,c.$schema);if(!this.refs[d])this.addSchema(c,d,t)}async function l(d){let c=this._loading[d];if(c)return c;try{return await(this._loading[d]=r(d))}finally{delete this._loading[d]}}}addSchema(e,t,r,n=this.opts.validateSchema){if(Array.isArray(e)){for(let s of e)this.addSchema(s,void 0,r,n);return this}let i;if(typeof e==="object"){let{schemaId:s}=this.opts;if(i=e[s],i!==void 0&&typeof i!="string")throw Error(`schema ${s} must be string`)}return t=(0,fn.normalizeId)(t||i),this._checkUnique(t),this.schemas[t]=this._addSchema(e,r,t,n,!0),this}addMetaSchema(e,t,r=this.opts.validateSchema){return this.addSchema(e,t,!0,r),this}validateSchema(e,t){if(typeof e=="boolean")return!0;let r;if(r=e.$schema,r!==void 0&&typeof r!="string")throw Error("$schema must be a string");if(r=r||this.opts.defaultMeta||this.defaultMeta(),!r)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let n=this.validate(r,e);if(!n&&t){let i="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(i);else throw Error(i)}return n}getSchema(e){let t;while(typeof(t=Sp.call(this,e))=="string")e=t;if(t===void 0){let{schemaId:r}=this.opts,n=new pn.SchemaEnv({schema:{},schemaId:r});if(t=pn.resolveSchema.call(this,n,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=Sp.call(this,e);if(typeof t=="object")this._cache.delete(t.schema);return delete this.schemas[e],delete this.refs[e],this}case"object":{let t=e;this._cache.delete(t);let r=e[this.opts.schemaId];if(r)r=(0,fn.normalizeId)(r),delete this.schemas[r],delete this.refs[r];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let r;if(typeof e=="string"){if(r=e,typeof t=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=r}else if(typeof e=="object"&&t===void 0){if(t=e,r=t.keyword,Array.isArray(r)&&!r.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(DE.call(this,r,t),!t)return(0,Xo.eachItem)(r,(i)=>Yo.call(this,i)),this;ME.call(this,t);let n={...t,type:(0,Ri.getJSONTypes)(t.type),schemaType:(0,Ri.getJSONTypes)(t.schemaType)};return(0,Xo.eachItem)(r,n.type.length===0?(i)=>Yo.call(this,i,n):(i)=>n.type.forEach((s)=>Yo.call(this,i,n,s))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t=="object"?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let r of t.rules){let n=r.rules.findIndex((i)=>i.keyword===e);if(n>=0)r.rules.splice(n,1)}return this}addFormat(e,t){if(typeof t=="string")t=new RegExp(t);return this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:r="data"}={}){if(!e||e.length===0)return"No errors";return e.map((n)=>`${r}${n.instancePath} ${n.message}`).reduce((n,i)=>n+t+i)}$dataMetaSchema(e,t){let r=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let n of t){let i=n.split("/").slice(1),s=e;for(let o of i)s=s[o];for(let o in r){let a=r[o];if(typeof a!="object")continue;let{$data:l}=a.definition,d=s[o];if(l&&d)s[o]=Rp(d)}}return e}_removeAllSchemas(e,t){for(let r in e){let n=e[r];if(!t||t.test(r)){if(typeof n=="string")delete e[r];else if(n&&!n.meta)this._cache.delete(n.schema),delete e[r]}}}_addSchema(e,t,r,n=this.opts.validateSchema,i=this.opts.addUsedSchema){let s,{schemaId:o}=this.opts;if(typeof e=="object")s=e[o];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof e!="boolean")throw Error("schema must be object or boolean");let a=this._cache.get(e);if(a!==void 0)return a;r=(0,fn.normalizeId)(s||r);let l=fn.getSchemaRefs.call(this,e,r);if(a=new pn.SchemaEnv({schema:e,schemaId:o,meta:t,baseId:r,localRefs:l}),this._cache.set(a.schema,a),i&&!r.startsWith("#")){if(r)this._checkUnique(r);this.refs[r]=a}if(n)this.validateSchema(e,!0);return a}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta)this._compileMetaSchema(e);else pn.compileSchema.call(this,e);if(!e.validate)throw Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{pn.compileSchema.call(this,e)}finally{this.opts=t}}}Ci.ValidationError=PE.default;Ci.MissingRefError=xp.default;ie.default=Ci;function Ep(e,t,r,n="error"){for(let i in e){let s=i;if(s in t)this.logger[n](`${r}: option ${i}. ${e[s]}`)}}function Sp(e){return e=(0,fn.normalizeId)(e),this.schemas[e]||this.refs[e]}function RE(){let e=this.opts.schemas;if(!e)return;if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function CE(){for(let e in this.opts.formats){let t=this.opts.formats[e];if(t)this.addFormat(e,t)}}function OE(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];if(!r.keyword)r.keyword=t;this.addKeyword(r)}}function FE(){let e={...this.opts};for(let t of IE)delete e[t];return e}var TE={log(){},warn(){},error(){}};function AE(e){if(e===!1)return TE;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw Error("logger must implement log, warn and error methods")}var kE=/^[a-z_$][a-z0-9_$:-]*$/i;function DE(e,t){let{RULES:r}=this;if((0,Xo.eachItem)(e,(n)=>{if(r.keywords[n])throw Error(`Keyword ${n} is already defined`);if(!kE.test(n))throw Error(`Keyword ${n} has invalid name`)}),!t)return;if(t.$data&&!(("code"in t)||("validate"in t)))throw Error('$data keyword must have "code" or "validate" function')}function Yo(e,t,r){var n;let i=t===null||t===void 0?void 0:t.post;if(r&&i)throw Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,o=i?s.post:s.rules.find(({type:l})=>l===r);if(!o)o={type:r,rules:[]},s.rules.push(o);if(s.keywords[e]=!0,!t)return;let a={keyword:e,definition:{...t,type:(0,Ri.getJSONTypes)(t.type),schemaType:(0,Ri.getJSONTypes)(t.schemaType)}};if(t.before)NE.call(this,o,a,t.before);else o.rules.push(a);s.all[e]=a,(n=t.implements)===null||n===void 0||n.forEach((l)=>this.addKeyword(l))}function NE(e,t,r){let n=e.rules.findIndex((i)=>i.keyword===r);if(n>=0)e.rules.splice(n,0,t);else e.rules.push(t),this.logger.warn(`rule ${r} is not defined`)}function ME(e){let{metaSchema:t}=e;if(t===void 0)return;if(e.$data&&this.opts.$data)t=Rp(t);e.validateSchema=this.compile(t,!0)}var LE={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Rp(e){return{anyOf:[e,LE]}}});var Cp=P(function(ea){Object.defineProperty(ea,"__esModule",{value:!0});var qE={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};ea.default=qE});var Ti=P(function(Lt){Object.defineProperty(Lt,"__esModule",{value:!0});Lt.callRef=Lt.getValidate=void 0;var UE=yr(),Op=Oe(),we=O(),br=Ce(),Fp=cn(),Oi=D(),BE={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:n}=e,{baseId:i,schemaEnv:s,validateName:o,opts:a,self:l}=n,{root:d}=s;if((r==="#"||r==="#/")&&i===d.baseId)return p();let c=Fp.resolveRef.call(l,d,i,r);if(c===void 0)throw new UE.default(n.opts.uriResolver,i,r);if(c instanceof Fp.SchemaEnv)return h(c);return u(c);function p(){if(s===d)return Fi(e,o,s,s.$async);let f=t.scopeValue("root",{ref:d});return Fi(e,we._`${f}.validate`,d,d.$async)}function h(f){let m=Tp(e,f);Fi(e,m,f,f.$async)}function u(f){let m=t.scopeValue("schema",a.code.source===!0?{ref:f,code:(0,we.stringify)(f)}:{ref:f}),g=t.name("valid"),y=e.subschema({schema:f,dataTypes:[],schemaPath:we.nil,topSchemaRef:m,errSchemaPath:r},g);e.mergeEvaluated(y),e.ok(g)}}};function Tp(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):we._`${r.scopeValue("wrapper",{ref:t})}.validate`}Lt.getValidate=Tp;function Fi(e,t,r,n){let{gen:i,it:s}=e,{allErrors:o,schemaEnv:a,opts:l}=s,d=l.passContext?br.default.this:we.nil;if(n)c();else p();function c(){if(!a.$async)throw Error("async schema referenced by sync schema");let f=i.let("valid");i.try(()=>{if(i.code(we._`await ${(0,Op.callValidateCode)(e,t,d)}`),u(t),!o)i.assign(f,!0)},(m)=>{if(i.if(we._`!(${m} instanceof ${s.ValidationError})`,()=>i.throw(m)),h(m),!o)i.assign(f,!1)}),e.ok(f)}function p(){e.result((0,Op.callValidateCode)(e,t,d),()=>u(t),()=>h(t))}function h(f){let m=we._`${f}.errors`;i.assign(br.default.vErrors,we._`${br.default.vErrors} === null ? ${m} : ${br.default.vErrors}.concat(${m})`),i.assign(br.default.errors,we._`${br.default.vErrors}.length`)}function u(f){var m;if(!s.opts.unevaluated)return;let g=(m=r===null||r===void 0?void 0:r.validate)===null||m===void 0?void 0:m.evaluated;if(s.props!==!0)if(g&&!g.dynamicProps){if(g.props!==void 0)s.props=Oi.mergeEvaluated.props(i,g.props,s.props)}else{let y=i.var("props",we._`${f}.evaluated.props`);s.props=Oi.mergeEvaluated.props(i,y,s.props,we.Name)}if(s.items!==!0)if(g&&!g.dynamicItems){if(g.items!==void 0)s.items=Oi.mergeEvaluated.items(i,g.items,s.items)}else{let y=i.var("items",we._`${f}.evaluated.items`);s.items=Oi.mergeEvaluated.items(i,y,s.items,we.Name)}}}Lt.callRef=Fi;Lt.default=BE});var ra=P(function(ta){Object.defineProperty(ta,"__esModule",{value:!0});var GE=Cp(),VE=Ti(),zE=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",GE.default,VE.default];ta.default=zE});var Ap=P(function(na){Object.defineProperty(na,"__esModule",{value:!0});var Ai=O(),jt=Ai.operators,ki={maximum:{okStr:"<=",ok:jt.LTE,fail:jt.GT},minimum:{okStr:">=",ok:jt.GTE,fail:jt.LT},exclusiveMaximum:{okStr:"<",ok:jt.LT,fail:jt.GTE},exclusiveMinimum:{okStr:">",ok:jt.GT,fail:jt.LTE}},KE={message:({keyword:e,schemaCode:t})=>Ai.str`must be ${ki[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>Ai._`{comparison: ${ki[e].okStr}, limit: ${t}}`},WE={keyword:Object.keys(ki),type:"number",schemaType:"number",$data:!0,error:KE,code(e){let{keyword:t,data:r,schemaCode:n}=e;e.fail$data(Ai._`${r} ${ki[t].fail} ${n} || isNaN(${r})`)}};na.default=WE});var kp=P(function(ia){Object.defineProperty(ia,"__esModule",{value:!0});var mn=O(),HE={message:({schemaCode:e})=>mn.str`must be multiple of ${e}`,params:({schemaCode:e})=>mn._`{multipleOf: ${e}}`},JE={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:HE,code(e){let{gen:t,data:r,schemaCode:n,it:i}=e,s=i.opts.multipleOfPrecision,o=t.let("res"),a=s?mn._`Math.abs(Math.round(${o}) - ${o}) > 1e-${s}`:mn._`${o} !== parseInt(${o})`;e.fail$data(mn._`(${n} === 0 || (${o} = ${r}/${n}, ${a}))`)}};ia.default=JE});var Np=P(function(sa){Object.defineProperty(sa,"__esModule",{value:!0});function Dp(e){let t=e.length,r=0,n=0,i;while(n<t)if(r++,i=e.charCodeAt(n++),i>=55296&&i<=56319&&n<t){if(i=e.charCodeAt(n),(i&64512)===56320)n++}return r}sa.default=Dp;Dp.code='require("ajv/dist/runtime/ucs2length").default'});var Mp=P(function(oa){Object.defineProperty(oa,"__esModule",{value:!0});var qt=O(),QE=D(),YE=Np(),XE={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return qt.str`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>qt._`{limit: ${e}}`},ZE={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:XE,code(e){let{keyword:t,data:r,schemaCode:n,it:i}=e,s=t==="maxLength"?qt.operators.GT:qt.operators.LT,o=i.opts.unicode===!1?qt._`${r}.length`:qt._`${(0,QE.useFunc)(e.gen,YE.default)}(${r})`;e.fail$data(qt._`${o} ${s} ${n}`)}};oa.default=ZE});var Lp=P(function(aa){Object.defineProperty(aa,"__esModule",{value:!0});var eS=Oe(),Di=O(),tS={message:({schemaCode:e})=>Di.str`must match pattern "${e}"`,params:({schemaCode:e})=>Di._`{pattern: ${e}}`},rS={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:tS,code(e){let{data:t,$data:r,schema:n,schemaCode:i,it:s}=e,o=s.opts.unicodeRegExp?"u":"",a=r?Di._`(new RegExp(${i}, ${o}))`:(0,eS.usePattern)(e,n);e.fail$data(Di._`!${a}.test(${t})`)}};aa.default=rS});var qp=P(function(la){Object.defineProperty(la,"__esModule",{value:!0});var hn=O(),nS={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return hn.str`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>hn._`{limit: ${e}}`},iS={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:nS,code(e){let{keyword:t,data:r,schemaCode:n}=e,i=t==="maxProperties"?hn.operators.GT:hn.operators.LT;e.fail$data(hn._`Object.keys(${r}).length ${i} ${n}`)}};la.default=iS});var Up=P(function(da){Object.defineProperty(da,"__esModule",{value:!0});var gn=Oe(),yn=O(),sS=D(),oS={message:({params:{missingProperty:e}})=>yn.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>yn._`{missingProperty: ${e}}`},aS={keyword:"required",type:"object",schemaType:"array",$data:!0,error:oS,code(e){let{gen:t,schema:r,schemaCode:n,data:i,$data:s,it:o}=e,{opts:a}=o;if(!s&&r.length===0)return;let l=r.length>=a.loopRequired;if(o.allErrors)d();else c();if(a.strictRequired){let u=e.parentSchema.properties,{definedProperties:f}=e.it;for(let m of r)if((u===null||u===void 0?void 0:u[m])===void 0&&!f.has(m)){let g=o.schemaEnv.baseId+o.errSchemaPath,y=`required property "${m}" is not defined at "${g}" (strictRequired)`;(0,sS.checkStrictMode)(o,y,o.opts.strictRequired)}}function d(){if(l||s)e.block$data(yn.nil,p);else for(let u of r)(0,gn.checkReportMissingProp)(e,u)}function c(){let u=t.let("missing");if(l||s){let f=t.let("valid",!0);e.block$data(f,()=>h(u,f)),e.ok(f)}else t.if((0,gn.checkMissingProp)(e,r,u)),(0,gn.reportMissingProp)(e,u),t.else()}function p(){t.forOf("prop",n,(u)=>{e.setParams({missingProperty:u}),t.if((0,gn.noPropertyInData)(t,i,u,a.ownProperties),()=>e.error())})}function h(u,f){e.setParams({missingProperty:u}),t.forOf(u,n,()=>{t.assign(f,(0,gn.propertyInData)(t,i,u,a.ownProperties)),t.if((0,yn.not)(f),()=>{e.error(),t.break()})},yn.nil)}}};da.default=aS});var Bp=P(function(ca){Object.defineProperty(ca,"__esModule",{value:!0});var _n=O(),lS={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return _n.str`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>_n._`{limit: ${e}}`},dS={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:lS,code(e){let{keyword:t,data:r,schemaCode:n}=e,i=t==="maxItems"?_n.operators.GT:_n.operators.LT;e.fail$data(_n._`${r}.length ${i} ${n}`)}};ca.default=dS});var Ni=P(function(ua){Object.defineProperty(ua,"__esModule",{value:!0});var Gp=Ao();Gp.code='require("ajv/dist/runtime/equal").default';ua.default=Gp});var Vp=P(function(fa){Object.defineProperty(fa,"__esModule",{value:!0});var pa=nn(),se=O(),cS=D(),uS=Ni(),pS={message:({params:{i:e,j:t}})=>se.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>se._`{i: ${e}, j: ${t}}`},fS={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:pS,code(e){let{gen:t,data:r,$data:n,schema:i,parentSchema:s,schemaCode:o,it:a}=e;if(!n&&!i)return;let l=t.let("valid"),d=s.items?(0,pa.getSchemaTypes)(s.items):[];e.block$data(l,c,se._`${o} === false`),e.ok(l);function c(){let f=t.let("i",se._`${r}.length`),m=t.let("j");e.setParams({i:f,j:m}),t.assign(l,!0),t.if(se._`${f} > 1`,()=>(p()?h:u)(f,m))}function p(){return d.length>0&&!d.some((f)=>f==="object"||f==="array")}function h(f,m){let g=t.name("item"),y=(0,pa.checkDataTypes)(d,g,a.opts.strictNumbers,pa.DataType.Wrong),b=t.const("indices",se._`{}`);t.for(se._`;${f}--;`,()=>{if(t.let(g,se._`${r}[${f}]`),t.if(y,se._`continue`),d.length>1)t.if(se._`typeof ${g} == "string"`,se._`${g} += "_"`);t.if(se._`typeof ${b}[${g}] == "number"`,()=>{t.assign(m,se._`${b}[${g}]`),e.error(),t.assign(l,!1).break()}).code(se._`${b}[${g}] = ${f}`)})}function u(f,m){let g=(0,cS.useFunc)(t,uS.default),y=t.name("outer");t.label(y).for(se._`;${f}--;`,()=>t.for(se._`${m} = ${f}; ${m}--;`,()=>t.if(se._`${g}(${r}[${f}], ${r}[${m}])`,()=>{e.error(),t.assign(l,!1).break(y)})))}}};fa.default=fS});var zp=P(function(ha){Object.defineProperty(ha,"__esModule",{value:!0});var ma=O(),mS=D(),hS=Ni(),gS={message:"must be equal to constant",params:({schemaCode:e})=>ma._`{allowedValue: ${e}}`},yS={keyword:"const",$data:!0,error:gS,code(e){let{gen:t,data:r,$data:n,schemaCode:i,schema:s}=e;if(n||s&&typeof s=="object")e.fail$data(ma._`!${(0,mS.useFunc)(t,hS.default)}(${r}, ${i})`);else e.fail(ma._`${s} !== ${r}`)}};ha.default=yS});var Kp=P(function(ga){Object.defineProperty(ga,"__esModule",{value:!0});var bn=O(),_S=D(),bS=Ni(),PS={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>bn._`{allowedValues: ${e}}`},vS={keyword:"enum",schemaType:"array",$data:!0,error:PS,code(e){let{gen:t,data:r,$data:n,schema:i,schemaCode:s,it:o}=e;if(!n&&i.length===0)throw Error("enum must have non-empty array");let a=i.length>=o.opts.loopEnum,l,d=()=>l!==null&&l!==void 0?l:l=(0,_S.useFunc)(t,bS.default),c;if(a||n)c=t.let("valid"),e.block$data(c,p);else{if(!Array.isArray(i))throw Error("ajv implementation error");let u=t.const("vSchema",s);c=(0,bn.or)(...i.map((f,m)=>h(u,m)))}e.pass(c);function p(){t.assign(c,!1),t.forOf("v",s,(u)=>t.if(bn._`${d()}(${r}, ${u})`,()=>t.assign(c,!0).break()))}function h(u,f){let m=i[f];return typeof m==="object"&&m!==null?bn._`${d()}(${r}, ${u}[${f}])`:bn._`${r} === ${m}`}}};ga.default=vS});var _a=P(function(ya){Object.defineProperty(ya,"__esModule",{value:!0});var wS=Ap(),$S=kp(),IS=Mp(),ES=Lp(),SS=qp(),xS=Up(),jS=Bp(),RS=Vp(),CS=zp(),OS=Kp(),FS=[wS.default,$S.default,IS.default,ES.default,SS.default,xS.default,jS.default,RS.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},CS.default,OS.default];ya.default=FS});var Pa=P(function(Pn){Object.defineProperty(Pn,"__esModule",{value:!0});Pn.validateAdditionalItems=void 0;var Ut=O(),ba=D(),TS={message:({params:{len:e}})=>Ut.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Ut._`{limit: ${e}}`},AS={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:TS,code(e){let{parentSchema:t,it:r}=e,{items:n}=t;if(!Array.isArray(n)){(0,ba.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}Wp(e,n)}};function Wp(e,t){let{gen:r,schema:n,data:i,keyword:s,it:o}=e;o.items=!0;let a=r.const("len",Ut._`${i}.length`);if(n===!1)e.setParams({len:t.length}),e.pass(Ut._`${a} <= ${t.length}`);else if(typeof n=="object"&&!(0,ba.alwaysValidSchema)(o,n)){let d=r.var("valid",Ut._`${a} <= ${t.length}`);r.if((0,Ut.not)(d),()=>l(d)),e.ok(d)}function l(d){r.forRange("i",t.length,a,(c)=>{if(e.subschema({keyword:s,dataProp:c,dataPropType:ba.Type.Num},d),!o.allErrors)r.if((0,Ut.not)(d),()=>r.break())})}}Pn.validateAdditionalItems=Wp;Pn.default=AS});var va=P(function(vn){Object.defineProperty(vn,"__esModule",{value:!0});vn.validateTuple=void 0;var Hp=O(),Mi=D(),kS=Oe(),DS={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return Jp(e,"additionalItems",t);if(r.items=!0,(0,Mi.alwaysValidSchema)(r,t))return;e.ok((0,kS.validateArray)(e))}};function Jp(e,t,r=e.schema){let{gen:n,parentSchema:i,data:s,keyword:o,it:a}=e;if(c(i),a.opts.unevaluated&&r.length&&a.items!==!0)a.items=Mi.mergeEvaluated.items(n,r.length,a.items);let l=n.name("valid"),d=n.const("len",Hp._`${s}.length`);r.forEach((p,h)=>{if((0,Mi.alwaysValidSchema)(a,p))return;n.if(Hp._`${d} > ${h}`,()=>e.subschema({keyword:o,schemaProp:h,dataProp:h},l)),e.ok(l)});function c(p){let{opts:h,errSchemaPath:u}=a,f=r.length,m=f===p.minItems&&(f===p.maxItems||p[t]===!1);if(h.strictTuples&&!m){let g=`"${o}" is ${f}-tuple, but minItems or maxItems/${t} are not specified or different at path "${u}"`;(0,Mi.checkStrictMode)(a,g,h.strictTuples)}}}vn.validateTuple=Jp;vn.default=DS});var Qp=P(function(wa){Object.defineProperty(wa,"__esModule",{value:!0});var NS=va(),MS={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(e)=>(0,NS.validateTuple)(e,"items")};wa.default=MS});var Xp=P(function($a){Object.defineProperty($a,"__esModule",{value:!0});var Yp=O(),LS=D(),qS=Oe(),US=Pa(),BS={message:({params:{len:e}})=>Yp.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Yp._`{limit: ${e}}`},GS={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:BS,code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:i}=r;if(n.items=!0,(0,LS.alwaysValidSchema)(n,t))return;if(i)(0,US.validateAdditionalItems)(e,i);else e.ok((0,qS.validateArray)(e))}};$a.default=GS});var Zp=P(function(Ia){Object.defineProperty(Ia,"__esModule",{value:!0});var Te=O(),Li=D(),VS={message:({params:{min:e,max:t}})=>t===void 0?Te.str`must contain at least ${e} valid item(s)`:Te.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?Te._`{minContains: ${e}}`:Te._`{minContains: ${e}, maxContains: ${t}}`},zS={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:VS,code(e){let{gen:t,schema:r,parentSchema:n,data:i,it:s}=e,o,a,{minContains:l,maxContains:d}=n;if(s.opts.next)o=l===void 0?1:l,a=d;else o=1;let c=t.const("len",Te._`${i}.length`);if(e.setParams({min:o,max:a}),a===void 0&&o===0){(0,Li.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&o>a){(0,Li.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,Li.alwaysValidSchema)(s,r)){let m=Te._`${c} >= ${o}`;if(a!==void 0)m=Te._`${m} && ${c} <= ${a}`;e.pass(m);return}s.items=!0;let p=t.name("valid");if(a===void 0&&o===1)u(p,()=>t.if(p,()=>t.break()));else if(o===0){if(t.let(p,!0),a!==void 0)t.if(Te._`${i}.length > 0`,h)}else t.let(p,!1),h();e.result(p,()=>e.reset());function h(){let m=t.name("_valid"),g=t.let("count",0);u(m,()=>t.if(m,()=>f(g)))}function u(m,g){t.forRange("i",0,c,(y)=>{e.subschema({keyword:"contains",dataProp:y,dataPropType:Li.Type.Num,compositeRule:!0},m),g()})}function f(m){if(t.code(Te._`${m}++`),a===void 0)t.if(Te._`${m} >= ${o}`,()=>t.assign(p,!0).break());else if(t.if(Te._`${m} > ${a}`,()=>t.assign(p,!1).break()),o===1)t.assign(p,!0);else t.if(Te._`${m} >= ${o}`,()=>t.assign(p,!0))}}};Ia.default=zS});var qi=P(function(Ze){Object.defineProperty(Ze,"__esModule",{value:!0});Ze.validateSchemaDeps=Ze.validatePropertyDeps=Ze.error=void 0;var Ea=O(),KS=D(),wn=Oe();Ze.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let n=t===1?"property":"properties";return Ea.str`must have ${n} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:n}})=>Ea._`{property: ${e},
|
|
3
|
+
(function(exports, require, module, __filename, __dirname) {var YW=Object.create;var{getPrototypeOf:NW,defineProperty:hr,getOwnPropertyNames:XW}=Object;var SW=Object.prototype.hasOwnProperty;function xW(e){return this[e]}var JW,EW,be=(e,t,i)=>{var n=e!=null&&typeof e==="object";if(n){var o=t?JW??=new WeakMap:EW??=new WeakMap,s=o.get(e);if(s)return s}i=e!=null?YW(NW(e)):{};let r=t||!e||!e.__esModule?hr(i,"default",{value:e,enumerable:!0}):i;if(e&&typeof e==="object"||typeof e==="function"){for(let g of XW(e))if(!SW.call(r,g))hr(r,g,{get:xW.bind(e,g),enumerable:!0})}if(n)o.set(e,r);return r};var y=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var UW=(e)=>e;function OW(e,t){this[e]=UW.bind(null,t)}var TW=(e,t)=>{for(var i in t)hr(e,i,{get:t[i],enumerable:!0,configurable:!0,set:OW.bind(t,i)})};var bn=y(function(J){Object.defineProperty(J,"__esModule",{value:!0});J.regexpCode=J.getEsmExportName=J.getProperty=J.safeStringify=J.stringify=J.strConcat=J.addCodeArg=J.str=J._=J.nil=J._Code=J.Name=J.IDENTIFIER=J._CodeOrName=void 0;class ko{}J._CodeOrName=ko;J.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class bi extends ko{constructor(e){super();if(!J.IDENTIFIER.test(e))throw Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}J.Name=bi;class Ue extends ko{constructor(e){super();this._items=typeof e==="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((t,i)=>`${t}${i}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((t,i)=>{if(i instanceof bi)t[i.str]=(t[i.str]||0)+1;return t},{})}}J._Code=Ue;J.nil=new Ue("");function Ed(e,...t){let i=[e[0]],n=0;while(n<t.length)Ur(i,t[n]),i.push(e[++n]);return new Ue(i)}J._=Ed;var Er=new Ue("+");function Ud(e,...t){let i=[Zn(e[0])],n=0;while(n<t.length)i.push(Er),Ur(i,t[n]),i.push(Er,Zn(e[++n]));return aB(i),new Ue(i)}J.str=Ud;function Ur(e,t){if(t instanceof Ue)e.push(...t._items);else if(t instanceof bi)e.push(t);else e.push(dB(t))}J.addCodeArg=Ur;function aB(e){let t=1;while(t<e.length-1){if(e[t]===Er){let i=lB(e[t-1],e[t+1]);if(i!==void 0){e.splice(t-1,3,i);continue}e[t++]="+"}t++}}function lB(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string"){if(t instanceof bi||e[e.length-1]!=='"')return;if(typeof t!="string")return`${e.slice(0,-1)}${t}"`;if(t[0]==='"')return e.slice(0,-1)+t.slice(1);return}if(typeof t=="string"&&t[0]==='"'&&!(e instanceof bi))return`"${e}${t.slice(1)}`;return}function IB(e,t){return t.emptyStr()?e:e.emptyStr()?t:Ud`${e}${t}`}J.strConcat=IB;function dB(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:Zn(Array.isArray(e)?e.join(","):e)}function cB(e){return new Ue(Zn(e))}J.stringify=cB;function Zn(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}J.safeStringify=Zn;function CB(e){return typeof e=="string"&&J.IDENTIFIER.test(e)?new Ue(`.${e}`):Ed`[${e}]`}J.getProperty=CB;function uB(e){if(typeof e=="string"&&J.IDENTIFIER.test(e))return new Ue(`${e}`);throw Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}J.getEsmExportName=uB;function mB(e){return new Ue(e.toString())}J.regexpCode=mB});var zr=y(function(he){Object.defineProperty(he,"__esModule",{value:!0});he.ValueScope=he.ValueScopeName=he.Scope=he.varKinds=he.UsedValueState=void 0;var We=bn();class Od extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`);this.value=e.value}}var Po;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(Po||(he.UsedValueState=Po={}));he.varKinds={const:new We.Name("const"),let:new We.Name("let"),var:new We.Name("var")};class Or{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof We.Name?e:this.name(e)}name(e){return new We.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){var t,i;if(((i=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||i===void 0?void 0:i.has(e))||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}he.Scope=Or;class Tr extends We.Name{constructor(e,t){super(t);this.prefix=e}setValue(e,{property:t,itemIndex:i}){this.value=e,this.scopePath=We._`.${new We.Name(t)}[${i}]`}}he.ValueScopeName=Tr;var pB=We._`\n`;class Td extends Or{constructor(e){super(e);this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?pB:We.nil}}get(){return this._scope}name(e){return new Tr(e,this._newName(e))}value(e,t){var i;if(t.ref===void 0)throw Error("CodeGen: ref must be passed in value");let n=this.toName(e),{prefix:o}=n,s=(i=t.key)!==null&&i!==void 0?i:t.ref,r=this._values[o];if(r){let l=r.get(s);if(l)return l}else r=this._values[o]=new Map;r.set(s,n);let g=this._scope[o]||(this._scope[o]=[]),a=g.length;return g[a]=t.ref,n.setValue(t,{property:o,itemIndex:a}),n}getValue(e,t){let i=this._values[e];if(!i)return;return i.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(i)=>{if(i.scopePath===void 0)throw Error(`CodeGen: name "${i}" has no value`);return We._`${e}${i.scopePath}`})}scopeCode(e=this._values,t,i){return this._reduceValues(e,(n)=>{if(n.value===void 0)throw Error(`CodeGen: name "${n}" has no value`);return n.value.code},t,i)}_reduceValues(e,t,i={},n){let o=We.nil;for(let s in e){let r=e[s];if(!r)continue;let g=i[s]=i[s]||new Map;r.forEach((a)=>{if(g.has(a))return;g.set(a,Po.Started);let l=t(a);if(l){let I=this.opts.es5?he.varKinds.var:he.varKinds.const;o=We._`${o}${I} ${a} = ${l};${this.opts._n}`}else if(l=n===null||n===void 0?void 0:n(a))o=We._`${o}${l}${this.opts._n}`;else throw new Od(a);g.set(a,Po.Completed)})}return o}}he.ValueScope=Td});var v=y(function(P){Object.defineProperty(P,"__esModule",{value:!0});P.or=P.and=P.not=P.CodeGen=P.operators=P.varKinds=P.ValueScopeName=P.ValueScope=P.Scope=P.Name=P.regexpCode=P.stringify=P.getProperty=P.nil=P.strConcat=P.str=P._=void 0;var X=bn(),Oe=zr(),Bt=bn();Object.defineProperty(P,"_",{enumerable:!0,get:function(){return Bt._}});Object.defineProperty(P,"str",{enumerable:!0,get:function(){return Bt.str}});Object.defineProperty(P,"strConcat",{enumerable:!0,get:function(){return Bt.strConcat}});Object.defineProperty(P,"nil",{enumerable:!0,get:function(){return Bt.nil}});Object.defineProperty(P,"getProperty",{enumerable:!0,get:function(){return Bt.getProperty}});Object.defineProperty(P,"stringify",{enumerable:!0,get:function(){return Bt.stringify}});Object.defineProperty(P,"regexpCode",{enumerable:!0,get:function(){return Bt.regexpCode}});Object.defineProperty(P,"Name",{enumerable:!0,get:function(){return Bt.Name}});var Jo=zr();Object.defineProperty(P,"Scope",{enumerable:!0,get:function(){return Jo.Scope}});Object.defineProperty(P,"ValueScope",{enumerable:!0,get:function(){return Jo.ValueScope}});Object.defineProperty(P,"ValueScopeName",{enumerable:!0,get:function(){return Jo.ValueScopeName}});Object.defineProperty(P,"varKinds",{enumerable:!0,get:function(){return Jo.varKinds}});P.operators={GT:new X._Code(">"),GTE:new X._Code(">="),LT:new X._Code("<"),LTE:new X._Code("<="),EQ:new X._Code("==="),NEQ:new X._Code("!=="),NOT:new X._Code("!"),OR:new X._Code("||"),AND:new X._Code("&&"),ADD:new X._Code("+")};class Rt{optimizeNodes(){return this}optimizeNames(e,t){return this}}class zd extends Rt{constructor(e,t,i){super();this.varKind=e,this.name=t,this.rhs=i}render({es5:e,_n:t}){let i=e?Oe.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${i} ${this.name}${n};`+t}optimizeNames(e,t){if(!e[this.name.str])return;if(this.rhs)this.rhs=hi(this.rhs,e,t);return this}get names(){return this.rhs instanceof X._CodeOrName?this.rhs.names:{}}}class Qr extends Rt{constructor(e,t,i){super();this.lhs=e,this.rhs=t,this.sideEffects=i}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(this.lhs instanceof X.Name&&!e[this.lhs.str]&&!this.sideEffects)return;return this.rhs=hi(this.rhs,e,t),this}get names(){let e=this.lhs instanceof X.Name?{}:{...this.lhs.names};return xo(e,this.rhs)}}class jd extends Qr{constructor(e,t,i,n){super(e,i,n);this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class Dd extends Rt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class Qd extends Rt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class _d extends Rt{constructor(e){super();this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class Kd extends Rt{constructor(e){super();this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=hi(this.code,e,t),this}get names(){return this.code instanceof X._CodeOrName?this.code.names:{}}}class Eo extends Rt{constructor(e=[]){super();this.nodes=e}render(e){return this.nodes.reduce((t,i)=>t+i.render(e),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;while(t--){let i=e[t].optimizeNodes();if(Array.isArray(i))e.splice(t,1,...i);else if(i)e[t]=i;else e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:i}=this,n=i.length;while(n--){let o=i[n];if(o.optimizeNames(e,t))continue;AB(e,o.names),i.splice(n,1)}return i.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>Ot(e,t.names),{})}}class Gt extends Eo{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class Ld extends Eo{}class Wn extends Gt{}Wn.kind="else";class mt extends Gt{constructor(e,t){super(t);this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);if(this.else)t+="else "+this.else.render(e);return t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let i=t.optimizeNodes();t=this.else=Array.isArray(i)?new Wn(i):i}if(t){if(e===!1)return t instanceof mt?t:t.nodes;if(this.nodes.length)return this;return new mt(tc(e),t instanceof mt?[t]:t.nodes)}if(e===!1||!this.nodes.length)return;return this}optimizeNames(e,t){var i;if(this.else=(i=this.else)===null||i===void 0?void 0:i.optimizeNames(e,t),!(super.optimizeNames(e,t)||this.else))return;return this.condition=hi(this.condition,e,t),this}get names(){let e=super.names;if(xo(e,this.condition),this.else)Ot(e,this.else.names);return e}}mt.kind="if";class Wi extends Gt{}Wi.kind="for";class Md extends Wi{constructor(e){super();this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iteration=hi(this.iteration,e,t),this}get names(){return Ot(super.names,this.iteration.names)}}class $d extends Wi{constructor(e,t,i,n){super();this.varKind=e,this.name=t,this.from=i,this.to=n}render(e){let t=e.es5?Oe.varKinds.var:this.varKind,{name:i,from:n,to:o}=this;return`for(${t} ${i}=${n}; ${i}<${o}; ${i}++)`+super.render(e)}get names(){let e=xo(super.names,this.from);return xo(e,this.to)}}class jr extends Wi{constructor(e,t,i,n){super();this.loop=e,this.varKind=t,this.name=i,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iterable=hi(this.iterable,e,t),this}get names(){return Ot(super.names,this.iterable.names)}}class Yo extends Gt{constructor(e,t,i){super();this.name=e,this.args=t,this.async=i}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}Yo.kind="func";class No extends Eo{render(e){return"return "+super.render(e)}}No.kind="return";class qd extends Gt{render(e){let t="try"+super.render(e);if(this.catch)t+=this.catch.render(e);if(this.finally)t+=this.finally.render(e);return t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(e,t){var i,n;return super.optimizeNames(e,t),(i=this.catch)===null||i===void 0||i.optimizeNames(e,t),(n=this.finally)===null||n===void 0||n.optimizeNames(e,t),this}get names(){let e=super.names;if(this.catch)Ot(e,this.catch.names);if(this.finally)Ot(e,this.finally.names);return e}}class Xo extends Gt{constructor(e){super();this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}Xo.kind="catch";class So extends Gt{render(e){return"finally"+super.render(e)}}So.kind="finally";class ec{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
4
|
+
`:""},this._extScope=e,this._scope=new Oe.Scope({parent:e}),this._nodes=[new Ld]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let i=this._extScope.value(e,t);return(this._values[i.prefix]||(this._values[i.prefix]=new Set)).add(i),i}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,i,n){let o=this._scope.toName(t);if(i!==void 0&&n)this._constants[o.str]=i;return this._leafNode(new zd(e,o,i)),o}const(e,t,i){return this._def(Oe.varKinds.const,e,t,i)}let(e,t,i){return this._def(Oe.varKinds.let,e,t,i)}var(e,t,i){return this._def(Oe.varKinds.var,e,t,i)}assign(e,t,i){return this._leafNode(new Qr(e,t,i))}add(e,t){return this._leafNode(new jd(e,P.operators.ADD,t))}code(e){if(typeof e=="function")e();else if(e!==X.nil)this._leafNode(new Kd(e));return this}object(...e){let t=["{"];for(let[i,n]of e){if(t.length>1)t.push(",");if(t.push(i),i!==n||this.opts.es5)t.push(":"),(0,X.addCodeArg)(t,n)}return t.push("}"),new X._Code(t)}if(e,t,i){if(this._blockNode(new mt(e)),t&&i)this.code(t).else().code(i).endIf();else if(t)this.code(t).endIf();else if(i)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new mt(e))}else(){return this._elseNode(new Wn)}endIf(){return this._endBlockNode(mt,Wn)}_for(e,t){if(this._blockNode(e),t)this.code(t).endFor();return this}for(e,t){return this._for(new Md(e),t)}forRange(e,t,i,n,o=this.opts.es5?Oe.varKinds.var:Oe.varKinds.let){let s=this._scope.toName(e);return this._for(new $d(o,s,t,i),()=>n(s))}forOf(e,t,i,n=Oe.varKinds.const){let o=this._scope.toName(e);if(this.opts.es5){let s=t instanceof X.Name?t:this.var("_arr",t);return this.forRange("_i",0,X._`${s}.length`,(r)=>{this.var(o,X._`${s}[${r}]`),i(o)})}return this._for(new jr("of",n,o,t),()=>i(o))}forIn(e,t,i,n=this.opts.es5?Oe.varKinds.var:Oe.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,X._`Object.keys(${t})`,i);let o=this._scope.toName(e);return this._for(new jr("in",n,o,t),()=>i(o))}endFor(){return this._endBlockNode(Wi)}label(e){return this._leafNode(new Dd(e))}break(e){return this._leafNode(new Qd(e))}return(e){let t=new No;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(No)}try(e,t,i){if(!t&&!i)throw Error('CodeGen: "try" without "catch" and "finally"');let n=new qd;if(this._blockNode(n),this.code(e),t){let o=this.name("e");this._currNode=n.catch=new Xo(o),t(o)}if(i)this._currNode=n.finally=new So,this.code(i);return this._endBlockNode(Xo,So)}throw(e){return this._leafNode(new _d(e))}block(e,t){if(this._blockStarts.push(this._nodes.length),e)this.code(e).endBlock(t);return this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error("CodeGen: not in self-balancing block");let i=this._nodes.length-t;if(i<0||e!==void 0&&i!==e)throw Error(`CodeGen: wrong number of nodes: ${i} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=X.nil,i,n){if(this._blockNode(new Yo(e,t,i)),n)this.code(n).endFunc();return this}endFunc(){return this._endBlockNode(Yo)}optimize(e=1){while(e-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let i=this._currNode;if(i instanceof e||t&&i instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof mt))throw Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}}P.CodeGen=ec;function Ot(e,t){for(let i in t)e[i]=(e[i]||0)+(t[i]||0);return e}function xo(e,t){return t instanceof X._CodeOrName?Ot(e,t.names):e}function hi(e,t,i){if(e instanceof X.Name)return n(e);if(!o(e))return e;return new X._Code(e._items.reduce((s,r)=>{if(r instanceof X.Name)r=n(r);if(r instanceof X._Code)s.push(...r._items);else s.push(r);return s},[]));function n(s){let r=i[s.str];if(r===void 0||t[s.str]!==1)return s;return delete t[s.str],r}function o(s){return s instanceof X._Code&&s._items.some((r)=>r instanceof X.Name&&t[r.str]===1&&i[r.str]!==void 0)}}function AB(e,t){for(let i in t)e[i]=(e[i]||0)-(t[i]||0)}function tc(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:X._`!${Dr(e)}`}P.not=tc;var ZB=ic(P.operators.AND);function bB(...e){return e.reduce(ZB)}P.and=bB;var WB=ic(P.operators.OR);function hB(...e){return e.reduce(WB)}P.or=hB;function ic(e){return(t,i)=>t===X.nil?i:i===X.nil?t:X._`${Dr(t)} ${e} ${Dr(i)}`}function Dr(e){return e instanceof X.Name?e:X._`(${e})`}});var N=y(function(Y){Object.defineProperty(Y,"__esModule",{value:!0});Y.checkStrictMode=Y.getErrorPath=Y.Type=Y.useFunc=Y.setEvaluated=Y.evaluatedPropsToName=Y.mergeEvaluated=Y.eachItem=Y.unescapeJsonPointer=Y.escapeJsonPointer=Y.escapeFragment=Y.unescapeFragment=Y.schemaRefOrVal=Y.schemaHasRulesButRef=Y.schemaHasRules=Y.checkUnknownRules=Y.alwaysValidSchema=Y.toHash=void 0;var T=v(),fB=bn();function yB(e){let t={};for(let i of e)t[i]=!0;return t}Y.toHash=yB;function VB(e,t){if(typeof t=="boolean")return t;if(Object.keys(t).length===0)return!0;return sc(e,t),!rc(t,e.self.RULES.all)}Y.alwaysValidSchema=VB;function sc(e,t=e.schema){let{opts:i,self:n}=e;if(!i.strictSchema)return;if(typeof t==="boolean")return;let o=n.RULES.keywords;for(let s in t)if(!o[s])lc(e,`unknown keyword: "${s}"`)}Y.checkUnknownRules=sc;function rc(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(t[i])return!0;return!1}Y.schemaHasRules=rc;function BB(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(i!=="$ref"&&t.all[i])return!0;return!1}Y.schemaHasRulesButRef=BB;function RB({topSchemaRef:e,schemaPath:t},i,n,o){if(!o){if(typeof i=="number"||typeof i=="boolean")return i;if(typeof i=="string")return T._`${i}`}return T._`${e}${t}${(0,T.getProperty)(n)}`}Y.schemaRefOrVal=RB;function GB(e){return gc(decodeURIComponent(e))}Y.unescapeFragment=GB;function wB(e){return encodeURIComponent(Kr(e))}Y.escapeFragment=wB;function Kr(e){if(typeof e=="number")return`${e}`;return e.replace(/~/g,"~0").replace(/\//g,"~1")}Y.escapeJsonPointer=Kr;function gc(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}Y.unescapeJsonPointer=gc;function FB(e,t){if(Array.isArray(e))for(let i of e)t(i);else t(e)}Y.eachItem=FB;function nc({mergeNames:e,mergeToName:t,mergeValues:i,resultToName:n}){return(o,s,r,g)=>{let a=r===void 0?s:r instanceof T.Name?(s instanceof T.Name?e(o,s,r):t(o,s,r),r):s instanceof T.Name?(t(o,r,s),s):i(s,r);return g===T.Name&&!(a instanceof T.Name)?n(o,a):a}}Y.mergeEvaluated={props:nc({mergeNames:(e,t,i)=>e.if(T._`${i} !== true && ${t} !== undefined`,()=>{e.if(T._`${t} === true`,()=>e.assign(i,!0),()=>e.assign(i,T._`${i} || {}`).code(T._`Object.assign(${i}, ${t})`))}),mergeToName:(e,t,i)=>e.if(T._`${i} !== true`,()=>{if(t===!0)e.assign(i,!0);else e.assign(i,T._`${i} || {}`),Lr(e,i,t)}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:ac}),items:nc({mergeNames:(e,t,i)=>e.if(T._`${i} !== true && ${t} !== undefined`,()=>e.assign(i,T._`${t} === true ? true : ${i} > ${t} ? ${i} : ${t}`)),mergeToName:(e,t,i)=>e.if(T._`${i} !== true`,()=>e.assign(i,t===!0?!0:T._`${i} > ${t} ? ${i} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function ac(e,t){if(t===!0)return e.var("props",!0);let i=e.var("props",T._`{}`);if(t!==void 0)Lr(e,i,t);return i}Y.evaluatedPropsToName=ac;function Lr(e,t,i){Object.keys(i).forEach((n)=>e.assign(T._`${t}${(0,T.getProperty)(n)}`,!0))}Y.setEvaluated=Lr;var oc={};function HB(e,t){return e.scopeValue("func",{ref:t,code:oc[t.code]||(oc[t.code]=new fB._Code(t.code))})}Y.useFunc=HB;var _r;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(_r||(Y.Type=_r={}));function vB(e,t,i){if(e instanceof T.Name){let n=t===_r.Num;return i?n?T._`"[" + ${e} + "]"`:T._`"['" + ${e} + "']"`:n?T._`"/" + ${e}`:T._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return i?(0,T.getProperty)(e).toString():"/"+Kr(e)}Y.getErrorPath=vB;function lc(e,t,i=e.opts.strictSchema){if(!i)return;if(t=`strict mode: ${t}`,i===!0)throw Error(t);e.self.logger.warn(t)}Y.checkStrictMode=lc});var ve=y(function(Mr){Object.defineProperty(Mr,"__esModule",{value:!0});var ae=v(),kB={data:new ae.Name("data"),valCxt:new ae.Name("valCxt"),instancePath:new ae.Name("instancePath"),parentData:new ae.Name("parentData"),parentDataProperty:new ae.Name("parentDataProperty"),rootData:new ae.Name("rootData"),dynamicAnchors:new ae.Name("dynamicAnchors"),vErrors:new ae.Name("vErrors"),errors:new ae.Name("errors"),this:new ae.Name("this"),self:new ae.Name("self"),scope:new ae.Name("scope"),json:new ae.Name("json"),jsonPos:new ae.Name("jsonPos"),jsonLen:new ae.Name("jsonLen"),jsonPart:new ae.Name("jsonPart")};Mr.default=kB});var hn=y(function(le){Object.defineProperty(le,"__esModule",{value:!0});le.extendErrors=le.resetErrorsCount=le.reportExtraError=le.reportError=le.keyword$DataError=le.keywordError=void 0;var S=v(),Uo=N(),ue=ve();le.keywordError={message:({keyword:e})=>S.str`must pass "${e}" keyword validation`};le.keyword$DataError={message:({keyword:e,schemaType:t})=>t?S.str`"${e}" keyword must be ${t} ($data)`:S.str`"${e}" keyword is invalid ($data)`};function PB(e,t=le.keywordError,i,n){let{it:o}=e,{gen:s,compositeRule:r,allErrors:g}=o,a=cc(e,t,i);if(n!==null&&n!==void 0?n:r||g)Ic(s,a);else dc(o,S._`[${a}]`)}le.reportError=PB;function YB(e,t=le.keywordError,i){let{it:n}=e,{gen:o,compositeRule:s,allErrors:r}=n,g=cc(e,t,i);if(Ic(o,g),!(s||r))dc(n,ue.default.vErrors)}le.reportExtraError=YB;function NB(e,t){e.assign(ue.default.errors,t),e.if(S._`${ue.default.vErrors} !== null`,()=>e.if(t,()=>e.assign(S._`${ue.default.vErrors}.length`,t),()=>e.assign(ue.default.vErrors,null)))}le.resetErrorsCount=NB;function XB({gen:e,keyword:t,schemaValue:i,data:n,errsCount:o,it:s}){if(o===void 0)throw Error("ajv implementation error");let r=e.name("err");e.forRange("i",o,ue.default.errors,(g)=>{if(e.const(r,S._`${ue.default.vErrors}[${g}]`),e.if(S._`${r}.instancePath === undefined`,()=>e.assign(S._`${r}.instancePath`,(0,S.strConcat)(ue.default.instancePath,s.errorPath))),e.assign(S._`${r}.schemaPath`,S.str`${s.errSchemaPath}/${t}`),s.opts.verbose)e.assign(S._`${r}.schema`,i),e.assign(S._`${r}.data`,n)})}le.extendErrors=XB;function Ic(e,t){let i=e.const("err",t);e.if(S._`${ue.default.vErrors} === null`,()=>e.assign(ue.default.vErrors,S._`[${i}]`),S._`${ue.default.vErrors}.push(${i})`),e.code(S._`${ue.default.errors}++`)}function dc(e,t){let{gen:i,validateName:n,schemaEnv:o}=e;if(o.$async)i.throw(S._`new ${e.ValidationError}(${t})`);else i.assign(S._`${n}.errors`,t),i.return(!1)}var Tt={keyword:new S.Name("keyword"),schemaPath:new S.Name("schemaPath"),params:new S.Name("params"),propertyName:new S.Name("propertyName"),message:new S.Name("message"),schema:new S.Name("schema"),parentSchema:new S.Name("parentSchema")};function cc(e,t,i){let{createErrors:n}=e.it;if(n===!1)return S._`{}`;return SB(e,t,i)}function SB(e,t,i={}){let{gen:n,it:o}=e,s=[xB(o,i),JB(e,i)];return EB(e,t,s),n.object(...s)}function xB({errorPath:e},{instancePath:t}){let i=t?S.str`${e}${(0,Uo.getErrorPath)(t,Uo.Type.Str)}`:e;return[ue.default.instancePath,(0,S.strConcat)(ue.default.instancePath,i)]}function JB({keyword:e,it:{errSchemaPath:t}},{schemaPath:i,parentSchema:n}){let o=n?t:S.str`${t}/${e}`;if(i)o=S.str`${o}${(0,Uo.getErrorPath)(i,Uo.Type.Str)}`;return[Tt.schemaPath,o]}function EB(e,{params:t,message:i},n){let{keyword:o,data:s,schemaValue:r,it:g}=e,{opts:a,propertyName:l,topSchemaRef:I,schemaPath:d}=g;if(n.push([Tt.keyword,o],[Tt.params,typeof t=="function"?t(e):t||S._`{}`]),a.messages)n.push([Tt.message,typeof i=="function"?i(e):i]);if(a.verbose)n.push([Tt.schema,r],[Tt.parentSchema,S._`${I}${d}`],[ue.default.data,s]);if(l)n.push([Tt.propertyName,l])}});var uc=y(function(fi){Object.defineProperty(fi,"__esModule",{value:!0});fi.boolOrEmptySchema=fi.topBoolOrEmptySchema=void 0;var UB=hn(),OB=v(),TB=ve(),zB={message:"boolean schema is false"};function jB(e){let{gen:t,schema:i,validateName:n}=e;if(i===!1)Cc(e,!1);else if(typeof i=="object"&&i.$async===!0)t.return(TB.default.data);else t.assign(OB._`${n}.errors`,null),t.return(!0)}fi.topBoolOrEmptySchema=jB;function DB(e,t){let{gen:i,schema:n}=e;if(n===!1)i.var(t,!1),Cc(e);else i.var(t,!0)}fi.boolOrEmptySchema=DB;function Cc(e,t){let{gen:i,data:n}=e,o={gen:i,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,UB.reportError)(o,zB,void 0,t)}});var $r=y(function(yi){Object.defineProperty(yi,"__esModule",{value:!0});yi.getRules=yi.isJSONType=void 0;var QB=["string","number","integer","boolean","null","object","array"],_B=new Set(QB);function KB(e){return typeof e=="string"&&_B.has(e)}yi.isJSONType=KB;function LB(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}yi.getRules=LB});var qr=y(function(wt){Object.defineProperty(wt,"__esModule",{value:!0});wt.shouldUseRule=wt.shouldUseGroup=wt.schemaHasRulesForType=void 0;function MB({schema:e,self:t},i){let n=t.RULES.types[i];return n&&n!==!0&&mc(e,n)}wt.schemaHasRulesForType=MB;function mc(e,t){return t.rules.some((i)=>pc(e,i))}wt.shouldUseGroup=mc;function pc(e,t){var i;return e[t.keyword]!==void 0||((i=t.definition.implements)===null||i===void 0?void 0:i.some((n)=>e[n]!==void 0))}wt.shouldUseRule=pc});var fn=y(function(Ie){Object.defineProperty(Ie,"__esModule",{value:!0});Ie.reportTypeError=Ie.checkDataTypes=Ie.checkDataType=Ie.coerceAndCheckDataType=Ie.getJSONTypes=Ie.getSchemaTypes=Ie.DataType=void 0;var $B=$r(),qB=qr(),eR=hn(),k=v(),Ac=N(),Vi;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(Vi||(Ie.DataType=Vi={}));function tR(e){let t=Zc(e.type);if(t.includes("null")){if(e.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(e.nullable===!0)t.push("null")}return t}Ie.getSchemaTypes=tR;function Zc(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every($B.isJSONType))return t;throw Error("type must be JSONType or JSONType[]: "+t.join(","))}Ie.getJSONTypes=Zc;function iR(e,t){let{gen:i,data:n,opts:o}=e,s=nR(t,o.coerceTypes),r=t.length>0&&!(s.length===0&&t.length===1&&(0,qB.schemaHasRulesForType)(e,t[0]));if(r){let g=tg(t,n,o.strictNumbers,Vi.Wrong);i.if(g,()=>{if(s.length)oR(e,t,s);else ig(e)})}return r}Ie.coerceAndCheckDataType=iR;var bc=new Set(["string","number","integer","boolean","null"]);function nR(e,t){return t?e.filter((i)=>bc.has(i)||t==="array"&&i==="array"):[]}function oR(e,t,i){let{gen:n,data:o,opts:s}=e,r=n.let("dataType",k._`typeof ${o}`),g=n.let("coerced",k._`undefined`);if(s.coerceTypes==="array")n.if(k._`${r} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,k._`${o}[0]`).assign(r,k._`typeof ${o}`).if(tg(t,o,s.strictNumbers),()=>n.assign(g,o)));n.if(k._`${g} !== undefined`);for(let l of i)if(bc.has(l)||l==="array"&&s.coerceTypes==="array")a(l);n.else(),ig(e),n.endIf(),n.if(k._`${g} !== undefined`,()=>{n.assign(o,g),sR(e,g)});function a(l){switch(l){case"string":n.elseIf(k._`${r} == "number" || ${r} == "boolean"`).assign(g,k._`"" + ${o}`).elseIf(k._`${o} === null`).assign(g,k._`""`);return;case"number":n.elseIf(k._`${r} == "boolean" || ${o} === null
|
|
5
|
+
|| (${r} == "string" && ${o} && ${o} == +${o})`).assign(g,k._`+${o}`);return;case"integer":n.elseIf(k._`${r} === "boolean" || ${o} === null
|
|
6
|
+
|| (${r} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(g,k._`+${o}`);return;case"boolean":n.elseIf(k._`${o} === "false" || ${o} === 0 || ${o} === null`).assign(g,!1).elseIf(k._`${o} === "true" || ${o} === 1`).assign(g,!0);return;case"null":n.elseIf(k._`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(g,null);return;case"array":n.elseIf(k._`${r} === "string" || ${r} === "number"
|
|
7
|
+
|| ${r} === "boolean" || ${o} === null`).assign(g,k._`[${o}]`)}}}function sR({gen:e,parentData:t,parentDataProperty:i},n){e.if(k._`${t} !== undefined`,()=>e.assign(k._`${t}[${i}]`,n))}function eg(e,t,i,n=Vi.Correct){let o=n===Vi.Correct?k.operators.EQ:k.operators.NEQ,s;switch(e){case"null":return k._`${t} ${o} null`;case"array":s=k._`Array.isArray(${t})`;break;case"object":s=k._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=r(k._`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=r();break;default:return k._`typeof ${t} ${o} ${e}`}return n===Vi.Correct?s:(0,k.not)(s);function r(g=k.nil){return(0,k.and)(k._`typeof ${t} == "number"`,g,i?k._`isFinite(${t})`:k.nil)}}Ie.checkDataType=eg;function tg(e,t,i,n){if(e.length===1)return eg(e[0],t,i,n);let o,s=(0,Ac.toHash)(e);if(s.array&&s.object){let r=k._`typeof ${t} != "object"`;o=s.null?r:k._`!${t} || ${r}`,delete s.null,delete s.array,delete s.object}else o=k.nil;if(s.number)delete s.integer;for(let r in s)o=(0,k.and)(o,eg(r,t,i,n));return o}Ie.checkDataTypes=tg;var rR={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?k._`{type: ${e}}`:k._`{type: ${t}}`};function ig(e){let t=gR(e);(0,eR.reportError)(t,rR)}Ie.reportTypeError=ig;function gR(e){let{gen:t,data:i,schema:n}=e,o=(0,Ac.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:i,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:e}}});var hc=y(function(Oo){Object.defineProperty(Oo,"__esModule",{value:!0});Oo.assignDefaults=void 0;var Bi=v(),aR=N();function lR(e,t){let{properties:i,items:n}=e.schema;if(t==="object"&&i)for(let o in i)Wc(e,o,i[o].default);else if(t==="array"&&Array.isArray(n))n.forEach((o,s)=>Wc(e,s,o.default))}Oo.assignDefaults=lR;function Wc(e,t,i){let{gen:n,compositeRule:o,data:s,opts:r}=e;if(i===void 0)return;let g=Bi._`${s}${(0,Bi.getProperty)(t)}`;if(o){(0,aR.checkStrictMode)(e,`default is ignored for: ${g}`);return}let a=Bi._`${g} === undefined`;if(r.useDefaults==="empty")a=Bi._`${a} || ${g} === null || ${g} === ""`;n.if(a,Bi._`${g} = ${(0,Bi.stringify)(i)}`)}});var ke=y(function(O){Object.defineProperty(O,"__esModule",{value:!0});O.validateUnion=O.validateArray=O.usePattern=O.callValidateCode=O.schemaProperties=O.allSchemaProperties=O.noPropertyInData=O.propertyInData=O.isOwnProperty=O.hasPropFunc=O.reportMissingProp=O.checkMissingProp=O.checkReportMissingProp=void 0;var j=v(),ng=N(),Ft=ve(),IR=N();function dR(e,t){let{gen:i,data:n,it:o}=e;i.if(sg(i,n,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:j._`${t}`},!0),e.error()})}O.checkReportMissingProp=dR;function cR({gen:e,data:t,it:{opts:i}},n,o){return(0,j.or)(...n.map((s)=>(0,j.and)(sg(e,t,s,i.ownProperties),j._`${o} = ${s}`)))}O.checkMissingProp=cR;function CR(e,t){e.setParams({missingProperty:t},!0),e.error()}O.reportMissingProp=CR;function fc(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:j._`Object.prototype.hasOwnProperty`})}O.hasPropFunc=fc;function og(e,t,i){return j._`${fc(e)}.call(${t}, ${i})`}O.isOwnProperty=og;function uR(e,t,i,n){let o=j._`${t}${(0,j.getProperty)(i)} !== undefined`;return n?j._`${o} && ${og(e,t,i)}`:o}O.propertyInData=uR;function sg(e,t,i,n){let o=j._`${t}${(0,j.getProperty)(i)} === undefined`;return n?(0,j.or)(o,(0,j.not)(og(e,t,i))):o}O.noPropertyInData=sg;function yc(e){return e?Object.keys(e).filter((t)=>t!=="__proto__"):[]}O.allSchemaProperties=yc;function mR(e,t){return yc(t).filter((i)=>!(0,ng.alwaysValidSchema)(e,t[i]))}O.schemaProperties=mR;function pR({schemaCode:e,data:t,it:{gen:i,topSchemaRef:n,schemaPath:o,errorPath:s},it:r},g,a,l){let I=l?j._`${e}, ${t}, ${n}${o}`:t,d=[[Ft.default.instancePath,(0,j.strConcat)(Ft.default.instancePath,s)],[Ft.default.parentData,r.parentData],[Ft.default.parentDataProperty,r.parentDataProperty],[Ft.default.rootData,Ft.default.rootData]];if(r.opts.dynamicRef)d.push([Ft.default.dynamicAnchors,Ft.default.dynamicAnchors]);let u=j._`${I}, ${i.object(...d)}`;return a!==j.nil?j._`${g}.call(${a}, ${u})`:j._`${g}(${u})`}O.callValidateCode=pR;var AR=j._`new RegExp`;function ZR({gen:e,it:{opts:t}},i){let n=t.unicodeRegExp?"u":"",{regExp:o}=t.code,s=o(i,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:j._`${o.code==="new RegExp"?AR:(0,IR.useFunc)(e,o)}(${i}, ${n})`})}O.usePattern=ZR;function bR(e){let{gen:t,data:i,keyword:n,it:o}=e,s=t.name("valid");if(o.allErrors){let g=t.let("valid",!0);return r(()=>t.assign(g,!1)),g}return t.var(s,!0),r(()=>t.break()),s;function r(g){let a=t.const("len",j._`${i}.length`);t.forRange("i",0,a,(l)=>{e.subschema({keyword:n,dataProp:l,dataPropType:ng.Type.Num},s),t.if((0,j.not)(s),g)})}}O.validateArray=bR;function WR(e){let{gen:t,schema:i,keyword:n,it:o}=e;if(!Array.isArray(i))throw Error("ajv implementation error");if(i.some((a)=>(0,ng.alwaysValidSchema)(o,a))&&!o.opts.unevaluated)return;let r=t.let("valid",!1),g=t.name("_valid");t.block(()=>i.forEach((a,l)=>{let I=e.subschema({keyword:n,schemaProp:l,compositeRule:!0},g);if(t.assign(r,j._`${r} || ${g}`),!e.mergeValidEvaluated(I,g))t.if((0,j.not)(r))})),e.result(r,()=>e.reset(),()=>e.error(!0))}O.validateUnion=WR});var Rc=y(function($e){Object.defineProperty($e,"__esModule",{value:!0});$e.validateKeywordUsage=$e.validSchemaType=$e.funcKeywordCode=$e.macroKeywordCode=void 0;var me=v(),zt=ve(),hR=ke(),fR=hn();function yR(e,t){let{gen:i,keyword:n,schema:o,parentSchema:s,it:r}=e,g=t.macro.call(r.self,o,s,r),a=Bc(i,n,g);if(r.opts.validateSchema!==!1)r.self.validateSchema(g,!0);let l=i.name("valid");e.subschema({schema:g,schemaPath:me.nil,errSchemaPath:`${r.errSchemaPath}/${n}`,topSchemaRef:a,compositeRule:!0},l),e.pass(l,()=>e.error(!0))}$e.macroKeywordCode=yR;function VR(e,t){var i;let{gen:n,keyword:o,schema:s,parentSchema:r,$data:g,it:a}=e;RR(a,t);let l=!g&&t.compile?t.compile.call(a.self,s,r,a):t.validate,I=Bc(n,o,l),d=n.let("valid");e.block$data(d,u),e.ok((i=t.valid)!==null&&i!==void 0?i:d);function u(){if(t.errors===!1){if(A(),t.modifying)Vc(e);m(()=>e.error())}else{let p=t.async?c():C();if(t.modifying)Vc(e);m(()=>BR(e,p))}}function c(){let p=n.let("ruleErrs",null);return n.try(()=>A(me._`await `),(Z)=>n.assign(d,!1).if(me._`${Z} instanceof ${a.ValidationError}`,()=>n.assign(p,me._`${Z}.errors`),()=>n.throw(Z))),p}function C(){let p=me._`${I}.errors`;return n.assign(p,null),A(me.nil),p}function A(p=t.async?me._`await `:me.nil){let Z=a.opts.passContext?zt.default.this:zt.default.self,W=!(("compile"in t)&&!g||t.schema===!1);n.assign(d,me._`${p}${(0,hR.callValidateCode)(e,I,Z,W)}`,t.modifying)}function m(p){var Z;n.if((0,me.not)((Z=t.valid)!==null&&Z!==void 0?Z:d),p)}}$e.funcKeywordCode=VR;function Vc(e){let{gen:t,data:i,it:n}=e;t.if(n.parentData,()=>t.assign(i,me._`${n.parentData}[${n.parentDataProperty}]`))}function BR(e,t){let{gen:i}=e;i.if(me._`Array.isArray(${t})`,()=>{i.assign(zt.default.vErrors,me._`${zt.default.vErrors} === null ? ${t} : ${zt.default.vErrors}.concat(${t})`).assign(zt.default.errors,me._`${zt.default.vErrors}.length`),(0,fR.extendErrors)(e)},()=>e.error())}function RR({schemaEnv:e},t){if(t.async&&!e.$async)throw Error("async keyword in sync schema")}function Bc(e,t,i){if(i===void 0)throw Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof i=="function"?{ref:i}:{ref:i,code:(0,me.stringify)(i)})}function GR(e,t,i=!1){return!t.length||t.some((n)=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||i&&typeof e>"u")}$e.validSchemaType=GR;function wR({schema:e,opts:t,self:i,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw Error("ajv implementation error");let r=o.dependencies;if(r===null||r===void 0?void 0:r.some((g)=>!Object.prototype.hasOwnProperty.call(e,g)))throw Error(`parent schema must have dependencies of ${s}: ${r.join(",")}`);if(o.validateSchema){if(!o.validateSchema(e[s])){let a=`keyword "${s}" value is invalid at path "${n}": `+i.errorsText(o.validateSchema.errors);if(t.validateSchema==="log")i.logger.error(a);else throw Error(a)}}}$e.validateKeywordUsage=wR});var wc=y(function(Ht){Object.defineProperty(Ht,"__esModule",{value:!0});Ht.extendSubschemaMode=Ht.extendSubschemaData=Ht.getSubschema=void 0;var qe=v(),Gc=N();function FR(e,{keyword:t,schemaProp:i,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:r}){if(t!==void 0&&n!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let g=e.schema[t];return i===void 0?{schema:g,schemaPath:qe._`${e.schemaPath}${(0,qe.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:g[i],schemaPath:qe._`${e.schemaPath}${(0,qe.getProperty)(t)}${(0,qe.getProperty)(i)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Gc.escapeFragment)(i)}`}}if(n!==void 0){if(o===void 0||s===void 0||r===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:r,errSchemaPath:s}}throw Error('either "keyword" or "schema" must be passed')}Ht.getSubschema=FR;function HR(e,t,{dataProp:i,dataPropType:n,data:o,dataTypes:s,propertyName:r}){if(o!==void 0&&i!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:g}=t;if(i!==void 0){let{errorPath:l,dataPathArr:I,opts:d}=t,u=g.let("data",qe._`${t.data}${(0,qe.getProperty)(i)}`,!0);a(u),e.errorPath=qe.str`${l}${(0,Gc.getErrorPath)(i,n,d.jsPropertySyntax)}`,e.parentDataProperty=qe._`${i}`,e.dataPathArr=[...I,e.parentDataProperty]}if(o!==void 0){let l=o instanceof qe.Name?o:g.let("data",o,!0);if(a(l),r!==void 0)e.propertyName=r}if(s)e.dataTypes=s;function a(l){e.data=l,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,l]}}Ht.extendSubschemaData=HR;function vR(e,{jtdDiscriminator:t,jtdMetadata:i,compositeRule:n,createErrors:o,allErrors:s}){if(n!==void 0)e.compositeRule=n;if(o!==void 0)e.createErrors=o;if(s!==void 0)e.allErrors=s;e.jtdDiscriminator=t,e.jtdMetadata=i}Ht.extendSubschemaMode=vR});var rg=y(function(vX,Fc){Fc.exports=function e(t,i){if(t===i)return!0;if(t&&i&&typeof t=="object"&&typeof i=="object"){if(t.constructor!==i.constructor)return!1;var n,o,s;if(Array.isArray(t)){if(n=t.length,n!=i.length)return!1;for(o=n;o--!==0;)if(!e(t[o],i[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===i.source&&t.flags===i.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===i.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===i.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(i).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(i,s[o]))return!1;for(o=n;o--!==0;){var r=s[o];if(!e(t[r],i[r]))return!1}return!0}return t!==t&&i!==i}});var vc=y(function(kX,Hc){var vt=Hc.exports=function(e,t,i){if(typeof t=="function")i=t,t={};i=t.cb||i;var n=typeof i=="function"?i:i.pre||function(){},o=i.post||function(){};To(t,n,o,e,"",e)};vt.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};vt.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};vt.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};vt.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function To(e,t,i,n,o,s,r,g,a,l){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,o,s,r,g,a,l);for(var I in n){var d=n[I];if(Array.isArray(d)){if(I in vt.arrayKeywords)for(var u=0;u<d.length;u++)To(e,t,i,d[u],o+"/"+I+"/"+u,s,o,I,n,u)}else if(I in vt.propsKeywords){if(d&&typeof d=="object")for(var c in d)To(e,t,i,d[c],o+"/"+I+"/"+kR(c),s,o,I,n,c)}else if(I in vt.keywords||e.allKeys&&!(I in vt.skipKeywords))To(e,t,i,d,o+"/"+I,s,o,I,n)}i(n,o,s,r,g,a,l)}}function kR(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var yn=y(function(fe){Object.defineProperty(fe,"__esModule",{value:!0});fe.getSchemaRefs=fe.resolveUrl=fe.normalizeId=fe._getFullPath=fe.getFullPath=fe.inlineRef=void 0;var PR=N(),YR=rg(),NR=vc(),XR=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function SR(e,t=!0){if(typeof e=="boolean")return!0;if(t===!0)return!gg(e);if(!t)return!1;return kc(e)<=t}fe.inlineRef=SR;var xR=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function gg(e){for(let t in e){if(xR.has(t))return!0;let i=e[t];if(Array.isArray(i)&&i.some(gg))return!0;if(typeof i=="object"&&gg(i))return!0}return!1}function kc(e){let t=0;for(let i in e){if(i==="$ref")return 1/0;if(t++,XR.has(i))continue;if(typeof e[i]=="object")(0,PR.eachItem)(e[i],(n)=>t+=kc(n));if(t===1/0)return 1/0}return t}function Pc(e,t="",i){if(i!==!1)t=Ri(t);let n=e.parse(t);return Yc(e,n)}fe.getFullPath=Pc;function Yc(e,t){return e.serialize(t).split("#")[0]+"#"}fe._getFullPath=Yc;var JR=/#\/?$/;function Ri(e){return e?e.replace(JR,""):""}fe.normalizeId=Ri;function ER(e,t,i){return i=Ri(i),e.resolve(t,i)}fe.resolveUrl=ER;var UR=/^[a-z_][-a-z0-9._]*$/i;function OR(e,t){if(typeof e=="boolean")return{};let{schemaId:i,uriResolver:n}=this.opts,o=Ri(e[i]||t),s={"":o},r=Pc(n,o,!1),g={},a=new Set;return NR(e,{allKeys:!0},(d,u,c,C)=>{if(C===void 0)return;let A=r+u,m=s[C];if(typeof d[i]=="string")m=p.call(this,d[i]);Z.call(this,d.$anchor),Z.call(this,d.$dynamicAnchor),s[u]=m;function p(W){let h=this.opts.uriResolver.resolve;if(W=Ri(m?h(m,W):W),a.has(W))throw I(W);a.add(W);let f=this.refs[W];if(typeof f=="string")f=this.refs[f];if(typeof f=="object")l(d,f.schema,W);else if(W!==Ri(A))if(W[0]==="#")l(d,g[W],W),g[W]=d;else this.refs[W]=A;return W}function Z(W){if(typeof W=="string"){if(!UR.test(W))throw Error(`invalid anchor "${W}"`);p.call(this,`#${W}`)}}}),g;function l(d,u,c){if(u!==void 0&&!YR(d,u))throw I(c)}function I(d){return Error(`reference "${d}" resolves to more than one schema`)}}fe.getSchemaRefs=OR});var Gi=y(function(kt){Object.defineProperty(kt,"__esModule",{value:!0});kt.getData=kt.KeywordCxt=kt.validateFunctionCode=void 0;var Jc=uc(),Nc=fn(),lg=qr(),zo=fn(),TR=hc(),Bn=Rc(),ag=wc(),G=v(),H=ve(),zR=yn(),pt=N(),Vn=hn();function jR(e){if(Oc(e)){if(Tc(e),Uc(e)){_R(e);return}}Ec(e,()=>(0,Jc.topBoolOrEmptySchema)(e))}kt.validateFunctionCode=jR;function Ec({gen:e,validateName:t,schema:i,schemaEnv:n,opts:o},s){if(o.code.es5)e.func(t,G._`${H.default.data}, ${H.default.valCxt}`,n.$async,()=>{e.code(G._`"use strict"; ${Xc(i,o)}`),QR(e,o),e.code(s)});else e.func(t,G._`${H.default.data}, ${DR(o)}`,n.$async,()=>e.code(Xc(i,o)).code(s))}function DR(e){return G._`{${H.default.instancePath}="", ${H.default.parentData}, ${H.default.parentDataProperty}, ${H.default.rootData}=${H.default.data}${e.dynamicRef?G._`, ${H.default.dynamicAnchors}={}`:G.nil}}={}`}function QR(e,t){e.if(H.default.valCxt,()=>{if(e.var(H.default.instancePath,G._`${H.default.valCxt}.${H.default.instancePath}`),e.var(H.default.parentData,G._`${H.default.valCxt}.${H.default.parentData}`),e.var(H.default.parentDataProperty,G._`${H.default.valCxt}.${H.default.parentDataProperty}`),e.var(H.default.rootData,G._`${H.default.valCxt}.${H.default.rootData}`),t.dynamicRef)e.var(H.default.dynamicAnchors,G._`${H.default.valCxt}.${H.default.dynamicAnchors}`)},()=>{if(e.var(H.default.instancePath,G._`""`),e.var(H.default.parentData,G._`undefined`),e.var(H.default.parentDataProperty,G._`undefined`),e.var(H.default.rootData,H.default.data),t.dynamicRef)e.var(H.default.dynamicAnchors,G._`{}`)})}function _R(e){let{schema:t,opts:i,gen:n}=e;Ec(e,()=>{if(i.$comment&&t.$comment)jc(e);if(qR(e),n.let(H.default.vErrors,null),n.let(H.default.errors,0),i.unevaluated)KR(e);zc(e),iG(e)});return}function KR(e){let{gen:t,validateName:i}=e;e.evaluated=t.const("evaluated",G._`${i}.evaluated`),t.if(G._`${e.evaluated}.dynamicProps`,()=>t.assign(G._`${e.evaluated}.props`,G._`undefined`)),t.if(G._`${e.evaluated}.dynamicItems`,()=>t.assign(G._`${e.evaluated}.items`,G._`undefined`))}function Xc(e,t){let i=typeof e=="object"&&e[t.schemaId];return i&&(t.code.source||t.code.process)?G._`/*# sourceURL=${i} */`:G.nil}function LR(e,t){if(Oc(e)){if(Tc(e),Uc(e)){MR(e,t);return}}(0,Jc.boolOrEmptySchema)(e,t)}function Uc({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let i in e)if(t.RULES.all[i])return!0;return!1}function Oc(e){return typeof e.schema!="boolean"}function MR(e,t){let{schema:i,gen:n,opts:o}=e;if(o.$comment&&i.$comment)jc(e);eG(e),tG(e);let s=n.const("_errs",H.default.errors);zc(e,s),n.var(t,G._`${s} === ${H.default.errors}`)}function Tc(e){(0,pt.checkUnknownRules)(e),$R(e)}function zc(e,t){if(e.opts.jtd)return Sc(e,[],!1,t);let i=(0,Nc.getSchemaTypes)(e.schema),n=(0,Nc.coerceAndCheckDataType)(e,i);Sc(e,i,!n,t)}function $R(e){let{schema:t,errSchemaPath:i,opts:n,self:o}=e;if(t.$ref&&n.ignoreKeywordsWithRef&&(0,pt.schemaHasRulesButRef)(t,o.RULES))o.logger.warn(`$ref: keywords ignored in schema at path "${i}"`)}function qR(e){let{schema:t,opts:i}=e;if(t.default!==void 0&&i.useDefaults&&i.strictSchema)(0,pt.checkStrictMode)(e,"default is ignored in the schema root")}function eG(e){let t=e.schema[e.opts.schemaId];if(t)e.baseId=(0,zR.resolveUrl)(e.opts.uriResolver,e.baseId,t)}function tG(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error("async schema in sync schema")}function jc({gen:e,schemaEnv:t,schema:i,errSchemaPath:n,opts:o}){let s=i.$comment;if(o.$comment===!0)e.code(G._`${H.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let r=G.str`${n}/$comment`,g=e.scopeValue("root",{ref:t.root});e.code(G._`${H.default.self}.opts.$comment(${s}, ${r}, ${g}.schema)`)}}function iG(e){let{gen:t,schemaEnv:i,validateName:n,ValidationError:o,opts:s}=e;if(i.$async)t.if(G._`${H.default.errors} === 0`,()=>t.return(H.default.data),()=>t.throw(G._`new ${o}(${H.default.vErrors})`));else{if(t.assign(G._`${n}.errors`,H.default.vErrors),s.unevaluated)nG(e);t.return(G._`${H.default.errors} === 0`)}}function nG({gen:e,evaluated:t,props:i,items:n}){if(i instanceof G.Name)e.assign(G._`${t}.props`,i);if(n instanceof G.Name)e.assign(G._`${t}.items`,n)}function Sc(e,t,i,n){let{gen:o,schema:s,data:r,allErrors:g,opts:a,self:l}=e,{RULES:I}=l;if(s.$ref&&(a.ignoreKeywordsWithRef||!(0,pt.schemaHasRulesButRef)(s,I))){o.block(()=>Qc(e,"$ref",I.all.$ref.definition));return}if(!a.jtd)oG(e,t);o.block(()=>{for(let u of I.rules)d(u);d(I.post)});function d(u){if(!(0,lg.shouldUseGroup)(s,u))return;if(u.type){if(o.if((0,zo.checkDataType)(u.type,r,a.strictNumbers)),xc(e,u),t.length===1&&t[0]===u.type&&i)o.else(),(0,zo.reportTypeError)(e);o.endIf()}else xc(e,u);if(!g)o.if(G._`${H.default.errors} === ${n||0}`)}}function xc(e,t){let{gen:i,schema:n,opts:{useDefaults:o}}=e;if(o)(0,TR.assignDefaults)(e,t.type);i.block(()=>{for(let s of t.rules)if((0,lg.shouldUseRule)(n,s))Qc(e,s.keyword,s.definition,t.type)})}function oG(e,t){if(e.schemaEnv.meta||!e.opts.strictTypes)return;if(sG(e,t),!e.opts.allowUnionTypes)rG(e,t);gG(e,e.dataTypes)}function sG(e,t){if(!t.length)return;if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach((i)=>{if(!Dc(e.dataTypes,i))Ig(e,`type "${i}" not allowed by context "${e.dataTypes.join(",")}"`)}),lG(e,t)}function rG(e,t){if(t.length>1&&!(t.length===2&&t.includes("null")))Ig(e,"use allowUnionTypes to allow union type keyword")}function gG(e,t){let i=e.self.RULES.all;for(let n in i){let o=i[n];if(typeof o=="object"&&(0,lg.shouldUseRule)(e.schema,o)){let{type:s}=o.definition;if(s.length&&!s.some((r)=>aG(t,r)))Ig(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function aG(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Dc(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function lG(e,t){let i=[];for(let n of e.dataTypes)if(Dc(t,n))i.push(n);else if(t.includes("integer")&&n==="number")i.push("integer");e.dataTypes=i}function Ig(e,t){let i=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${i}" (strictTypes)`,(0,pt.checkStrictMode)(e,t,e.opts.strictTypes)}class dg{constructor(e,t,i){if((0,Bn.validateKeywordUsage)(e,t,i),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=i,this.data=e.data,this.schema=e.schema[i],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,pt.schemaRefOrVal)(e,this.schema,i,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",_c(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,Bn.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw Error(`${i} value must be ${JSON.stringify(t.schemaType)}`);if("code"in t?t.trackErrors:t.errors!==!1)this.errsCount=e.gen.const("_errs",H.default.errors)}result(e,t,i){this.failResult((0,G.not)(e),t,i)}failResult(e,t,i){if(this.gen.if(e),i)i();else this.error();if(t){if(this.gen.else(),t(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(e,t){this.failResult((0,G.not)(e),void 0,t)}fail(e){if(e===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(e),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail(G._`${t} !== undefined && (${(0,G.or)(this.invalid$data(),e)})`)}error(e,t,i){if(t){this.setParams(t),this._error(e,i),this.setParams({});return}this._error(e,i)}_error(e,t){(e?Vn.reportExtraError:Vn.reportError)(this,this.def.error,t)}$dataError(){(0,Vn.reportError)(this,this.def.$dataError||Vn.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,Vn.resetErrorsCount)(this.gen,this.errsCount)}ok(e){if(!this.allErrors)this.gen.if(e)}setParams(e,t){if(t)Object.assign(this.params,e);else this.params=e}block$data(e,t,i=G.nil){this.gen.block(()=>{this.check$data(e,i),t()})}check$data(e=G.nil,t=G.nil){if(!this.$data)return;let{gen:i,schemaCode:n,schemaType:o,def:s}=this;if(i.if((0,G.or)(G._`${n} === undefined`,t)),e!==G.nil)i.assign(e,!0);if(o.length||s.validateSchema){if(i.elseIf(this.invalid$data()),this.$dataError(),e!==G.nil)i.assign(e,!1)}i.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:i,def:n,it:o}=this;return(0,G.or)(s(),r());function s(){if(i.length){if(!(t instanceof G.Name))throw Error("ajv implementation error");let g=Array.isArray(i)?i:[i];return G._`${(0,zo.checkDataTypes)(g,t,o.opts.strictNumbers,zo.DataType.Wrong)}`}return G.nil}function r(){if(n.validateSchema){let g=e.scopeValue("validate$data",{ref:n.validateSchema});return G._`!${g}(${t})`}return G.nil}}subschema(e,t){let i=(0,ag.getSubschema)(this.it,e);(0,ag.extendSubschemaData)(i,this.it,e),(0,ag.extendSubschemaMode)(i,e);let n={...this.it,...i,items:void 0,props:void 0};return LR(n,t),n}mergeEvaluated(e,t){let{it:i,gen:n}=this;if(!i.opts.unevaluated)return;if(i.props!==!0&&e.props!==void 0)i.props=pt.mergeEvaluated.props(n,e.props,i.props,t);if(i.items!==!0&&e.items!==void 0)i.items=pt.mergeEvaluated.items(n,e.items,i.items,t)}mergeValidEvaluated(e,t){let{it:i,gen:n}=this;if(i.opts.unevaluated&&(i.props!==!0||i.items!==!0))return n.if(t,()=>this.mergeEvaluated(e,G.Name)),!0}}kt.KeywordCxt=dg;function Qc(e,t,i,n){let o=new dg(e,i,t);if("code"in i)i.code(o,n);else if(o.$data&&i.validate)(0,Bn.funcKeywordCode)(o,i);else if("macro"in i)(0,Bn.macroKeywordCode)(o,i);else if(i.compile||i.validate)(0,Bn.funcKeywordCode)(o,i)}var IG=/^\/(?:[^~]|~0|~1)*$/,dG=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function _c(e,{dataLevel:t,dataNames:i,dataPathArr:n}){let o,s;if(e==="")return H.default.rootData;if(e[0]==="/"){if(!IG.test(e))throw Error(`Invalid JSON-pointer: ${e}`);o=e,s=H.default.rootData}else{let l=dG.exec(e);if(!l)throw Error(`Invalid JSON-pointer: ${e}`);let I=+l[1];if(o=l[2],o==="#"){if(I>=t)throw Error(a("property/index",I));return n[t-I]}if(I>t)throw Error(a("data",I));if(s=i[t-I],!o)return s}let r=s,g=o.split("/");for(let l of g)if(l)s=G._`${s}${(0,G.getProperty)((0,pt.unescapeJsonPointer)(l))}`,r=G._`${r} && ${s}`;return r;function a(l,I){return`Cannot access ${l} ${I} levels up, current level is ${t}`}}kt.getData=_c});var Rn=y(function(cg){Object.defineProperty(cg,"__esModule",{value:!0});class Kc extends Error{constructor(e){super("validation failed");this.errors=e,this.ajv=this.validation=!0}}cg.default=Kc});var wi=y(function(ug){Object.defineProperty(ug,"__esModule",{value:!0});var Cg=yn();class Lc extends Error{constructor(e,t,i,n){super(n||`can't resolve reference ${i} from id ${t}`);this.missingRef=(0,Cg.resolveUrl)(e,t,i),this.missingSchema=(0,Cg.normalizeId)((0,Cg.getFullPath)(e,this.missingRef))}}ug.default=Lc});var wn=y(function(Pe){Object.defineProperty(Pe,"__esModule",{value:!0});Pe.resolveSchema=Pe.getCompilingSchema=Pe.resolveRef=Pe.compileSchema=Pe.SchemaEnv=void 0;var Te=v(),cG=Rn(),jt=ve(),ze=yn(),Mc=N(),CG=Gi();class Gn{constructor(e){var t;this.refs={},this.dynamicAnchors={};let i;if(typeof e.schema=="object")i=e.schema;this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(t=e.baseId)!==null&&t!==void 0?t:(0,ze.normalizeId)(i===null||i===void 0?void 0:i[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=i===null||i===void 0?void 0:i.$async,this.refs={}}}Pe.SchemaEnv=Gn;function pg(e){let t=$c.call(this,e);if(t)return t;let i=(0,ze.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,r=new Te.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),g;if(e.$async)g=r.scopeValue("Error",{ref:cG.default,code:Te._`require("ajv/dist/runtime/validation_error").default`});let a=r.scopeName("validate");e.validateName=a;let l={gen:r,allErrors:this.opts.allErrors,data:jt.default.data,parentData:jt.default.parentData,parentDataProperty:jt.default.parentDataProperty,dataNames:[jt.default.data],dataPathArr:[Te.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:r.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,Te.stringify)(e.schema)}:{ref:e.schema}),validateName:a,ValidationError:g,schema:e.schema,schemaEnv:e,rootId:i,baseId:e.baseId||i,schemaPath:Te.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:Te._`""`,opts:this.opts,self:this},I;try{this._compilations.add(e),(0,CG.validateFunctionCode)(l),r.optimize(this.opts.code.optimize);let d=r.toString();if(I=`${r.scopeRefs(jt.default.scope)}return ${d}`,this.opts.code.process)I=this.opts.code.process(I,e);let c=Function(`${jt.default.self}`,`${jt.default.scope}`,I)(this,this.scope.get());if(this.scope.value(a,{ref:c}),c.errors=null,c.schema=e.schema,c.schemaEnv=e,e.$async)c.$async=!0;if(this.opts.code.source===!0)c.source={validateName:a,validateCode:d,scopeValues:r._values};if(this.opts.unevaluated){let{props:C,items:A}=l;if(c.evaluated={props:C instanceof Te.Name?void 0:C,items:A instanceof Te.Name?void 0:A,dynamicProps:C instanceof Te.Name,dynamicItems:A instanceof Te.Name},c.source)c.source.evaluated=(0,Te.stringify)(c.evaluated)}return e.validate=c,e}catch(d){if(delete e.validate,delete e.validateName,I)this.logger.error("Error compiling schema, function code:",I);throw d}finally{this._compilations.delete(e)}}Pe.compileSchema=pg;function uG(e,t,i){var n;i=(0,ze.resolveUrl)(this.opts.uriResolver,t,i);let o=e.refs[i];if(o)return o;let s=AG.call(this,e,i);if(s===void 0){let r=(n=e.localRefs)===null||n===void 0?void 0:n[i],{schemaId:g}=this.opts;if(r)s=new Gn({schema:r,schemaId:g,root:e,baseId:t})}if(s===void 0)return;return e.refs[i]=mG.call(this,s)}Pe.resolveRef=uG;function mG(e){if((0,ze.inlineRef)(e.schema,this.opts.inlineRefs))return e.schema;return e.validate?e:pg.call(this,e)}function $c(e){for(let t of this._compilations)if(pG(t,e))return t}Pe.getCompilingSchema=$c;function pG(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function AG(e,t){let i;while(typeof(i=this.refs[t])=="string")t=i;return i||this.schemas[t]||jo.call(this,e,t)}function jo(e,t){let i=this.opts.uriResolver.parse(t),n=(0,ze._getFullPath)(this.opts.uriResolver,i),o=(0,ze.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===o)return mg.call(this,i,e);let s=(0,ze.normalizeId)(n),r=this.refs[s]||this.schemas[s];if(typeof r=="string"){let g=jo.call(this,e,r);if(typeof(g===null||g===void 0?void 0:g.schema)!=="object")return;return mg.call(this,i,g)}if(typeof(r===null||r===void 0?void 0:r.schema)!=="object")return;if(!r.validate)pg.call(this,r);if(s===(0,ze.normalizeId)(t)){let{schema:g}=r,{schemaId:a}=this.opts,l=g[a];if(l)o=(0,ze.resolveUrl)(this.opts.uriResolver,o,l);return new Gn({schema:g,schemaId:a,root:e,baseId:o})}return mg.call(this,i,r)}Pe.resolveSchema=jo;var ZG=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function mg(e,{baseId:t,schema:i,root:n}){var o;if(((o=e.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let g of e.fragment.slice(1).split("/")){if(typeof i==="boolean")return;let a=i[(0,Mc.unescapeFragment)(g)];if(a===void 0)return;i=a;let l=typeof i==="object"&&i[this.opts.schemaId];if(!ZG.has(g)&&l)t=(0,ze.resolveUrl)(this.opts.uriResolver,t,l)}let s;if(typeof i!="boolean"&&i.$ref&&!(0,Mc.schemaHasRulesButRef)(i,this.RULES)){let g=(0,ze.resolveUrl)(this.opts.uriResolver,t,i.$ref);s=jo.call(this,n,g)}let{schemaId:r}=this.opts;if(s=s||new Gn({schema:i,schemaId:r,root:n,baseId:t}),s.schema!==s.root.schema)return s;return}});var qc=y(function(xX,bG){bG.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var Zg=y(function(JX,nC){var WG=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),tC=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function Ag(e){let t="",i=0,n=0;for(n=0;n<e.length;n++){if(i=e[n].charCodeAt(0),i===48)continue;if(!(i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(i=e[n].charCodeAt(0),!(i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102))return"";t+=e[n]}return t}var hG=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function eC(e){return e.length=0,!0}function fG(e,t,i){if(e.length){let n=Ag(e);if(n!=="")t.push(n);else return i.error=!0,!1;e.length=0}return!0}function yG(e){let t=0,i={error:!1,address:"",zone:""},n=[],o=[],s=!1,r=!1,g=fG;for(let a=0;a<e.length;a++){let l=e[a];if(l==="["||l==="]")continue;if(l===":"){if(s===!0)r=!0;if(!g(o,n,i))break;if(++t>7){i.error=!0;break}if(a>0&&e[a-1]===":")s=!0;n.push(":");continue}else if(l==="%"){if(!g(o,n,i))break;g=eC}else{o.push(l);continue}}if(o.length)if(g===eC)i.zone=o.join("");else if(r)n.push(o.join(""));else n.push(Ag(o));return i.address=n.join(""),i}function iC(e){if(VG(e,":")<2)return{host:e,isIPV6:!1};let t=yG(e);if(!t.error){let{address:i,address:n}=t;if(t.zone)i+="%"+t.zone,n+="%25"+t.zone;return{host:i,isIPV6:!0,escapedHost:n}}else return{host:e,isIPV6:!1}}function VG(e,t){let i=0;for(let n=0;n<e.length;n++)if(e[n]===t)i++;return i}function BG(e){let t=e,i=[],n=-1,o=0;while(o=t.length){if(o===1)if(t===".")break;else if(t==="/"){i.push("/");break}else{i.push(t);break}else if(o===2){if(t[0]==="."){if(t[1]===".")break;else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."||t[1]==="/"){i.push("/");break}}}else if(o===3){if(t==="/.."){if(i.length!==0)i.pop();i.push("/");break}}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."){if(t[3]==="/"){if(t=t.slice(3),i.length!==0)i.pop();continue}}}}if((n=t.indexOf("/",1))===-1){i.push(t);break}else i.push(t.slice(0,n)),t=t.slice(n)}return i.join("")}function RG(e,t){let i=t!==!0?escape:unescape;if(e.scheme!==void 0)e.scheme=i(e.scheme);if(e.userinfo!==void 0)e.userinfo=i(e.userinfo);if(e.host!==void 0)e.host=i(e.host);if(e.path!==void 0)e.path=i(e.path);if(e.query!==void 0)e.query=i(e.query);if(e.fragment!==void 0)e.fragment=i(e.fragment);return e}function GG(e){let t=[];if(e.userinfo!==void 0)t.push(e.userinfo),t.push("@");if(e.host!==void 0){let i=unescape(e.host);if(!tC(i)){let n=iC(i);if(n.isIPV6===!0)i=`[${n.escapedHost}]`;else i=e.host}t.push(i)}if(typeof e.port==="number"||typeof e.port==="string")t.push(":"),t.push(String(e.port));return t.length?t.join(""):void 0}nC.exports={nonSimpleDomain:hG,recomposeAuthority:GG,normalizeComponentEncoding:RG,removeDotSegments:BG,isIPv4:tC,isUUID:WG,normalizeIPv6:iC,stringArrayToHexStripped:Ag}});var aC=y(function(EX,gC){var{isUUID:wG}=Zg(),FG=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,HG=["http","https","ws","wss","urn","urn:uuid"];function vG(e){return HG.indexOf(e)!==-1}function bg(e){if(e.secure===!0)return!0;else if(e.secure===!1)return!1;else if(e.scheme)return e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S");else return!1}function oC(e){if(!e.host)e.error=e.error||"HTTP URIs must have a host.";return e}function sC(e){let t=String(e.scheme).toLowerCase()==="https";if(e.port===(t?443:80)||e.port==="")e.port=void 0;if(!e.path)e.path="/";return e}function kG(e){return e.secure=bg(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function PG(e){if(e.port===(bg(e)?443:80)||e.port==="")e.port=void 0;if(typeof e.secure==="boolean")e.scheme=e.secure?"wss":"ws",e.secure=void 0;if(e.resourceName){let[t,i]=e.resourceName.split("?");e.path=t&&t!=="/"?t:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}function YG(e,t){if(!e.path)return e.error="URN can not be parsed",e;let i=e.path.match(FG);if(i){let n=t.scheme||e.scheme||"urn";e.nid=i[1].toLowerCase(),e.nss=i[2];let o=`${n}:${t.nid||e.nid}`,s=Wg(o);if(e.path=void 0,s)e=s.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e}function NG(e,t){if(e.nid===void 0)throw Error("URN without nid cannot be serialized");let i=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),o=`${i}:${t.nid||n}`,s=Wg(o);if(s)e=s.serialize(e,t);let r=e,g=e.nss;return r.path=`${n||t.nid}:${g}`,t.skipEscape=!0,r}function XG(e,t){let i=e;if(i.uuid=i.nss,i.nss=void 0,!t.tolerant&&(!i.uuid||!wG(i.uuid)))i.error=i.error||"UUID is not valid.";return i}function SG(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var rC={scheme:"http",domainHost:!0,parse:oC,serialize:sC},xG={scheme:"https",domainHost:rC.domainHost,parse:oC,serialize:sC},Do={scheme:"ws",domainHost:!0,parse:kG,serialize:PG},JG={scheme:"wss",domainHost:Do.domainHost,parse:Do.parse,serialize:Do.serialize},EG={scheme:"urn",parse:YG,serialize:NG,skipNormalize:!0},UG={scheme:"urn:uuid",parse:XG,serialize:SG,skipNormalize:!0},Qo={http:rC,https:xG,ws:Do,wss:JG,urn:EG,"urn:uuid":UG};Object.setPrototypeOf(Qo,null);function Wg(e){return e&&(Qo[e]||Qo[e.toLowerCase()])||void 0}gC.exports={wsIsSecure:bg,SCHEMES:Qo,isValidSchemeName:vG,getSchemeHandler:Wg}});var dC=y(function(UX,Ko){var{normalizeIPv6:OG,removeDotSegments:Fn,recomposeAuthority:TG,normalizeComponentEncoding:_o,isIPv4:zG,nonSimpleDomain:jG}=Zg(),{SCHEMES:DG,getSchemeHandler:lC}=aC();function QG(e,t){if(typeof e==="string")e=et(At(e,t),t);else if(typeof e==="object")e=At(et(e,t),t);return e}function _G(e,t,i){let n=i?Object.assign({scheme:"null"},i):{scheme:"null"},o=IC(At(e,n),At(t,n),n,!0);return n.skipEscape=!0,et(o,n)}function IC(e,t,i,n){let o={};if(!n)e=At(et(e,i),i),t=At(et(t,i),i);if(i=i||{},!i.tolerant&&t.scheme)o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Fn(t.path||""),o.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Fn(t.path||""),o.query=t.query;else{if(!t.path)if(o.path=e.path,t.query!==void 0)o.query=t.query;else o.query=e.query;else{if(t.path[0]==="/")o.path=Fn(t.path);else{if((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path)o.path="/"+t.path;else if(!e.path)o.path=t.path;else o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path;o.path=Fn(o.path)}o.query=t.query}o.userinfo=e.userinfo,o.host=e.host,o.port=e.port}o.scheme=e.scheme}return o.fragment=t.fragment,o}function KG(e,t,i){if(typeof e==="string")e=unescape(e),e=et(_o(At(e,i),!0),{...i,skipEscape:!0});else if(typeof e==="object")e=et(_o(e,!0),{...i,skipEscape:!0});if(typeof t==="string")t=unescape(t),t=et(_o(At(t,i),!0),{...i,skipEscape:!0});else if(typeof t==="object")t=et(_o(t,!0),{...i,skipEscape:!0});return e.toLowerCase()===t.toLowerCase()}function et(e,t){let i={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),o=[],s=lC(n.scheme||i.scheme);if(s&&s.serialize)s.serialize(i,n);if(i.path!==void 0)if(!n.skipEscape){if(i.path=escape(i.path),i.scheme!==void 0)i.path=i.path.split("%3A").join(":")}else i.path=unescape(i.path);if(n.reference!=="suffix"&&i.scheme)o.push(i.scheme,":");let r=TG(i);if(r!==void 0){if(n.reference!=="suffix")o.push("//");if(o.push(r),i.path&&i.path[0]!=="/")o.push("/")}if(i.path!==void 0){let g=i.path;if(!n.absolutePath&&(!s||!s.absolutePath))g=Fn(g);if(r===void 0&&g[0]==="/"&&g[1]==="/")g="/%2F"+g.slice(2);o.push(g)}if(i.query!==void 0)o.push("?",i.query);if(i.fragment!==void 0)o.push("#",i.fragment);return o.join("")}var LG=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function At(e,t){let i=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1;if(i.reference==="suffix")if(i.scheme)e=i.scheme+":"+e;else e="//"+e;let s=e.match(LG);if(s){if(n.scheme=s[1],n.userinfo=s[3],n.host=s[4],n.port=parseInt(s[5],10),n.path=s[6]||"",n.query=s[7],n.fragment=s[8],isNaN(n.port))n.port=s[5];if(n.host)if(zG(n.host)===!1){let a=OG(n.host);n.host=a.host.toLowerCase(),o=a.isIPV6}else o=!0;if(n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path)n.reference="same-document";else if(n.scheme===void 0)n.reference="relative";else if(n.fragment===void 0)n.reference="absolute";else n.reference="uri";if(i.reference&&i.reference!=="suffix"&&i.reference!==n.reference)n.error=n.error||"URI is not a "+i.reference+" reference.";let r=lC(i.scheme||n.scheme);if(!i.unicodeSupport&&(!r||!r.unicodeSupport)){if(n.host&&(i.domainHost||r&&r.domainHost)&&o===!1&&jG(n.host))try{n.host=URL.domainToASCII(n.host.toLowerCase())}catch(g){n.error=n.error||"Host's domain name can not be converted to ASCII: "+g}}if(!r||r&&!r.skipNormalize){if(e.indexOf("%")!==-1){if(n.scheme!==void 0)n.scheme=unescape(n.scheme);if(n.host!==void 0)n.host=unescape(n.host)}if(n.path)n.path=escape(unescape(n.path));if(n.fragment)n.fragment=encodeURI(decodeURIComponent(n.fragment))}if(r&&r.parse)r.parse(n,i)}else n.error=n.error||"URI can not be parsed.";return n}var hg={SCHEMES:DG,normalize:QG,resolve:_G,resolveComponent:IC,equal:KG,serialize:et,parse:At};Ko.exports=hg;Ko.exports.default=hg;Ko.exports.fastUri=hg});var CC=y(function(fg){Object.defineProperty(fg,"__esModule",{value:!0});var cC=dC();cC.code='require("ajv/dist/runtime/uri").default';fg.default=cC});var Bg=y(function(oe){Object.defineProperty(oe,"__esModule",{value:!0});oe.CodeGen=oe.Name=oe.nil=oe.stringify=oe.str=oe._=oe.KeywordCxt=void 0;var MG=Gi();Object.defineProperty(oe,"KeywordCxt",{enumerable:!0,get:function(){return MG.KeywordCxt}});var Fi=v();Object.defineProperty(oe,"_",{enumerable:!0,get:function(){return Fi._}});Object.defineProperty(oe,"str",{enumerable:!0,get:function(){return Fi.str}});Object.defineProperty(oe,"stringify",{enumerable:!0,get:function(){return Fi.stringify}});Object.defineProperty(oe,"nil",{enumerable:!0,get:function(){return Fi.nil}});Object.defineProperty(oe,"Name",{enumerable:!0,get:function(){return Fi.Name}});Object.defineProperty(oe,"CodeGen",{enumerable:!0,get:function(){return Fi.CodeGen}});var $G=Rn(),ZC=wi(),qG=$r(),Hn=wn(),e0=v(),vn=yn(),Lo=fn(),Vg=N(),uC=qc(),t0=CC(),bC=(e,t)=>new RegExp(e,t);bC.code="new RegExp";var i0=["removeAdditional","useDefaults","coerceTypes"],n0=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),o0={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},s0={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},mC=200;function r0(e){var t,i,n,o,s,r,g,a,l,I,d,u,c,C,A,m,p,Z,W,h,f,V,B,F,R;let U=e.strict,K=(t=e.code)===null||t===void 0?void 0:t.optimize,ee=K===!0||K===void 0?1:K||0,He=(n=(i=e.code)===null||i===void 0?void 0:i.regExp)!==null&&n!==void 0?n:bC,Cn=(o=e.uriResolver)!==null&&o!==void 0?o:t0.default;return{strictSchema:(r=(s=e.strictSchema)!==null&&s!==void 0?s:U)!==null&&r!==void 0?r:!0,strictNumbers:(a=(g=e.strictNumbers)!==null&&g!==void 0?g:U)!==null&&a!==void 0?a:!0,strictTypes:(I=(l=e.strictTypes)!==null&&l!==void 0?l:U)!==null&&I!==void 0?I:"log",strictTuples:(u=(d=e.strictTuples)!==null&&d!==void 0?d:U)!==null&&u!==void 0?u:"log",strictRequired:(C=(c=e.strictRequired)!==null&&c!==void 0?c:U)!==null&&C!==void 0?C:!1,code:e.code?{...e.code,optimize:ee,regExp:He}:{optimize:ee,regExp:He},loopRequired:(A=e.loopRequired)!==null&&A!==void 0?A:mC,loopEnum:(m=e.loopEnum)!==null&&m!==void 0?m:mC,meta:(p=e.meta)!==null&&p!==void 0?p:!0,messages:(Z=e.messages)!==null&&Z!==void 0?Z:!0,inlineRefs:(W=e.inlineRefs)!==null&&W!==void 0?W:!0,schemaId:(h=e.schemaId)!==null&&h!==void 0?h:"$id",addUsedSchema:(f=e.addUsedSchema)!==null&&f!==void 0?f:!0,validateSchema:(V=e.validateSchema)!==null&&V!==void 0?V:!0,validateFormats:(B=e.validateFormats)!==null&&B!==void 0?B:!0,unicodeRegExp:(F=e.unicodeRegExp)!==null&&F!==void 0?F:!0,int32range:(R=e.int32range)!==null&&R!==void 0?R:!0,uriResolver:Cn}}class Mo{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...r0(e)};let{es5:t,lines:i}=this.opts.code;this.scope=new e0.ValueScope({scope:{},prefixes:n0,es5:t,lines:i}),this.logger=c0(e.logger);let n=e.validateFormats;if(e.validateFormats=!1,this.RULES=(0,qG.getRules)(),pC.call(this,o0,e,"NOT SUPPORTED"),pC.call(this,s0,e,"DEPRECATED","warn"),this._metaOpts=I0.call(this),e.formats)a0.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords)l0.call(this,e.keywords);if(typeof e.meta=="object")this.addMetaSchema(e.meta);g0.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:i}=this.opts,n=uC;if(i==="id")n={...uC},n.id=n.$id,delete n.$id;if(t&&e)this.addMetaSchema(n,n[i],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[t]||e:void 0}validate(e,t){let i;if(typeof e=="string"){if(i=this.getSchema(e),!i)throw Error(`no schema with key or ref "${e}"`)}else i=this.compile(e);let n=i(t);if(!("$async"in i))this.errors=i.errors;return n}compile(e,t){let i=this._addSchema(e,t);return i.validate||this._compileSchemaEnv(i)}compileAsync(e,t){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:i}=this.opts;return n.call(this,e,t);async function n(l,I){await o.call(this,l.$schema);let d=this._addSchema(l,I);return d.validate||s.call(this,d)}async function o(l){if(l&&!this.getSchema(l))await n.call(this,{$ref:l},!0)}async function s(l){try{return this._compileSchemaEnv(l)}catch(I){if(!(I instanceof ZC.default))throw I;return r.call(this,I),await g.call(this,I.missingSchema),s.call(this,l)}}function r({missingSchema:l,missingRef:I}){if(this.refs[l])throw Error(`AnySchema ${l} is loaded but ${I} cannot be resolved`)}async function g(l){let I=await a.call(this,l);if(!this.refs[l])await o.call(this,I.$schema);if(!this.refs[l])this.addSchema(I,l,t)}async function a(l){let I=this._loading[l];if(I)return I;try{return await(this._loading[l]=i(l))}finally{delete this._loading[l]}}}addSchema(e,t,i,n=this.opts.validateSchema){if(Array.isArray(e)){for(let s of e)this.addSchema(s,void 0,i,n);return this}let o;if(typeof e==="object"){let{schemaId:s}=this.opts;if(o=e[s],o!==void 0&&typeof o!="string")throw Error(`schema ${s} must be string`)}return t=(0,vn.normalizeId)(t||o),this._checkUnique(t),this.schemas[t]=this._addSchema(e,i,t,n,!0),this}addMetaSchema(e,t,i=this.opts.validateSchema){return this.addSchema(e,t,!0,i),this}validateSchema(e,t){if(typeof e=="boolean")return!0;let i;if(i=e.$schema,i!==void 0&&typeof i!="string")throw Error("$schema must be a string");if(i=i||this.opts.defaultMeta||this.defaultMeta(),!i)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let n=this.validate(i,e);if(!n&&t){let o="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(o);else throw Error(o)}return n}getSchema(e){let t;while(typeof(t=AC.call(this,e))=="string")e=t;if(t===void 0){let{schemaId:i}=this.opts,n=new Hn.SchemaEnv({schema:{},schemaId:i});if(t=Hn.resolveSchema.call(this,n,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=AC.call(this,e);if(typeof t=="object")this._cache.delete(t.schema);return delete this.schemas[e],delete this.refs[e],this}case"object":{let t=e;this._cache.delete(t);let i=e[this.opts.schemaId];if(i)i=(0,vn.normalizeId)(i),delete this.schemas[i],delete this.refs[i];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let i;if(typeof e=="string"){if(i=e,typeof t=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=i}else if(typeof e=="object"&&t===void 0){if(t=e,i=t.keyword,Array.isArray(i)&&!i.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(u0.call(this,i,t),!t)return(0,Vg.eachItem)(i,(o)=>yg.call(this,o)),this;p0.call(this,t);let n={...t,type:(0,Lo.getJSONTypes)(t.type),schemaType:(0,Lo.getJSONTypes)(t.schemaType)};return(0,Vg.eachItem)(i,n.type.length===0?(o)=>yg.call(this,o,n):(o)=>n.type.forEach((s)=>yg.call(this,o,n,s))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t=="object"?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let i of t.rules){let n=i.rules.findIndex((o)=>o.keyword===e);if(n>=0)i.rules.splice(n,1)}return this}addFormat(e,t){if(typeof t=="string")t=new RegExp(t);return this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:i="data"}={}){if(!e||e.length===0)return"No errors";return e.map((n)=>`${i}${n.instancePath} ${n.message}`).reduce((n,o)=>n+t+o)}$dataMetaSchema(e,t){let i=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let n of t){let o=n.split("/").slice(1),s=e;for(let r of o)s=s[r];for(let r in i){let g=i[r];if(typeof g!="object")continue;let{$data:a}=g.definition,l=s[r];if(a&&l)s[r]=WC(l)}}return e}_removeAllSchemas(e,t){for(let i in e){let n=e[i];if(!t||t.test(i)){if(typeof n=="string")delete e[i];else if(n&&!n.meta)this._cache.delete(n.schema),delete e[i]}}}_addSchema(e,t,i,n=this.opts.validateSchema,o=this.opts.addUsedSchema){let s,{schemaId:r}=this.opts;if(typeof e=="object")s=e[r];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof e!="boolean")throw Error("schema must be object or boolean");let g=this._cache.get(e);if(g!==void 0)return g;i=(0,vn.normalizeId)(s||i);let a=vn.getSchemaRefs.call(this,e,i);if(g=new Hn.SchemaEnv({schema:e,schemaId:r,meta:t,baseId:i,localRefs:a}),this._cache.set(g.schema,g),o&&!i.startsWith("#")){if(i)this._checkUnique(i);this.refs[i]=g}if(n)this.validateSchema(e,!0);return g}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta)this._compileMetaSchema(e);else Hn.compileSchema.call(this,e);if(!e.validate)throw Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{Hn.compileSchema.call(this,e)}finally{this.opts=t}}}Mo.ValidationError=$G.default;Mo.MissingRefError=ZC.default;oe.default=Mo;function pC(e,t,i,n="error"){for(let o in e){let s=o;if(s in t)this.logger[n](`${i}: option ${o}. ${e[s]}`)}}function AC(e){return e=(0,vn.normalizeId)(e),this.schemas[e]||this.refs[e]}function g0(){let e=this.opts.schemas;if(!e)return;if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function a0(){for(let e in this.opts.formats){let t=this.opts.formats[e];if(t)this.addFormat(e,t)}}function l0(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let i=e[t];if(!i.keyword)i.keyword=t;this.addKeyword(i)}}function I0(){let e={...this.opts};for(let t of i0)delete e[t];return e}var d0={log(){},warn(){},error(){}};function c0(e){if(e===!1)return d0;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw Error("logger must implement log, warn and error methods")}var C0=/^[a-z_$][a-z0-9_$:-]*$/i;function u0(e,t){let{RULES:i}=this;if((0,Vg.eachItem)(e,(n)=>{if(i.keywords[n])throw Error(`Keyword ${n} is already defined`);if(!C0.test(n))throw Error(`Keyword ${n} has invalid name`)}),!t)return;if(t.$data&&!(("code"in t)||("validate"in t)))throw Error('$data keyword must have "code" or "validate" function')}function yg(e,t,i){var n;let o=t===null||t===void 0?void 0:t.post;if(i&&o)throw Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,r=o?s.post:s.rules.find(({type:a})=>a===i);if(!r)r={type:i,rules:[]},s.rules.push(r);if(s.keywords[e]=!0,!t)return;let g={keyword:e,definition:{...t,type:(0,Lo.getJSONTypes)(t.type),schemaType:(0,Lo.getJSONTypes)(t.schemaType)}};if(t.before)m0.call(this,r,g,t.before);else r.rules.push(g);s.all[e]=g,(n=t.implements)===null||n===void 0||n.forEach((a)=>this.addKeyword(a))}function m0(e,t,i){let n=e.rules.findIndex((o)=>o.keyword===i);if(n>=0)e.rules.splice(n,0,t);else e.rules.push(t),this.logger.warn(`rule ${i} is not defined`)}function p0(e){let{metaSchema:t}=e;if(t===void 0)return;if(e.$data&&this.opts.$data)t=WC(t);e.validateSchema=this.compile(t,!0)}var A0={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function WC(e){return{anyOf:[e,A0]}}});var hC=y(function(Rg){Object.defineProperty(Rg,"__esModule",{value:!0});var Z0={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Rg.default=Z0});var es=y(function(Dt){Object.defineProperty(Dt,"__esModule",{value:!0});Dt.callRef=Dt.getValidate=void 0;var b0=wi(),fC=ke(),ye=v(),Hi=ve(),yC=wn(),$o=N(),W0={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:i,it:n}=e,{baseId:o,schemaEnv:s,validateName:r,opts:g,self:a}=n,{root:l}=s;if((i==="#"||i==="#/")&&o===l.baseId)return d();let I=yC.resolveRef.call(a,l,o,i);if(I===void 0)throw new b0.default(n.opts.uriResolver,o,i);if(I instanceof yC.SchemaEnv)return u(I);return c(I);function d(){if(s===l)return qo(e,r,s,s.$async);let C=t.scopeValue("root",{ref:l});return qo(e,ye._`${C}.validate`,l,l.$async)}function u(C){let A=VC(e,C);qo(e,A,C,C.$async)}function c(C){let A=t.scopeValue("schema",g.code.source===!0?{ref:C,code:(0,ye.stringify)(C)}:{ref:C}),m=t.name("valid"),p=e.subschema({schema:C,dataTypes:[],schemaPath:ye.nil,topSchemaRef:A,errSchemaPath:i},m);e.mergeEvaluated(p),e.ok(m)}}};function VC(e,t){let{gen:i}=e;return t.validate?i.scopeValue("validate",{ref:t.validate}):ye._`${i.scopeValue("wrapper",{ref:t})}.validate`}Dt.getValidate=VC;function qo(e,t,i,n){let{gen:o,it:s}=e,{allErrors:r,schemaEnv:g,opts:a}=s,l=a.passContext?Hi.default.this:ye.nil;if(n)I();else d();function I(){if(!g.$async)throw Error("async schema referenced by sync schema");let C=o.let("valid");o.try(()=>{if(o.code(ye._`await ${(0,fC.callValidateCode)(e,t,l)}`),c(t),!r)o.assign(C,!0)},(A)=>{if(o.if(ye._`!(${A} instanceof ${s.ValidationError})`,()=>o.throw(A)),u(A),!r)o.assign(C,!1)}),e.ok(C)}function d(){e.result((0,fC.callValidateCode)(e,t,l),()=>c(t),()=>u(t))}function u(C){let A=ye._`${C}.errors`;o.assign(Hi.default.vErrors,ye._`${Hi.default.vErrors} === null ? ${A} : ${Hi.default.vErrors}.concat(${A})`),o.assign(Hi.default.errors,ye._`${Hi.default.vErrors}.length`)}function c(C){var A;if(!s.opts.unevaluated)return;let m=(A=i===null||i===void 0?void 0:i.validate)===null||A===void 0?void 0:A.evaluated;if(s.props!==!0)if(m&&!m.dynamicProps){if(m.props!==void 0)s.props=$o.mergeEvaluated.props(o,m.props,s.props)}else{let p=o.var("props",ye._`${C}.evaluated.props`);s.props=$o.mergeEvaluated.props(o,p,s.props,ye.Name)}if(s.items!==!0)if(m&&!m.dynamicItems){if(m.items!==void 0)s.items=$o.mergeEvaluated.items(o,m.items,s.items)}else{let p=o.var("items",ye._`${C}.evaluated.items`);s.items=$o.mergeEvaluated.items(o,p,s.items,ye.Name)}}}Dt.callRef=qo;Dt.default=W0});var wg=y(function(Gg){Object.defineProperty(Gg,"__esModule",{value:!0});var h0=hC(),f0=es(),y0=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",h0.default,f0.default];Gg.default=y0});var BC=y(function(Fg){Object.defineProperty(Fg,"__esModule",{value:!0});var ts=v(),Pt=ts.operators,is={maximum:{okStr:"<=",ok:Pt.LTE,fail:Pt.GT},minimum:{okStr:">=",ok:Pt.GTE,fail:Pt.LT},exclusiveMaximum:{okStr:"<",ok:Pt.LT,fail:Pt.GTE},exclusiveMinimum:{okStr:">",ok:Pt.GT,fail:Pt.LTE}},V0={message:({keyword:e,schemaCode:t})=>ts.str`must be ${is[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>ts._`{comparison: ${is[e].okStr}, limit: ${t}}`},B0={keyword:Object.keys(is),type:"number",schemaType:"number",$data:!0,error:V0,code(e){let{keyword:t,data:i,schemaCode:n}=e;e.fail$data(ts._`${i} ${is[t].fail} ${n} || isNaN(${i})`)}};Fg.default=B0});var RC=y(function(Hg){Object.defineProperty(Hg,"__esModule",{value:!0});var kn=v(),R0={message:({schemaCode:e})=>kn.str`must be multiple of ${e}`,params:({schemaCode:e})=>kn._`{multipleOf: ${e}}`},G0={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:R0,code(e){let{gen:t,data:i,schemaCode:n,it:o}=e,s=o.opts.multipleOfPrecision,r=t.let("res"),g=s?kn._`Math.abs(Math.round(${r}) - ${r}) > 1e-${s}`:kn._`${r} !== parseInt(${r})`;e.fail$data(kn._`(${n} === 0 || (${r} = ${i}/${n}, ${g}))`)}};Hg.default=G0});var wC=y(function(vg){Object.defineProperty(vg,"__esModule",{value:!0});function GC(e){let t=e.length,i=0,n=0,o;while(n<t)if(i++,o=e.charCodeAt(n++),o>=55296&&o<=56319&&n<t){if(o=e.charCodeAt(n),(o&64512)===56320)n++}return i}vg.default=GC;GC.code='require("ajv/dist/runtime/ucs2length").default'});var FC=y(function(kg){Object.defineProperty(kg,"__esModule",{value:!0});var Qt=v(),w0=N(),F0=wC(),H0={message({keyword:e,schemaCode:t}){let i=e==="maxLength"?"more":"fewer";return Qt.str`must NOT have ${i} than ${t} characters`},params:({schemaCode:e})=>Qt._`{limit: ${e}}`},v0={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:H0,code(e){let{keyword:t,data:i,schemaCode:n,it:o}=e,s=t==="maxLength"?Qt.operators.GT:Qt.operators.LT,r=o.opts.unicode===!1?Qt._`${i}.length`:Qt._`${(0,w0.useFunc)(e.gen,F0.default)}(${i})`;e.fail$data(Qt._`${r} ${s} ${n}`)}};kg.default=v0});var HC=y(function(Pg){Object.defineProperty(Pg,"__esModule",{value:!0});var k0=ke(),ns=v(),P0={message:({schemaCode:e})=>ns.str`must match pattern "${e}"`,params:({schemaCode:e})=>ns._`{pattern: ${e}}`},Y0={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:P0,code(e){let{data:t,$data:i,schema:n,schemaCode:o,it:s}=e,r=s.opts.unicodeRegExp?"u":"",g=i?ns._`(new RegExp(${o}, ${r}))`:(0,k0.usePattern)(e,n);e.fail$data(ns._`!${g}.test(${t})`)}};Pg.default=Y0});var vC=y(function(Yg){Object.defineProperty(Yg,"__esModule",{value:!0});var Pn=v(),N0={message({keyword:e,schemaCode:t}){let i=e==="maxProperties"?"more":"fewer";return Pn.str`must NOT have ${i} than ${t} properties`},params:({schemaCode:e})=>Pn._`{limit: ${e}}`},X0={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:N0,code(e){let{keyword:t,data:i,schemaCode:n}=e,o=t==="maxProperties"?Pn.operators.GT:Pn.operators.LT;e.fail$data(Pn._`Object.keys(${i}).length ${o} ${n}`)}};Yg.default=X0});var kC=y(function(Ng){Object.defineProperty(Ng,"__esModule",{value:!0});var Yn=ke(),Nn=v(),S0=N(),x0={message:({params:{missingProperty:e}})=>Nn.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>Nn._`{missingProperty: ${e}}`},J0={keyword:"required",type:"object",schemaType:"array",$data:!0,error:x0,code(e){let{gen:t,schema:i,schemaCode:n,data:o,$data:s,it:r}=e,{opts:g}=r;if(!s&&i.length===0)return;let a=i.length>=g.loopRequired;if(r.allErrors)l();else I();if(g.strictRequired){let c=e.parentSchema.properties,{definedProperties:C}=e.it;for(let A of i)if((c===null||c===void 0?void 0:c[A])===void 0&&!C.has(A)){let m=r.schemaEnv.baseId+r.errSchemaPath,p=`required property "${A}" is not defined at "${m}" (strictRequired)`;(0,S0.checkStrictMode)(r,p,r.opts.strictRequired)}}function l(){if(a||s)e.block$data(Nn.nil,d);else for(let c of i)(0,Yn.checkReportMissingProp)(e,c)}function I(){let c=t.let("missing");if(a||s){let C=t.let("valid",!0);e.block$data(C,()=>u(c,C)),e.ok(C)}else t.if((0,Yn.checkMissingProp)(e,i,c)),(0,Yn.reportMissingProp)(e,c),t.else()}function d(){t.forOf("prop",n,(c)=>{e.setParams({missingProperty:c}),t.if((0,Yn.noPropertyInData)(t,o,c,g.ownProperties),()=>e.error())})}function u(c,C){e.setParams({missingProperty:c}),t.forOf(c,n,()=>{t.assign(C,(0,Yn.propertyInData)(t,o,c,g.ownProperties)),t.if((0,Nn.not)(C),()=>{e.error(),t.break()})},Nn.nil)}}};Ng.default=J0});var PC=y(function(Xg){Object.defineProperty(Xg,"__esModule",{value:!0});var Xn=v(),E0={message({keyword:e,schemaCode:t}){let i=e==="maxItems"?"more":"fewer";return Xn.str`must NOT have ${i} than ${t} items`},params:({schemaCode:e})=>Xn._`{limit: ${e}}`},U0={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:E0,code(e){let{keyword:t,data:i,schemaCode:n}=e,o=t==="maxItems"?Xn.operators.GT:Xn.operators.LT;e.fail$data(Xn._`${i}.length ${o} ${n}`)}};Xg.default=U0});var os=y(function(Sg){Object.defineProperty(Sg,"__esModule",{value:!0});var YC=rg();YC.code='require("ajv/dist/runtime/equal").default';Sg.default=YC});var NC=y(function(Jg){Object.defineProperty(Jg,"__esModule",{value:!0});var xg=fn(),se=v(),O0=N(),T0=os(),z0={message:({params:{i:e,j:t}})=>se.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>se._`{i: ${e}, j: ${t}}`},j0={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:z0,code(e){let{gen:t,data:i,$data:n,schema:o,parentSchema:s,schemaCode:r,it:g}=e;if(!n&&!o)return;let a=t.let("valid"),l=s.items?(0,xg.getSchemaTypes)(s.items):[];e.block$data(a,I,se._`${r} === false`),e.ok(a);function I(){let C=t.let("i",se._`${i}.length`),A=t.let("j");e.setParams({i:C,j:A}),t.assign(a,!0),t.if(se._`${C} > 1`,()=>(d()?u:c)(C,A))}function d(){return l.length>0&&!l.some((C)=>C==="object"||C==="array")}function u(C,A){let m=t.name("item"),p=(0,xg.checkDataTypes)(l,m,g.opts.strictNumbers,xg.DataType.Wrong),Z=t.const("indices",se._`{}`);t.for(se._`;${C}--;`,()=>{if(t.let(m,se._`${i}[${C}]`),t.if(p,se._`continue`),l.length>1)t.if(se._`typeof ${m} == "string"`,se._`${m} += "_"`);t.if(se._`typeof ${Z}[${m}] == "number"`,()=>{t.assign(A,se._`${Z}[${m}]`),e.error(),t.assign(a,!1).break()}).code(se._`${Z}[${m}] = ${C}`)})}function c(C,A){let m=(0,O0.useFunc)(t,T0.default),p=t.name("outer");t.label(p).for(se._`;${C}--;`,()=>t.for(se._`${A} = ${C}; ${A}--;`,()=>t.if(se._`${m}(${i}[${C}], ${i}[${A}])`,()=>{e.error(),t.assign(a,!1).break(p)})))}}};Jg.default=j0});var XC=y(function(Ug){Object.defineProperty(Ug,"__esModule",{value:!0});var Eg=v(),D0=N(),Q0=os(),_0={message:"must be equal to constant",params:({schemaCode:e})=>Eg._`{allowedValue: ${e}}`},K0={keyword:"const",$data:!0,error:_0,code(e){let{gen:t,data:i,$data:n,schemaCode:o,schema:s}=e;if(n||s&&typeof s=="object")e.fail$data(Eg._`!${(0,D0.useFunc)(t,Q0.default)}(${i}, ${o})`);else e.fail(Eg._`${s} !== ${i}`)}};Ug.default=K0});var SC=y(function(Og){Object.defineProperty(Og,"__esModule",{value:!0});var Sn=v(),L0=N(),M0=os(),$0={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>Sn._`{allowedValues: ${e}}`},q0={keyword:"enum",schemaType:"array",$data:!0,error:$0,code(e){let{gen:t,data:i,$data:n,schema:o,schemaCode:s,it:r}=e;if(!n&&o.length===0)throw Error("enum must have non-empty array");let g=o.length>=r.opts.loopEnum,a,l=()=>a!==null&&a!==void 0?a:a=(0,L0.useFunc)(t,M0.default),I;if(g||n)I=t.let("valid"),e.block$data(I,d);else{if(!Array.isArray(o))throw Error("ajv implementation error");let c=t.const("vSchema",s);I=(0,Sn.or)(...o.map((C,A)=>u(c,A)))}e.pass(I);function d(){t.assign(I,!1),t.forOf("v",s,(c)=>t.if(Sn._`${l()}(${i}, ${c})`,()=>t.assign(I,!0).break()))}function u(c,C){let A=o[C];return typeof A==="object"&&A!==null?Sn._`${l()}(${i}, ${c}[${C}])`:Sn._`${i} === ${A}`}}};Og.default=q0});var zg=y(function(Tg){Object.defineProperty(Tg,"__esModule",{value:!0});var ew=BC(),tw=RC(),iw=FC(),nw=HC(),ow=vC(),sw=kC(),rw=PC(),gw=NC(),aw=XC(),lw=SC(),Iw=[ew.default,tw.default,iw.default,nw.default,ow.default,sw.default,rw.default,gw.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},aw.default,lw.default];Tg.default=Iw});var Dg=y(function(xn){Object.defineProperty(xn,"__esModule",{value:!0});xn.validateAdditionalItems=void 0;var _t=v(),jg=N(),dw={message:({params:{len:e}})=>_t.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>_t._`{limit: ${e}}`},cw={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:dw,code(e){let{parentSchema:t,it:i}=e,{items:n}=t;if(!Array.isArray(n)){(0,jg.checkStrictMode)(i,'"additionalItems" is ignored when "items" is not an array of schemas');return}xC(e,n)}};function xC(e,t){let{gen:i,schema:n,data:o,keyword:s,it:r}=e;r.items=!0;let g=i.const("len",_t._`${o}.length`);if(n===!1)e.setParams({len:t.length}),e.pass(_t._`${g} <= ${t.length}`);else if(typeof n=="object"&&!(0,jg.alwaysValidSchema)(r,n)){let l=i.var("valid",_t._`${g} <= ${t.length}`);i.if((0,_t.not)(l),()=>a(l)),e.ok(l)}function a(l){i.forRange("i",t.length,g,(I)=>{if(e.subschema({keyword:s,dataProp:I,dataPropType:jg.Type.Num},l),!r.allErrors)i.if((0,_t.not)(l),()=>i.break())})}}xn.validateAdditionalItems=xC;xn.default=cw});var Qg=y(function(Jn){Object.defineProperty(Jn,"__esModule",{value:!0});Jn.validateTuple=void 0;var JC=v(),ss=N(),Cw=ke(),uw={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:i}=e;if(Array.isArray(t))return EC(e,"additionalItems",t);if(i.items=!0,(0,ss.alwaysValidSchema)(i,t))return;e.ok((0,Cw.validateArray)(e))}};function EC(e,t,i=e.schema){let{gen:n,parentSchema:o,data:s,keyword:r,it:g}=e;if(I(o),g.opts.unevaluated&&i.length&&g.items!==!0)g.items=ss.mergeEvaluated.items(n,i.length,g.items);let a=n.name("valid"),l=n.const("len",JC._`${s}.length`);i.forEach((d,u)=>{if((0,ss.alwaysValidSchema)(g,d))return;n.if(JC._`${l} > ${u}`,()=>e.subschema({keyword:r,schemaProp:u,dataProp:u},a)),e.ok(a)});function I(d){let{opts:u,errSchemaPath:c}=g,C=i.length,A=C===d.minItems&&(C===d.maxItems||d[t]===!1);if(u.strictTuples&&!A){let m=`"${r}" is ${C}-tuple, but minItems or maxItems/${t} are not specified or different at path "${c}"`;(0,ss.checkStrictMode)(g,m,u.strictTuples)}}}Jn.validateTuple=EC;Jn.default=uw});var UC=y(function(_g){Object.defineProperty(_g,"__esModule",{value:!0});var mw=Qg(),pw={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(e)=>(0,mw.validateTuple)(e,"items")};_g.default=pw});var TC=y(function(Kg){Object.defineProperty(Kg,"__esModule",{value:!0});var OC=v(),Aw=N(),Zw=ke(),bw=Dg(),Ww={message:({params:{len:e}})=>OC.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>OC._`{limit: ${e}}`},hw={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:Ww,code(e){let{schema:t,parentSchema:i,it:n}=e,{prefixItems:o}=i;if(n.items=!0,(0,Aw.alwaysValidSchema)(n,t))return;if(o)(0,bw.validateAdditionalItems)(e,o);else e.ok((0,Zw.validateArray)(e))}};Kg.default=hw});var zC=y(function(Lg){Object.defineProperty(Lg,"__esModule",{value:!0});var Ye=v(),rs=N(),fw={message:({params:{min:e,max:t}})=>t===void 0?Ye.str`must contain at least ${e} valid item(s)`:Ye.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?Ye._`{minContains: ${e}}`:Ye._`{minContains: ${e}, maxContains: ${t}}`},yw={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:fw,code(e){let{gen:t,schema:i,parentSchema:n,data:o,it:s}=e,r,g,{minContains:a,maxContains:l}=n;if(s.opts.next)r=a===void 0?1:a,g=l;else r=1;let I=t.const("len",Ye._`${o}.length`);if(e.setParams({min:r,max:g}),g===void 0&&r===0){(0,rs.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(g!==void 0&&r>g){(0,rs.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,rs.alwaysValidSchema)(s,i)){let A=Ye._`${I} >= ${r}`;if(g!==void 0)A=Ye._`${A} && ${I} <= ${g}`;e.pass(A);return}s.items=!0;let d=t.name("valid");if(g===void 0&&r===1)c(d,()=>t.if(d,()=>t.break()));else if(r===0){if(t.let(d,!0),g!==void 0)t.if(Ye._`${o}.length > 0`,u)}else t.let(d,!1),u();e.result(d,()=>e.reset());function u(){let A=t.name("_valid"),m=t.let("count",0);c(A,()=>t.if(A,()=>C(m)))}function c(A,m){t.forRange("i",0,I,(p)=>{e.subschema({keyword:"contains",dataProp:p,dataPropType:rs.Type.Num,compositeRule:!0},A),m()})}function C(A){if(t.code(Ye._`${A}++`),g===void 0)t.if(Ye._`${A} >= ${r}`,()=>t.assign(d,!0).break());else if(t.if(Ye._`${A} > ${g}`,()=>t.assign(d,!1).break()),r===1)t.assign(d,!0);else t.if(Ye._`${A} >= ${r}`,()=>t.assign(d,!0))}}};Lg.default=yw});var gs=y(function(tt){Object.defineProperty(tt,"__esModule",{value:!0});tt.validateSchemaDeps=tt.validatePropertyDeps=tt.error=void 0;var Mg=v(),Vw=N(),En=ke();tt.error={message:({params:{property:e,depsCount:t,deps:i}})=>{let n=t===1?"property":"properties";return Mg.str`must have ${n} ${i} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:i,missingProperty:n}})=>Mg._`{property: ${e},
|
|
8
8
|
missingProperty: ${n},
|
|
9
9
|
depsCount: ${t},
|
|
10
|
-
deps: ${r}}`};var WS={keyword:"dependencies",type:"object",schemaType:"object",error:Ze.error,code(e){let[t,r]=HS(e);ef(e,t),tf(e,r)}};function HS({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let i=Array.isArray(e[n])?t:r;i[n]=e[n]}return[t,r]}function ef(e,t=e.schema){let{gen:r,data:n,it:i}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let o in t){let a=t[o];if(a.length===0)continue;let l=(0,wn.propertyInData)(r,n,o,i.opts.ownProperties);if(e.setParams({property:o,depsCount:a.length,deps:a.join(", ")}),i.allErrors)r.if(l,()=>{for(let d of a)(0,wn.checkReportMissingProp)(e,d)});else r.if(Ea._`${l} && (${(0,wn.checkMissingProp)(e,a,s)})`),(0,wn.reportMissingProp)(e,s),r.else()}}Ze.validatePropertyDeps=ef;function tf(e,t=e.schema){let{gen:r,data:n,keyword:i,it:s}=e,o=r.name("valid");for(let a in t){if((0,KS.alwaysValidSchema)(s,t[a]))continue;r.if((0,wn.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let l=e.subschema({keyword:i,schemaProp:a},o);e.mergeValidEvaluated(l,o)},()=>r.var(o,!0)),e.ok(o)}}Ze.validateSchemaDeps=tf;Ze.default=WS});var nf=P(function(Sa){Object.defineProperty(Sa,"__esModule",{value:!0});var rf=O(),JS=D(),QS={message:"property name must be valid",params:({params:e})=>rf._`{propertyName: ${e.propertyName}}`},YS={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:QS,code(e){let{gen:t,schema:r,data:n,it:i}=e;if((0,JS.alwaysValidSchema)(i,r))return;let s=t.name("valid");t.forIn("key",n,(o)=>{e.setParams({propertyName:o}),e.subschema({keyword:"propertyNames",data:o,dataTypes:["string"],propertyName:o,compositeRule:!0},s),t.if((0,rf.not)(s),()=>{if(e.error(!0),!i.allErrors)t.break()})}),e.ok(s)}};Sa.default=YS});var ja=P(function(xa){Object.defineProperty(xa,"__esModule",{value:!0});var Ui=Oe(),Be=O(),XS=Ce(),Bi=D(),ZS={message:"must NOT have additional properties",params:({params:e})=>Be._`{additionalProperty: ${e.additionalProperty}}`},ex={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:ZS,code(e){let{gen:t,schema:r,parentSchema:n,data:i,errsCount:s,it:o}=e;if(!s)throw Error("ajv implementation error");let{allErrors:a,opts:l}=o;if(o.props=!0,l.removeAdditional!=="all"&&(0,Bi.alwaysValidSchema)(o,r))return;let d=(0,Ui.allSchemaProperties)(n.properties),c=(0,Ui.allSchemaProperties)(n.patternProperties);p(),e.ok(Be._`${s} === ${XS.default.errors}`);function p(){t.forIn("key",i,(g)=>{if(!d.length&&!c.length)f(g);else t.if(h(g),()=>f(g))})}function h(g){let y;if(d.length>8){let b=(0,Bi.schemaRefOrVal)(o,n.properties,"properties");y=(0,Ui.isOwnProperty)(t,b,g)}else if(d.length)y=(0,Be.or)(...d.map((b)=>Be._`${g} === ${b}`));else y=Be.nil;if(c.length)y=(0,Be.or)(y,...c.map((b)=>Be._`${(0,Ui.usePattern)(e,b)}.test(${g})`));return(0,Be.not)(y)}function u(g){t.code(Be._`delete ${i}[${g}]`)}function f(g){if(l.removeAdditional==="all"||l.removeAdditional&&r===!1){u(g);return}if(r===!1){if(e.setParams({additionalProperty:g}),e.error(),!a)t.break();return}if(typeof r=="object"&&!(0,Bi.alwaysValidSchema)(o,r)){let y=t.name("valid");if(l.removeAdditional==="failing")m(g,y,!1),t.if((0,Be.not)(y),()=>{e.reset(),u(g)});else if(m(g,y),!a)t.if((0,Be.not)(y),()=>t.break())}}function m(g,y,b){let v={keyword:"additionalProperties",dataProp:g,dataPropType:Bi.Type.Str};if(b===!1)Object.assign(v,{compositeRule:!0,createErrors:!1,allErrors:!1});e.subschema(v,y)}}};xa.default=ex});var af=P(function(Ca){Object.defineProperty(Ca,"__esModule",{value:!0});var tx=gr(),sf=Oe(),Ra=D(),of=ja(),rx={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:i,it:s}=e;if(s.opts.removeAdditional==="all"&&n.additionalProperties===void 0)of.default.code(new tx.KeywordCxt(s,of.default,"additionalProperties"));let o=(0,sf.allSchemaProperties)(r);for(let p of o)s.definedProperties.add(p);if(s.opts.unevaluated&&o.length&&s.props!==!0)s.props=Ra.mergeEvaluated.props(t,(0,Ra.toHash)(o),s.props);let a=o.filter((p)=>!(0,Ra.alwaysValidSchema)(s,r[p]));if(a.length===0)return;let l=t.name("valid");for(let p of a){if(d(p))c(p);else{if(t.if((0,sf.propertyInData)(t,i,p,s.opts.ownProperties)),c(p),!s.allErrors)t.else().var(l,!0);t.endIf()}e.it.definedProperties.add(p),e.ok(l)}function d(p){return s.opts.useDefaults&&!s.compositeRule&&r[p].default!==void 0}function c(p){e.subschema({keyword:"properties",schemaProp:p,dataProp:p},l)}}};Ca.default=rx});var uf=P(function(Oa){Object.defineProperty(Oa,"__esModule",{value:!0});var lf=Oe(),Gi=O(),df=D(),cf=D(),nx={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:i,it:s}=e,{opts:o}=s,a=(0,lf.allSchemaProperties)(r),l=a.filter((m)=>(0,df.alwaysValidSchema)(s,r[m]));if(a.length===0||l.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let d=o.strictSchema&&!o.allowMatchingProperties&&i.properties,c=t.name("valid");if(s.props!==!0&&!(s.props instanceof Gi.Name))s.props=(0,cf.evaluatedPropsToName)(t,s.props);let{props:p}=s;h();function h(){for(let m of a){if(d)u(m);if(s.allErrors)f(m);else t.var(c,!0),f(m),t.if(c)}}function u(m){for(let g in d)if(new RegExp(m).test(g))(0,df.checkStrictMode)(s,`property ${g} matches pattern ${m} (use allowMatchingProperties)`)}function f(m){t.forIn("key",n,(g)=>{t.if(Gi._`${(0,lf.usePattern)(e,m)}.test(${g})`,()=>{let y=l.includes(m);if(!y)e.subschema({keyword:"patternProperties",schemaProp:m,dataProp:g,dataPropType:cf.Type.Str},c);if(s.opts.unevaluated&&p!==!0)t.assign(Gi._`${p}[${g}]`,!0);else if(!y&&!s.allErrors)t.if((0,Gi.not)(c),()=>t.break())})})}}};Oa.default=nx});var pf=P(function(Fa){Object.defineProperty(Fa,"__esModule",{value:!0});var ix=D(),sx={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,ix.alwaysValidSchema)(n,r)){e.fail();return}let i=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},i),e.failResult(i,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Fa.default=sx});var ff=P(function(Ta){Object.defineProperty(Ta,"__esModule",{value:!0});var ox=Oe(),ax={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:ox.validateUnion,error:{message:"must match a schema in anyOf"}};Ta.default=ax});var mf=P(function(Aa){Object.defineProperty(Aa,"__esModule",{value:!0});var Vi=O(),lx=D(),dx={message:"must match exactly one schema in oneOf",params:({params:e})=>Vi._`{passingSchemas: ${e.passing}}`},cx={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:dx,code(e){let{gen:t,schema:r,parentSchema:n,it:i}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(i.opts.discriminator&&n.discriminator)return;let s=r,o=t.let("valid",!1),a=t.let("passing",null),l=t.name("_valid");e.setParams({passing:a}),t.block(d),e.result(o,()=>e.reset(),()=>e.error(!0));function d(){s.forEach((c,p)=>{let h;if((0,lx.alwaysValidSchema)(i,c))t.var(l,!0);else h=e.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},l);if(p>0)t.if(Vi._`${l} && ${o}`).assign(o,!1).assign(a,Vi._`[${a}, ${p}]`).else();t.if(l,()=>{if(t.assign(o,!0),t.assign(a,p),h)e.mergeEvaluated(h,Vi.Name)})})}}};Aa.default=cx});var hf=P(function(ka){Object.defineProperty(ka,"__esModule",{value:!0});var ux=D(),px={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw Error("ajv implementation error");let i=t.name("valid");r.forEach((s,o)=>{if((0,ux.alwaysValidSchema)(n,s))return;let a=e.subschema({keyword:"allOf",schemaProp:o},i);e.ok(i),e.mergeEvaluated(a)})}};ka.default=px});var _f=P(function(Da){Object.defineProperty(Da,"__esModule",{value:!0});var zi=O(),yf=D(),fx={message:({params:e})=>zi.str`must match "${e.ifClause}" schema`,params:({params:e})=>zi._`{failingKeyword: ${e.ifClause}}`},mx={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:fx,code(e){let{gen:t,parentSchema:r,it:n}=e;if(r.then===void 0&&r.else===void 0)(0,yf.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let i=gf(n,"then"),s=gf(n,"else");if(!i&&!s)return;let o=t.let("valid",!0),a=t.name("_valid");if(l(),e.reset(),i&&s){let c=t.let("ifClause");e.setParams({ifClause:c}),t.if(a,d("then",c),d("else",c))}else if(i)t.if(a,d("then"));else t.if((0,zi.not)(a),d("else"));e.pass(o,()=>e.error(!0));function l(){let c=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);e.mergeEvaluated(c)}function d(c,p){return()=>{let h=e.subschema({keyword:c},a);if(t.assign(o,a),e.mergeValidEvaluated(h,o),p)t.assign(p,zi._`${c}`);else e.setParams({ifClause:c})}}}};function gf(e,t){let r=e.schema[t];return r!==void 0&&!(0,yf.alwaysValidSchema)(e,r)}Da.default=mx});var bf=P(function(Na){Object.defineProperty(Na,"__esModule",{value:!0});var hx=D(),gx={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){if(t.if===void 0)(0,hx.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};Na.default=gx});var La=P(function(Ma){Object.defineProperty(Ma,"__esModule",{value:!0});var yx=Pa(),_x=Qp(),bx=va(),Px=Xp(),vx=Zp(),wx=qi(),$x=nf(),Ix=ja(),Ex=af(),Sx=uf(),xx=pf(),jx=ff(),Rx=mf(),Cx=hf(),Ox=_f(),Fx=bf();function Tx(e=!1){let t=[xx.default,jx.default,Rx.default,Cx.default,Ox.default,Fx.default,$x.default,Ix.default,wx.default,Ex.default,Sx.default];if(e)t.push(_x.default,Px.default);else t.push(yx.default,bx.default);return t.push(vx.default),t}Ma.default=Tx});var Ua=P(function($n){Object.defineProperty($n,"__esModule",{value:!0});$n.dynamicAnchor=void 0;var qa=O(),Ax=Ce(),Pf=cn(),kx=Ti(),Dx={keyword:"$dynamicAnchor",schemaType:"string",code:(e)=>vf(e,e.schema)};function vf(e,t){let{gen:r,it:n}=e;n.schemaEnv.root.dynamicAnchors[t]=!0;let i=qa._`${Ax.default.dynamicAnchors}${(0,qa.getProperty)(t)}`,s=n.errSchemaPath==="#"?n.validateName:Nx(e);r.if(qa._`!${i}`,()=>r.assign(i,s))}$n.dynamicAnchor=vf;function Nx(e){let{schemaEnv:t,schema:r,self:n}=e.it,{root:i,baseId:s,localRefs:o,meta:a}=t.root,{schemaId:l}=n.opts,d=new Pf.SchemaEnv({schema:r,schemaId:l,root:i,baseId:s,localRefs:o,meta:a});return Pf.compileSchema.call(n,d),(0,kx.getValidate)(e,d)}$n.default=Dx});var Ba=P(function(In){Object.defineProperty(In,"__esModule",{value:!0});In.dynamicRef=void 0;var wf=O(),Mx=Ce(),$f=Ti(),Lx={keyword:"$dynamicRef",schemaType:"string",code:(e)=>If(e,e.schema)};function If(e,t){let{gen:r,keyword:n,it:i}=e;if(t[0]!=="#")throw Error(`"${n}" only supports hash fragment reference`);let s=t.slice(1);if(i.allErrors)o();else{let l=r.let("valid",!1);o(l),e.ok(l)}function o(l){if(i.schemaEnv.root.dynamicAnchors[s]){let d=r.let("_v",wf._`${Mx.default.dynamicAnchors}${(0,wf.getProperty)(s)}`);r.if(d,a(d,l),a(i.validateName,l))}else a(i.validateName,l)()}function a(l,d){return d?()=>r.block(()=>{(0,$f.callRef)(e,l),r.let(d,!0)}):()=>(0,$f.callRef)(e,l)}}In.dynamicRef=If;In.default=Lx});var Ef=P(function(Ga){Object.defineProperty(Ga,"__esModule",{value:!0});var qx=Ua(),Ux=D(),Bx={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){if(e.schema)(0,qx.dynamicAnchor)(e,"");else(0,Ux.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};Ga.default=Bx});var Sf=P(function(Va){Object.defineProperty(Va,"__esModule",{value:!0});var Gx=Ba(),Vx={keyword:"$recursiveRef",schemaType:"string",code:(e)=>(0,Gx.dynamicRef)(e,e.schema)};Va.default=Vx});var xf=P(function(za){Object.defineProperty(za,"__esModule",{value:!0});var zx=Ua(),Kx=Ba(),Wx=Ef(),Hx=Sf(),Jx=[zx.default,Kx.default,Wx.default,Hx.default];za.default=Jx});var Rf=P(function(Ka){Object.defineProperty(Ka,"__esModule",{value:!0});var jf=qi(),Qx={keyword:"dependentRequired",type:"object",schemaType:"object",error:jf.error,code:(e)=>(0,jf.validatePropertyDeps)(e)};Ka.default=Qx});var Cf=P(function(Wa){Object.defineProperty(Wa,"__esModule",{value:!0});var Yx=qi(),Xx={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>(0,Yx.validateSchemaDeps)(e)};Wa.default=Xx});var Of=P(function(Ha){Object.defineProperty(Ha,"__esModule",{value:!0});var Zx=D(),ej={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:r}){if(t.contains===void 0)(0,Zx.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}};Ha.default=ej});var Ff=P(function(Ja){Object.defineProperty(Ja,"__esModule",{value:!0});var tj=Rf(),rj=Cf(),nj=Of(),ij=[tj.default,rj.default,nj.default];Ja.default=ij});var Af=P(function(Qa){Object.defineProperty(Qa,"__esModule",{value:!0});var Rt=O(),Tf=D(),sj=Ce(),oj={message:"must NOT have unevaluated properties",params:({params:e})=>Rt._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},aj={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:oj,code(e){let{gen:t,schema:r,data:n,errsCount:i,it:s}=e;if(!i)throw Error("ajv implementation error");let{allErrors:o,props:a}=s;if(a instanceof Rt.Name)t.if(Rt._`${a} !== true`,()=>t.forIn("key",n,(p)=>t.if(d(a,p),()=>l(p))));else if(a!==!0)t.forIn("key",n,(p)=>a===void 0?l(p):t.if(c(a,p),()=>l(p)));s.props=!0,e.ok(Rt._`${i} === ${sj.default.errors}`);function l(p){if(r===!1){if(e.setParams({unevaluatedProperty:p}),e.error(),!o)t.break();return}if(!(0,Tf.alwaysValidSchema)(s,r)){let h=t.name("valid");if(e.subschema({keyword:"unevaluatedProperties",dataProp:p,dataPropType:Tf.Type.Str},h),!o)t.if((0,Rt.not)(h),()=>t.break())}}function d(p,h){return Rt._`!${p} || !${p}[${h}]`}function c(p,h){let u=[];for(let f in p)if(p[f]===!0)u.push(Rt._`${h} !== ${f}`);return(0,Rt.and)(...u)}}};Qa.default=aj});var Df=P(function(Ya){Object.defineProperty(Ya,"__esModule",{value:!0});var Bt=O(),kf=D(),lj={message:({params:{len:e}})=>Bt.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Bt._`{limit: ${e}}`},dj={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:lj,code(e){let{gen:t,schema:r,data:n,it:i}=e,s=i.items||0;if(s===!0)return;let o=t.const("len",Bt._`${n}.length`);if(r===!1)e.setParams({len:s}),e.fail(Bt._`${o} > ${s}`);else if(typeof r=="object"&&!(0,kf.alwaysValidSchema)(i,r)){let l=t.var("valid",Bt._`${o} <= ${s}`);t.if((0,Bt.not)(l),()=>a(l,s)),e.ok(l)}i.items=!0;function a(l,d){t.forRange("i",d,o,(c)=>{if(e.subschema({keyword:"unevaluatedItems",dataProp:c,dataPropType:kf.Type.Num},l),!i.allErrors)t.if((0,Bt.not)(l),()=>t.break())})}}};Ya.default=dj});var Nf=P(function(Xa){Object.defineProperty(Xa,"__esModule",{value:!0});var cj=Af(),uj=Df(),pj=[cj.default,uj.default];Xa.default=pj});var Mf=P(function(Za){Object.defineProperty(Za,"__esModule",{value:!0});var Y=O(),fj={message:({schemaCode:e})=>Y.str`must match format "${e}"`,params:({schemaCode:e})=>Y._`{format: ${e}}`},mj={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:fj,code(e,t){let{gen:r,data:n,$data:i,schema:s,schemaCode:o,it:a}=e,{opts:l,errSchemaPath:d,schemaEnv:c,self:p}=a;if(!l.validateFormats)return;if(i)h();else u();function h(){let f=r.scopeValue("formats",{ref:p.formats,code:l.code.formats}),m=r.const("fDef",Y._`${f}[${o}]`),g=r.let("fType"),y=r.let("format");r.if(Y._`typeof ${m} == "object" && !(${m} instanceof RegExp)`,()=>r.assign(g,Y._`${m}.type || "string"`).assign(y,Y._`${m}.validate`),()=>r.assign(g,Y._`"string"`).assign(y,m)),e.fail$data((0,Y.or)(b(),v()));function b(){if(l.strictSchema===!1)return Y.nil;return Y._`${o} && !${y}`}function v(){let I=c.$async?Y._`(${m}.async ? await ${y}(${n}) : ${y}(${n}))`:Y._`${y}(${n})`,E=Y._`(typeof ${y} == "function" ? ${I} : ${y}.test(${n}))`;return Y._`${y} && ${y} !== true && ${g} === ${t} && !${E}`}}function u(){let f=p.formats[s];if(!f){b();return}if(f===!0)return;let[m,g,y]=v(f);if(m===t)e.pass(I());function b(){if(l.strictSchema===!1){p.logger.warn(E());return}throw Error(E());function E(){return`unknown format "${s}" ignored in schema at path "${d}"`}}function v(E){let w=E instanceof RegExp?(0,Y.regexpCode)(E):l.code.formats?Y._`${l.code.formats}${(0,Y.getProperty)(s)}`:void 0,x=r.scopeValue("formats",{key:s,ref:E,code:w});if(typeof E=="object"&&!(E instanceof RegExp))return[E.type||"string",E.validate,Y._`${x}.validate`];return["string",E,x]}function I(){if(typeof f=="object"&&!(f instanceof RegExp)&&f.async){if(!c.$async)throw Error("async format in sync schema");return Y._`await ${y}(${n})`}return typeof g=="function"?Y._`${y}(${n})`:Y._`${y}.test(${n})`}}}};Za.default=mj});var tl=P(function(el){Object.defineProperty(el,"__esModule",{value:!0});var hj=Mf(),gj=[hj.default];el.default=gj});var rl=P(function(Pr){Object.defineProperty(Pr,"__esModule",{value:!0});Pr.contentVocabulary=Pr.metadataVocabulary=void 0;Pr.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Pr.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var qf=P(function(nl){Object.defineProperty(nl,"__esModule",{value:!0});var yj=ra(),_j=_a(),bj=La(),Pj=xf(),vj=Ff(),wj=Nf(),$j=tl(),Lf=rl(),Ij=[Pj.default,yj.default,_j.default,(0,bj.default)(!0),$j.default,Lf.metadataVocabulary,Lf.contentVocabulary,vj.default,wj.default];nl.default=Ij});var Bf=P(function(Ki){Object.defineProperty(Ki,"__esModule",{value:!0});Ki.DiscrError=void 0;var Uf;(function(e){e.Tag="tag",e.Mapping="mapping"})(Uf||(Ki.DiscrError=Uf={}))});var ol=P(function(sl){Object.defineProperty(sl,"__esModule",{value:!0});var vr=O(),il=Bf(),Gf=cn(),Ej=yr(),Sj=D(),xj={message:({params:{discrError:e,tagName:t}})=>e===il.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>vr._`{error: ${e}, tag: ${r}, tagValue: ${t}}`},jj={keyword:"discriminator",type:"object",schemaType:"object",error:xj,code(e){let{gen:t,data:r,schema:n,parentSchema:i,it:s}=e,{oneOf:o}=i;if(!s.opts.discriminator)throw Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw Error("discriminator: requires propertyName");if(n.mapping)throw Error("discriminator: mapping is not supported");if(!o)throw Error("discriminator: requires oneOf keyword");let l=t.let("valid",!1),d=t.const("tag",vr._`${r}${(0,vr.getProperty)(a)}`);t.if(vr._`typeof ${d} == "string"`,()=>c(),()=>e.error(!1,{discrError:il.DiscrError.Tag,tag:d,tagName:a})),e.ok(l);function c(){let u=h();t.if(!1);for(let f in u)t.elseIf(vr._`${d} === ${f}`),t.assign(l,p(u[f]));t.else(),e.error(!1,{discrError:il.DiscrError.Mapping,tag:d,tagName:a}),t.endIf()}function p(u){let f=t.name("valid"),m=e.subschema({keyword:"oneOf",schemaProp:u},f);return e.mergeEvaluated(m,vr.Name),f}function h(){var u;let f={},m=y(i),g=!0;for(let I=0;I<o.length;I++){let E=o[I];if((E===null||E===void 0?void 0:E.$ref)&&!(0,Sj.schemaHasRulesButRef)(E,s.self.RULES)){let x=E.$ref;if(E=Gf.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,x),E instanceof Gf.SchemaEnv)E=E.schema;if(E===void 0)throw new Ej.default(s.opts.uriResolver,s.baseId,x)}let w=(u=E===null||E===void 0?void 0:E.properties)===null||u===void 0?void 0:u[a];if(typeof w!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(m||y(E)),b(w,I)}if(!g)throw Error(`discriminator: "${a}" must be required`);return f;function y({required:I}){return Array.isArray(I)&&I.includes(a)}function b(I,E){if(I.const)v(I.const,E);else if(I.enum)for(let w of I.enum)v(w,E);else throw Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function v(I,E){if(typeof I!="string"||I in f)throw Error(`discriminator: "${a}" values must be unique strings`);f[I]=E}}}};sl.default=jj});var Vf=P(function(rN,Rj){Rj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var zf=P(function(nN,Cj){Cj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var Kf=P(function(iN,Oj){Oj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var Wf=P(function(sN,Fj){Fj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var Hf=P(function(oN,Tj){Tj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var Jf=P(function(aN,Aj){Aj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var Qf=P(function(lN,kj){kj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var Yf=P(function(dN,Dj){Dj.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var Xf=P(function(al){Object.defineProperty(al,"__esModule",{value:!0});var Nj=Vf(),Mj=zf(),Lj=Kf(),qj=Wf(),Uj=Hf(),Bj=Jf(),Gj=Qf(),Vj=Yf(),zj=["/properties"];function Kj(e){return[Nj,Mj,Lj,qj,Uj,t(this,Bj),Gj,t(this,Vj)].forEach((r)=>this.addMetaSchema(r,void 0,!1)),this;function t(r,n){return e?r.$dataMetaSchema(n,zj):n}}al.default=Kj});var cl=P(function(W,dl){Object.defineProperty(W,"__esModule",{value:!0});W.MissingRefError=W.ValidationError=W.CodeGen=W.Name=W.nil=W.stringify=W.str=W._=W.KeywordCxt=W.Ajv2020=void 0;var Wj=Zo(),Hj=qf(),Jj=ol(),Qj=Xf(),ll="https://json-schema.org/draft/2020-12/schema";class En extends Wj.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),Hj.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(Jj.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;Qj.default.call(this,e),this.refs["http://json-schema.org/schema"]=ll}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(ll)?ll:void 0)}}W.Ajv2020=En;dl.exports=W=En;dl.exports.Ajv2020=En;Object.defineProperty(W,"__esModule",{value:!0});W.default=En;var Yj=gr();Object.defineProperty(W,"KeywordCxt",{enumerable:!0,get:function(){return Yj.KeywordCxt}});var wr=O();Object.defineProperty(W,"_",{enumerable:!0,get:function(){return wr._}});Object.defineProperty(W,"str",{enumerable:!0,get:function(){return wr.str}});Object.defineProperty(W,"stringify",{enumerable:!0,get:function(){return wr.stringify}});Object.defineProperty(W,"nil",{enumerable:!0,get:function(){return wr.nil}});Object.defineProperty(W,"Name",{enumerable:!0,get:function(){return wr.Name}});Object.defineProperty(W,"CodeGen",{enumerable:!0,get:function(){return wr.CodeGen}});var Xj=ln();Object.defineProperty(W,"ValidationError",{enumerable:!0,get:function(){return Xj.default}});var Zj=yr();Object.defineProperty(W,"MissingRefError",{enumerable:!0,get:function(){return Zj.default}})});var Wg=P(function(st){Object.defineProperty(st,"__esModule",{value:!0});st.formatNames=st.fastFormats=st.fullFormats=void 0;function it(e,t){return{validate:e,compare:t}}st.fullFormats={date:it(Gg,ld),time:it(od(!0),dd),"date-time":it(qg(!0),zg),"iso-time":it(od(),Vg),"iso-date-time":it(qg(),Kg),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:FF,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:LF,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:TF,int32:{type:"number",validate:DF},int64:{type:"number",validate:NF},float:{type:"number",validate:Bg},double:{type:"number",validate:Bg},password:!0,binary:!0};st.fastFormats={...st.fullFormats,date:it(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,ld),time:it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,dd),"date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,zg),"iso-time":it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Vg),"iso-date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Kg),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};st.formatNames=Object.keys(st.fullFormats);function xF(e){return e%4===0&&(e%100!==0||e%400===0)}var jF=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,RF=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Gg(e){let t=jF.exec(e);if(!t)return!1;let r=+t[1],n=+t[2],i=+t[3];return n>=1&&n<=12&&i>=1&&i<=(n===2&&xF(r)?29:RF[n])}function ld(e,t){if(!(e&&t))return;if(e>t)return 1;if(e<t)return-1;return 0}var sd=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function od(e){return function(r){let n=sd.exec(r);if(!n)return!1;let i=+n[1],s=+n[2],o=+n[3],a=n[4],l=n[5]==="-"?-1:1,d=+(n[6]||0),c=+(n[7]||0);if(d>23||c>59||e&&!a)return!1;if(i<=23&&s<=59&&o<60)return!0;let p=s-c*l,h=i-d*l-(p<0?1:0);return(h===23||h===-1)&&(p===59||p===-1)&&o<61}}function dd(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(!(r&&n))return;return r-n}function Vg(e,t){if(!(e&&t))return;let r=sd.exec(e),n=sd.exec(t);if(!(r&&n))return;if(e=r[1]+r[2]+r[3],t=n[1]+n[2]+n[3],e>t)return 1;if(e<t)return-1;return 0}var ad=/t|\s/i;function qg(e){let t=od(e);return function(n){let i=n.split(ad);return i.length===2&&Gg(i[0])&&t(i[1])}}function zg(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),n=new Date(t).valueOf();if(!(r&&n))return;return r-n}function Kg(e,t){if(!(e&&t))return;let[r,n]=e.split(ad),[i,s]=t.split(ad),o=ld(r,i);if(o===void 0)return;return o||dd(n,s)}var CF=/\/|:/,OF=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function FF(e){return CF.test(e)&&OF.test(e)}var Ug=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function TF(e){return Ug.lastIndex=0,Ug.test(e)}var AF=-2147483648,kF=2147483647;function DF(e){return Number.isInteger(e)&&e<=kF&&e>=AF}function NF(e){return Number.isInteger(e)}function Bg(){return!0}var MF=/[^\\]\\Z/;function LF(e){if(MF.test(e))return!1;try{return new RegExp(e),!0}catch(t){return!1}}});var Jg=P(function(cd){Object.defineProperty(cd,"__esModule",{value:!0});var qF=ra(),UF=_a(),BF=La(),GF=tl(),Hg=rl(),VF=[qF.default,UF.default,(0,BF.default)(),GF.default,Hg.metadataVocabulary,Hg.contentVocabulary];cd.default=VF});var Qg=P(function(CU,zF){zF.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Xg=P(function(H,ud){Object.defineProperty(H,"__esModule",{value:!0});H.MissingRefError=H.ValidationError=H.CodeGen=H.Name=H.nil=H.stringify=H.str=H._=H.KeywordCxt=H.Ajv=void 0;var KF=Zo(),WF=Jg(),HF=ol(),Yg=Qg(),JF=["/properties"],Cs="http://json-schema.org/draft-07/schema";class Kn extends KF.default{_addVocabularies(){if(super._addVocabularies(),WF.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(HF.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(Yg,JF):Yg;this.addMetaSchema(e,Cs,!1),this.refs["http://json-schema.org/schema"]=Cs}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Cs)?Cs:void 0)}}H.Ajv=Kn;ud.exports=H=Kn;ud.exports.Ajv=Kn;Object.defineProperty(H,"__esModule",{value:!0});H.default=Kn;var QF=gr();Object.defineProperty(H,"KeywordCxt",{enumerable:!0,get:function(){return QF.KeywordCxt}});var Lr=O();Object.defineProperty(H,"_",{enumerable:!0,get:function(){return Lr._}});Object.defineProperty(H,"str",{enumerable:!0,get:function(){return Lr.str}});Object.defineProperty(H,"stringify",{enumerable:!0,get:function(){return Lr.stringify}});Object.defineProperty(H,"nil",{enumerable:!0,get:function(){return Lr.nil}});Object.defineProperty(H,"Name",{enumerable:!0,get:function(){return Lr.Name}});Object.defineProperty(H,"CodeGen",{enumerable:!0,get:function(){return Lr.CodeGen}});var YF=ln();Object.defineProperty(H,"ValidationError",{enumerable:!0,get:function(){return YF.default}});var XF=yr();Object.defineProperty(H,"MissingRefError",{enumerable:!0,get:function(){return XF.default}})});var Zg=P(function(qr){Object.defineProperty(qr,"__esModule",{value:!0});qr.formatLimitDefinition=void 0;var ZF=Xg(),Ke=O(),Tt=Ke.operators,Os={formatMaximum:{okStr:"<=",ok:Tt.LTE,fail:Tt.GT},formatMinimum:{okStr:">=",ok:Tt.GTE,fail:Tt.LT},formatExclusiveMaximum:{okStr:"<",ok:Tt.LT,fail:Tt.GTE},formatExclusiveMinimum:{okStr:">",ok:Tt.GT,fail:Tt.LTE}},eT={message:({keyword:e,schemaCode:t})=>Ke.str`should be ${Os[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>Ke._`{comparison: ${Os[e].okStr}, limit: ${t}}`};qr.formatLimitDefinition={keyword:Object.keys(Os),type:"string",schemaType:"string",$data:!0,error:eT,code(e){let{gen:t,data:r,schemaCode:n,keyword:i,it:s}=e,{opts:o,self:a}=s;if(!o.validateFormats)return;let l=new ZF.KeywordCxt(s,a.RULES.all.format.definition,"format");if(l.$data)d();else c();function d(){let h=t.scopeValue("formats",{ref:a.formats,code:o.code.formats}),u=t.const("fmt",Ke._`${h}[${l.schemaCode}]`);e.fail$data((0,Ke.or)(Ke._`typeof ${u} != "object"`,Ke._`${u} instanceof RegExp`,Ke._`typeof ${u}.compare != "function"`,p(u)))}function c(){let h=l.schema,u=a.formats[h];if(!u||u===!0)return;if(typeof u!="object"||u instanceof RegExp||typeof u.compare!="function")throw Error(`"${i}": format "${h}" does not define "compare" function`);let f=t.scopeValue("formats",{key:h,ref:u,code:o.code.formats?Ke._`${o.code.formats}${(0,Ke.getProperty)(h)}`:void 0});e.fail$data(p(f))}function p(h){return Ke._`${h}.compare(${r}, ${n}) ${Os[i].fail} 0`}},dependencies:["format"]};var tT=(e)=>(e.addKeyword(qr.formatLimitDefinition),e);qr.default=tT});var ny=P(function(Wn,ry){Object.defineProperty(Wn,"__esModule",{value:!0});var Ur=Wg(),rT=Zg(),pd=O(),ey=new pd.Name("fullFormats"),nT=new pd.Name("fastFormats"),fd=(e,t={keywords:!0})=>{if(Array.isArray(t))return ty(e,t,Ur.fullFormats,ey),e;let[r,n]=t.mode==="fast"?[Ur.fastFormats,nT]:[Ur.fullFormats,ey],i=t.formats||Ur.formatNames;if(ty(e,i,r,n),t.keywords)(0,rT.default)(e);return e};fd.get=(e,t="full")=>{let n=(t==="fast"?Ur.fastFormats:Ur.fullFormats)[e];if(!n)throw Error(`Unknown format "${e}"`);return n};function ty(e,t,r,n){var i,s;(i=(s=e.opts.code).formats)!==null&&i!==void 0||(s.formats=pd._`require("ajv-formats/dist/formats").${n}`);for(let o of t)e.addFormat(o,r[o])}ry.exports=Wn=fd;Object.defineProperty(Wn,"__esModule",{value:!0});Wn.default=fd});var t_=P(function(DB,e_){e_.exports=eA;function ZT(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};if(!e)return t;return Object.keys(t).forEach(function(r){if(!e[r])e[r]=t[r]}),e}function eA(e){let t=ZT(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let r=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(r)&&r!==0)return r}return t.defaultWidth}});var P_=P(function(QB,b_){var hA=require("stream");class __ extends hA{#r=null;constructor(e={}){super(e);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=e.replace,this._prompt=e.prompt||null,this._hadControl=!1}#t(e,t){if(this._dest)return this._dest[e];if(this._src)return this._src[e];return t}#e(e,...t){if(typeof this._dest?.[e]==="function")this._dest[e](...t);if(typeof this._src?.[e]==="function")this._src[e](...t)}get isTTY(){if(this.#r!==null)return this.#r;return this.#t("isTTY",!1)}set isTTY(e){this.#r=e}get rows(){return this.#t("rows")}get columns(){return this.#t("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(e){this._src=e}pipe(e,t){return this._dest=e,super.pipe(e,t)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(e){if(this.muted){if(!this.replace)return!0;if(e.match(/^\u001b/)){if(e.indexOf(this._prompt)===0)e=e.slice(this._prompt.length),e=e.replace(/./g,this.replace),e=this._prompt+e;return this._hadControl=!0,this.emit("data",e)}else{if(this._prompt&&this._hadControl&&e.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),e=e.slice(this._prompt.length);e=e.toString().replace(/./g,this.replace)}}this.emit("data",e)}end(e){if(this.muted)if(e&&this.replace)e=e.toString().replace(/./g,this.replace);else e=null;if(e)this.emit("data",e);this.emit("end")}destroy(...e){return this.#e("destroy",...e)}destroySoon(...e){return this.#e("destroySoon",...e)}close(...e){return this.#e("close",...e)}}b_.exports=__});class lt extends Error{constructor(e,t,r){super(r);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}}class dt extends lt{constructor(e){super(1,"commander.invalidArgument",e);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}class ai{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new dt(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,r);return t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function li(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}var oc=require("events"),ci=Re(require("child_process")),He=Re(require("path")),Yr=Re(require("fs")),U=Re(require("process")),ac=require("util");var rc=require("util");class di{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter((n)=>!n._hidden),r=e._getHelpCommand();if(r&&!r._hidden)t.push(r);if(this.sortSubcommands)t.sort((n,i)=>n.name().localeCompare(i.name()));return t}compareOptions(e,t){let r=(n)=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter((n)=>!n.hidden),r=e._getHelpOption();if(r&&!r.hidden){let n=r.short&&e._findOption(r.short),i=r.long&&e._findOption(r.long);if(!n&&!i)t.push(r);else if(r.long&&!i)t.push(e.createOption(r.long,r.description));else if(r.short&&!n)t.push(e.createOption(r.short,r.description))}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let n=r.options.filter((i)=>!i.hidden);t.push(...n)}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleArguments(e){if(e._argsDescription)e.registeredArguments.forEach((t)=>{t.description=t.description||e._argsDescription[t.name()]||""});if(e.registeredArguments.find((t)=>t.description))return e.registeredArguments;return[]}subcommandTerm(e){let t=e.registeredArguments.map((r)=>li(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;if(e._aliases[0])t=t+"|"+e._aliases[0];let r="";for(let n=e.parent;n;n=n.parent)r=n.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((r)=>JSON.stringify(r)).join(", ")}`);if(e.defaultValue!==void 0){if(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==="boolean")t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`)}if(e.presetArg!==void 0&&e.optional)t.push(`preset: ${JSON.stringify(e.presetArg)}`);if(e.envVar!==void 0)t.push(`env: ${e.envVar}`);if(t.length>0){let r=`(${t.join(", ")})`;if(e.description)return`${e.description} ${r}`;return r}return e.description}argumentDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((r)=>JSON.stringify(r)).join(", ")}`);if(e.defaultValue!==void 0)t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`);if(t.length>0){let r=`(${t.join(", ")})`;if(e.description)return`${e.description} ${r}`;return r}return e.description}formatItemList(e,t,r){if(t.length===0)return[];return[r.styleTitle(e),...t,""]}groupItems(e,t,r){let n=new Map;return e.forEach((i)=>{let s=r(i);if(!n.has(s))n.set(s,[])}),t.forEach((i)=>{let s=r(i);if(!n.has(s))n.set(s,[]);n.get(s).push(i)}),n}formatHelp(e,t){let r=t.padWidth(e,t),n=t.helpWidth??80;function i(c,p){return t.formatItem(c,r,p,t)}let s=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],o=t.commandDescription(e);if(o.length>0)s=s.concat([t.boxWrap(t.styleCommandDescription(o),n),""]);let a=t.visibleArguments(e).map((c)=>i(t.styleArgumentTerm(t.argumentTerm(c)),t.styleArgumentDescription(t.argumentDescription(c))));if(s=s.concat(this.formatItemList("Arguments:",a,t)),this.groupItems(e.options,t.visibleOptions(e),(c)=>c.helpGroupHeading??"Options:").forEach((c,p)=>{let h=c.map((u)=>i(t.styleOptionTerm(t.optionTerm(u)),t.styleOptionDescription(t.optionDescription(u))));s=s.concat(this.formatItemList(p,h,t))}),t.showGlobalOptions){let c=t.visibleGlobalOptions(e).map((p)=>i(t.styleOptionTerm(t.optionTerm(p)),t.styleOptionDescription(t.optionDescription(p))));s=s.concat(this.formatItemList("Global Options:",c,t))}return this.groupItems(e.commands,t.visibleCommands(e),(c)=>c.helpGroup()||"Commands:").forEach((c,p)=>{let h=c.map((u)=>i(t.styleSubcommandTerm(t.subcommandTerm(u)),t.styleSubcommandDescription(t.subcommandDescription(u))));s=s.concat(this.formatItemList(p,h,t))}),s.join(`
|
|
11
|
-
`)}displayWidth(e){return
|
|
12
|
-
`+" ".repeat(t+
|
|
13
|
-
${s}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let
|
|
14
|
-
`)}}class
|
|
10
|
+
deps: ${i}}`};var Bw={keyword:"dependencies",type:"object",schemaType:"object",error:tt.error,code(e){let[t,i]=Rw(e);jC(e,t),DC(e,i)}};function Rw({schema:e}){let t={},i={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:i;o[n]=e[n]}return[t,i]}function jC(e,t=e.schema){let{gen:i,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=i.let("missing");for(let r in t){let g=t[r];if(g.length===0)continue;let a=(0,En.propertyInData)(i,n,r,o.opts.ownProperties);if(e.setParams({property:r,depsCount:g.length,deps:g.join(", ")}),o.allErrors)i.if(a,()=>{for(let l of g)(0,En.checkReportMissingProp)(e,l)});else i.if(Mg._`${a} && (${(0,En.checkMissingProp)(e,g,s)})`),(0,En.reportMissingProp)(e,s),i.else()}}tt.validatePropertyDeps=jC;function DC(e,t=e.schema){let{gen:i,data:n,keyword:o,it:s}=e,r=i.name("valid");for(let g in t){if((0,Vw.alwaysValidSchema)(s,t[g]))continue;i.if((0,En.propertyInData)(i,n,g,s.opts.ownProperties),()=>{let a=e.subschema({keyword:o,schemaProp:g},r);e.mergeValidEvaluated(a,r)},()=>i.var(r,!0)),e.ok(r)}}tt.validateSchemaDeps=DC;tt.default=Bw});var _C=y(function($g){Object.defineProperty($g,"__esModule",{value:!0});var QC=v(),Gw=N(),ww={message:"property name must be valid",params:({params:e})=>QC._`{propertyName: ${e.propertyName}}`},Fw={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:ww,code(e){let{gen:t,schema:i,data:n,it:o}=e;if((0,Gw.alwaysValidSchema)(o,i))return;let s=t.name("valid");t.forIn("key",n,(r)=>{e.setParams({propertyName:r}),e.subschema({keyword:"propertyNames",data:r,dataTypes:["string"],propertyName:r,compositeRule:!0},s),t.if((0,QC.not)(s),()=>{if(e.error(!0),!o.allErrors)t.break()})}),e.ok(s)}};$g.default=Fw});var ea=y(function(qg){Object.defineProperty(qg,"__esModule",{value:!0});var as=ke(),je=v(),Hw=ve(),ls=N(),vw={message:"must NOT have additional properties",params:({params:e})=>je._`{additionalProperty: ${e.additionalProperty}}`},kw={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:vw,code(e){let{gen:t,schema:i,parentSchema:n,data:o,errsCount:s,it:r}=e;if(!s)throw Error("ajv implementation error");let{allErrors:g,opts:a}=r;if(r.props=!0,a.removeAdditional!=="all"&&(0,ls.alwaysValidSchema)(r,i))return;let l=(0,as.allSchemaProperties)(n.properties),I=(0,as.allSchemaProperties)(n.patternProperties);d(),e.ok(je._`${s} === ${Hw.default.errors}`);function d(){t.forIn("key",o,(m)=>{if(!l.length&&!I.length)C(m);else t.if(u(m),()=>C(m))})}function u(m){let p;if(l.length>8){let Z=(0,ls.schemaRefOrVal)(r,n.properties,"properties");p=(0,as.isOwnProperty)(t,Z,m)}else if(l.length)p=(0,je.or)(...l.map((Z)=>je._`${m} === ${Z}`));else p=je.nil;if(I.length)p=(0,je.or)(p,...I.map((Z)=>je._`${(0,as.usePattern)(e,Z)}.test(${m})`));return(0,je.not)(p)}function c(m){t.code(je._`delete ${o}[${m}]`)}function C(m){if(a.removeAdditional==="all"||a.removeAdditional&&i===!1){c(m);return}if(i===!1){if(e.setParams({additionalProperty:m}),e.error(),!g)t.break();return}if(typeof i=="object"&&!(0,ls.alwaysValidSchema)(r,i)){let p=t.name("valid");if(a.removeAdditional==="failing")A(m,p,!1),t.if((0,je.not)(p),()=>{e.reset(),c(m)});else if(A(m,p),!g)t.if((0,je.not)(p),()=>t.break())}}function A(m,p,Z){let W={keyword:"additionalProperties",dataProp:m,dataPropType:ls.Type.Str};if(Z===!1)Object.assign(W,{compositeRule:!0,createErrors:!1,allErrors:!1});e.subschema(W,p)}}};qg.default=kw});var MC=y(function(ia){Object.defineProperty(ia,"__esModule",{value:!0});var Pw=Gi(),KC=ke(),ta=N(),LC=ea(),Yw={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:i,parentSchema:n,data:o,it:s}=e;if(s.opts.removeAdditional==="all"&&n.additionalProperties===void 0)LC.default.code(new Pw.KeywordCxt(s,LC.default,"additionalProperties"));let r=(0,KC.allSchemaProperties)(i);for(let d of r)s.definedProperties.add(d);if(s.opts.unevaluated&&r.length&&s.props!==!0)s.props=ta.mergeEvaluated.props(t,(0,ta.toHash)(r),s.props);let g=r.filter((d)=>!(0,ta.alwaysValidSchema)(s,i[d]));if(g.length===0)return;let a=t.name("valid");for(let d of g){if(l(d))I(d);else{if(t.if((0,KC.propertyInData)(t,o,d,s.opts.ownProperties)),I(d),!s.allErrors)t.else().var(a,!0);t.endIf()}e.it.definedProperties.add(d),e.ok(a)}function l(d){return s.opts.useDefaults&&!s.compositeRule&&i[d].default!==void 0}function I(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},a)}}};ia.default=Yw});var tu=y(function(na){Object.defineProperty(na,"__esModule",{value:!0});var $C=ke(),Is=v(),qC=N(),eu=N(),Nw={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:i,data:n,parentSchema:o,it:s}=e,{opts:r}=s,g=(0,$C.allSchemaProperties)(i),a=g.filter((A)=>(0,qC.alwaysValidSchema)(s,i[A]));if(g.length===0||a.length===g.length&&(!s.opts.unevaluated||s.props===!0))return;let l=r.strictSchema&&!r.allowMatchingProperties&&o.properties,I=t.name("valid");if(s.props!==!0&&!(s.props instanceof Is.Name))s.props=(0,eu.evaluatedPropsToName)(t,s.props);let{props:d}=s;u();function u(){for(let A of g){if(l)c(A);if(s.allErrors)C(A);else t.var(I,!0),C(A),t.if(I)}}function c(A){for(let m in l)if(new RegExp(A).test(m))(0,qC.checkStrictMode)(s,`property ${m} matches pattern ${A} (use allowMatchingProperties)`)}function C(A){t.forIn("key",n,(m)=>{t.if(Is._`${(0,$C.usePattern)(e,A)}.test(${m})`,()=>{let p=a.includes(A);if(!p)e.subschema({keyword:"patternProperties",schemaProp:A,dataProp:m,dataPropType:eu.Type.Str},I);if(s.opts.unevaluated&&d!==!0)t.assign(Is._`${d}[${m}]`,!0);else if(!p&&!s.allErrors)t.if((0,Is.not)(I),()=>t.break())})})}}};na.default=Nw});var iu=y(function(oa){Object.defineProperty(oa,"__esModule",{value:!0});var Xw=N(),Sw={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:i,it:n}=e;if((0,Xw.alwaysValidSchema)(n,i)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};oa.default=Sw});var nu=y(function(sa){Object.defineProperty(sa,"__esModule",{value:!0});var xw=ke(),Jw={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:xw.validateUnion,error:{message:"must match a schema in anyOf"}};sa.default=Jw});var ou=y(function(ra){Object.defineProperty(ra,"__esModule",{value:!0});var ds=v(),Ew=N(),Uw={message:"must match exactly one schema in oneOf",params:({params:e})=>ds._`{passingSchemas: ${e.passing}}`},Ow={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Uw,code(e){let{gen:t,schema:i,parentSchema:n,it:o}=e;if(!Array.isArray(i))throw Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=i,r=t.let("valid",!1),g=t.let("passing",null),a=t.name("_valid");e.setParams({passing:g}),t.block(l),e.result(r,()=>e.reset(),()=>e.error(!0));function l(){s.forEach((I,d)=>{let u;if((0,Ew.alwaysValidSchema)(o,I))t.var(a,!0);else u=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},a);if(d>0)t.if(ds._`${a} && ${r}`).assign(r,!1).assign(g,ds._`[${g}, ${d}]`).else();t.if(a,()=>{if(t.assign(r,!0),t.assign(g,d),u)e.mergeEvaluated(u,ds.Name)})})}}};ra.default=Ow});var su=y(function(ga){Object.defineProperty(ga,"__esModule",{value:!0});var Tw=N(),zw={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:i,it:n}=e;if(!Array.isArray(i))throw Error("ajv implementation error");let o=t.name("valid");i.forEach((s,r)=>{if((0,Tw.alwaysValidSchema)(n,s))return;let g=e.subschema({keyword:"allOf",schemaProp:r},o);e.ok(o),e.mergeEvaluated(g)})}};ga.default=zw});var au=y(function(aa){Object.defineProperty(aa,"__esModule",{value:!0});var cs=v(),gu=N(),jw={message:({params:e})=>cs.str`must match "${e.ifClause}" schema`,params:({params:e})=>cs._`{failingKeyword: ${e.ifClause}}`},Dw={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:jw,code(e){let{gen:t,parentSchema:i,it:n}=e;if(i.then===void 0&&i.else===void 0)(0,gu.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=ru(n,"then"),s=ru(n,"else");if(!o&&!s)return;let r=t.let("valid",!0),g=t.name("_valid");if(a(),e.reset(),o&&s){let I=t.let("ifClause");e.setParams({ifClause:I}),t.if(g,l("then",I),l("else",I))}else if(o)t.if(g,l("then"));else t.if((0,cs.not)(g),l("else"));e.pass(r,()=>e.error(!0));function a(){let I=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},g);e.mergeEvaluated(I)}function l(I,d){return()=>{let u=e.subschema({keyword:I},g);if(t.assign(r,g),e.mergeValidEvaluated(u,r),d)t.assign(d,cs._`${I}`);else e.setParams({ifClause:I})}}}};function ru(e,t){let i=e.schema[t];return i!==void 0&&!(0,gu.alwaysValidSchema)(e,i)}aa.default=Dw});var lu=y(function(la){Object.defineProperty(la,"__esModule",{value:!0});var Qw=N(),_w={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:i}){if(t.if===void 0)(0,Qw.checkStrictMode)(i,`"${e}" without "if" is ignored`)}};la.default=_w});var da=y(function(Ia){Object.defineProperty(Ia,"__esModule",{value:!0});var Kw=Dg(),Lw=UC(),Mw=Qg(),$w=TC(),qw=zC(),eF=gs(),tF=_C(),iF=ea(),nF=MC(),oF=tu(),sF=iu(),rF=nu(),gF=ou(),aF=su(),lF=au(),IF=lu();function dF(e=!1){let t=[sF.default,rF.default,gF.default,aF.default,lF.default,IF.default,tF.default,iF.default,eF.default,nF.default,oF.default];if(e)t.push(Lw.default,$w.default);else t.push(Kw.default,Mw.default);return t.push(qw.default),t}Ia.default=dF});var Ca=y(function(Un){Object.defineProperty(Un,"__esModule",{value:!0});Un.dynamicAnchor=void 0;var ca=v(),cF=ve(),Iu=wn(),CF=es(),uF={keyword:"$dynamicAnchor",schemaType:"string",code:(e)=>du(e,e.schema)};function du(e,t){let{gen:i,it:n}=e;n.schemaEnv.root.dynamicAnchors[t]=!0;let o=ca._`${cF.default.dynamicAnchors}${(0,ca.getProperty)(t)}`,s=n.errSchemaPath==="#"?n.validateName:mF(e);i.if(ca._`!${o}`,()=>i.assign(o,s))}Un.dynamicAnchor=du;function mF(e){let{schemaEnv:t,schema:i,self:n}=e.it,{root:o,baseId:s,localRefs:r,meta:g}=t.root,{schemaId:a}=n.opts,l=new Iu.SchemaEnv({schema:i,schemaId:a,root:o,baseId:s,localRefs:r,meta:g});return Iu.compileSchema.call(n,l),(0,CF.getValidate)(e,l)}Un.default=uF});var ua=y(function(On){Object.defineProperty(On,"__esModule",{value:!0});On.dynamicRef=void 0;var cu=v(),pF=ve(),Cu=es(),AF={keyword:"$dynamicRef",schemaType:"string",code:(e)=>uu(e,e.schema)};function uu(e,t){let{gen:i,keyword:n,it:o}=e;if(t[0]!=="#")throw Error(`"${n}" only supports hash fragment reference`);let s=t.slice(1);if(o.allErrors)r();else{let a=i.let("valid",!1);r(a),e.ok(a)}function r(a){if(o.schemaEnv.root.dynamicAnchors[s]){let l=i.let("_v",cu._`${pF.default.dynamicAnchors}${(0,cu.getProperty)(s)}`);i.if(l,g(l,a),g(o.validateName,a))}else g(o.validateName,a)()}function g(a,l){return l?()=>i.block(()=>{(0,Cu.callRef)(e,a),i.let(l,!0)}):()=>(0,Cu.callRef)(e,a)}}On.dynamicRef=uu;On.default=AF});var mu=y(function(ma){Object.defineProperty(ma,"__esModule",{value:!0});var ZF=Ca(),bF=N(),WF={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){if(e.schema)(0,ZF.dynamicAnchor)(e,"");else(0,bF.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};ma.default=WF});var pu=y(function(pa){Object.defineProperty(pa,"__esModule",{value:!0});var hF=ua(),fF={keyword:"$recursiveRef",schemaType:"string",code:(e)=>(0,hF.dynamicRef)(e,e.schema)};pa.default=fF});var Au=y(function(Aa){Object.defineProperty(Aa,"__esModule",{value:!0});var yF=Ca(),VF=ua(),BF=mu(),RF=pu(),GF=[yF.default,VF.default,BF.default,RF.default];Aa.default=GF});var bu=y(function(Za){Object.defineProperty(Za,"__esModule",{value:!0});var Zu=gs(),wF={keyword:"dependentRequired",type:"object",schemaType:"object",error:Zu.error,code:(e)=>(0,Zu.validatePropertyDeps)(e)};Za.default=wF});var Wu=y(function(ba){Object.defineProperty(ba,"__esModule",{value:!0});var FF=gs(),HF={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>(0,FF.validateSchemaDeps)(e)};ba.default=HF});var hu=y(function(Wa){Object.defineProperty(Wa,"__esModule",{value:!0});var vF=N(),kF={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:i}){if(t.contains===void 0)(0,vF.checkStrictMode)(i,`"${e}" without "contains" is ignored`)}};Wa.default=kF});var fu=y(function(ha){Object.defineProperty(ha,"__esModule",{value:!0});var PF=bu(),YF=Wu(),NF=hu(),XF=[PF.default,YF.default,NF.default];ha.default=XF});var Vu=y(function(fa){Object.defineProperty(fa,"__esModule",{value:!0});var Yt=v(),yu=N(),SF=ve(),xF={message:"must NOT have unevaluated properties",params:({params:e})=>Yt._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},JF={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:xF,code(e){let{gen:t,schema:i,data:n,errsCount:o,it:s}=e;if(!o)throw Error("ajv implementation error");let{allErrors:r,props:g}=s;if(g instanceof Yt.Name)t.if(Yt._`${g} !== true`,()=>t.forIn("key",n,(d)=>t.if(l(g,d),()=>a(d))));else if(g!==!0)t.forIn("key",n,(d)=>g===void 0?a(d):t.if(I(g,d),()=>a(d)));s.props=!0,e.ok(Yt._`${o} === ${SF.default.errors}`);function a(d){if(i===!1){if(e.setParams({unevaluatedProperty:d}),e.error(),!r)t.break();return}if(!(0,yu.alwaysValidSchema)(s,i)){let u=t.name("valid");if(e.subschema({keyword:"unevaluatedProperties",dataProp:d,dataPropType:yu.Type.Str},u),!r)t.if((0,Yt.not)(u),()=>t.break())}}function l(d,u){return Yt._`!${d} || !${d}[${u}]`}function I(d,u){let c=[];for(let C in d)if(d[C]===!0)c.push(Yt._`${u} !== ${C}`);return(0,Yt.and)(...c)}}};fa.default=JF});var Ru=y(function(ya){Object.defineProperty(ya,"__esModule",{value:!0});var Kt=v(),Bu=N(),EF={message:({params:{len:e}})=>Kt.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Kt._`{limit: ${e}}`},UF={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:EF,code(e){let{gen:t,schema:i,data:n,it:o}=e,s=o.items||0;if(s===!0)return;let r=t.const("len",Kt._`${n}.length`);if(i===!1)e.setParams({len:s}),e.fail(Kt._`${r} > ${s}`);else if(typeof i=="object"&&!(0,Bu.alwaysValidSchema)(o,i)){let a=t.var("valid",Kt._`${r} <= ${s}`);t.if((0,Kt.not)(a),()=>g(a,s)),e.ok(a)}o.items=!0;function g(a,l){t.forRange("i",l,r,(I)=>{if(e.subschema({keyword:"unevaluatedItems",dataProp:I,dataPropType:Bu.Type.Num},a),!o.allErrors)t.if((0,Kt.not)(a),()=>t.break())})}}};ya.default=UF});var Gu=y(function(Va){Object.defineProperty(Va,"__esModule",{value:!0});var OF=Vu(),TF=Ru(),zF=[OF.default,TF.default];Va.default=zF});var wu=y(function(Ba){Object.defineProperty(Ba,"__esModule",{value:!0});var L=v(),jF={message:({schemaCode:e})=>L.str`must match format "${e}"`,params:({schemaCode:e})=>L._`{format: ${e}}`},DF={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:jF,code(e,t){let{gen:i,data:n,$data:o,schema:s,schemaCode:r,it:g}=e,{opts:a,errSchemaPath:l,schemaEnv:I,self:d}=g;if(!a.validateFormats)return;if(o)u();else c();function u(){let C=i.scopeValue("formats",{ref:d.formats,code:a.code.formats}),A=i.const("fDef",L._`${C}[${r}]`),m=i.let("fType"),p=i.let("format");i.if(L._`typeof ${A} == "object" && !(${A} instanceof RegExp)`,()=>i.assign(m,L._`${A}.type || "string"`).assign(p,L._`${A}.validate`),()=>i.assign(m,L._`"string"`).assign(p,A)),e.fail$data((0,L.or)(Z(),W()));function Z(){if(a.strictSchema===!1)return L.nil;return L._`${r} && !${p}`}function W(){let h=I.$async?L._`(${A}.async ? await ${p}(${n}) : ${p}(${n}))`:L._`${p}(${n})`,f=L._`(typeof ${p} == "function" ? ${h} : ${p}.test(${n}))`;return L._`${p} && ${p} !== true && ${m} === ${t} && !${f}`}}function c(){let C=d.formats[s];if(!C){Z();return}if(C===!0)return;let[A,m,p]=W(C);if(A===t)e.pass(h());function Z(){if(a.strictSchema===!1){d.logger.warn(f());return}throw Error(f());function f(){return`unknown format "${s}" ignored in schema at path "${l}"`}}function W(f){let V=f instanceof RegExp?(0,L.regexpCode)(f):a.code.formats?L._`${a.code.formats}${(0,L.getProperty)(s)}`:void 0,B=i.scopeValue("formats",{key:s,ref:f,code:V});if(typeof f=="object"&&!(f instanceof RegExp))return[f.type||"string",f.validate,L._`${B}.validate`];return["string",f,B]}function h(){if(typeof C=="object"&&!(C instanceof RegExp)&&C.async){if(!I.$async)throw Error("async format in sync schema");return L._`await ${p}(${n})`}return typeof m=="function"?L._`${p}(${n})`:L._`${p}.test(${n})`}}}};Ba.default=DF});var Ga=y(function(Ra){Object.defineProperty(Ra,"__esModule",{value:!0});var QF=wu(),_F=[QF.default];Ra.default=_F});var wa=y(function(vi){Object.defineProperty(vi,"__esModule",{value:!0});vi.contentVocabulary=vi.metadataVocabulary=void 0;vi.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];vi.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var Hu=y(function(Fa){Object.defineProperty(Fa,"__esModule",{value:!0});var KF=wg(),LF=zg(),MF=da(),$F=Au(),qF=fu(),eH=Gu(),tH=Ga(),Fu=wa(),iH=[$F.default,KF.default,LF.default,(0,MF.default)(!0),tH.default,Fu.metadataVocabulary,Fu.contentVocabulary,qF.default,eH.default];Fa.default=iH});var ku=y(function(Cs){Object.defineProperty(Cs,"__esModule",{value:!0});Cs.DiscrError=void 0;var vu;(function(e){e.Tag="tag",e.Mapping="mapping"})(vu||(Cs.DiscrError=vu={}))});var ka=y(function(va){Object.defineProperty(va,"__esModule",{value:!0});var ki=v(),Ha=ku(),Pu=wn(),nH=wi(),oH=N(),sH={message:({params:{discrError:e,tagName:t}})=>e===Ha.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:i}})=>ki._`{error: ${e}, tag: ${i}, tagValue: ${t}}`},rH={keyword:"discriminator",type:"object",schemaType:"object",error:sH,code(e){let{gen:t,data:i,schema:n,parentSchema:o,it:s}=e,{oneOf:r}=o;if(!s.opts.discriminator)throw Error("discriminator: requires discriminator option");let g=n.propertyName;if(typeof g!="string")throw Error("discriminator: requires propertyName");if(n.mapping)throw Error("discriminator: mapping is not supported");if(!r)throw Error("discriminator: requires oneOf keyword");let a=t.let("valid",!1),l=t.const("tag",ki._`${i}${(0,ki.getProperty)(g)}`);t.if(ki._`typeof ${l} == "string"`,()=>I(),()=>e.error(!1,{discrError:Ha.DiscrError.Tag,tag:l,tagName:g})),e.ok(a);function I(){let c=u();t.if(!1);for(let C in c)t.elseIf(ki._`${l} === ${C}`),t.assign(a,d(c[C]));t.else(),e.error(!1,{discrError:Ha.DiscrError.Mapping,tag:l,tagName:g}),t.endIf()}function d(c){let C=t.name("valid"),A=e.subschema({keyword:"oneOf",schemaProp:c},C);return e.mergeEvaluated(A,ki.Name),C}function u(){var c;let C={},A=p(o),m=!0;for(let h=0;h<r.length;h++){let f=r[h];if((f===null||f===void 0?void 0:f.$ref)&&!(0,oH.schemaHasRulesButRef)(f,s.self.RULES)){let B=f.$ref;if(f=Pu.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,B),f instanceof Pu.SchemaEnv)f=f.schema;if(f===void 0)throw new nH.default(s.opts.uriResolver,s.baseId,B)}let V=(c=f===null||f===void 0?void 0:f.properties)===null||c===void 0?void 0:c[g];if(typeof V!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${g}"`);m=m&&(A||p(f)),Z(V,h)}if(!m)throw Error(`discriminator: "${g}" must be required`);return C;function p({required:h}){return Array.isArray(h)&&h.includes(g)}function Z(h,f){if(h.const)W(h.const,f);else if(h.enum)for(let V of h.enum)W(V,f);else throw Error(`discriminator: "properties/${g}" must have "const" or "enum"`)}function W(h,f){if(typeof h!="string"||h in C)throw Error(`discriminator: "${g}" values must be unique strings`);C[h]=f}}}};va.default=rH});var Yu=y(function(US,gH){gH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var Nu=y(function(OS,aH){aH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var Xu=y(function(TS,lH){lH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var Su=y(function(zS,IH){IH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var xu=y(function(jS,dH){dH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var Ju=y(function(DS,cH){cH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var Eu=y(function(QS,CH){CH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var Uu=y(function(_S,uH){uH.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var Ou=y(function(Pa){Object.defineProperty(Pa,"__esModule",{value:!0});var mH=Yu(),pH=Nu(),AH=Xu(),ZH=Su(),bH=xu(),WH=Ju(),hH=Eu(),fH=Uu(),yH=["/properties"];function VH(e){return[mH,pH,AH,ZH,bH,t(this,WH),hH,t(this,fH)].forEach((i)=>this.addMetaSchema(i,void 0,!1)),this;function t(i,n){return e?i.$dataMetaSchema(n,yH):n}}Pa.default=VH});var Xa=y(function(D,Na){Object.defineProperty(D,"__esModule",{value:!0});D.MissingRefError=D.ValidationError=D.CodeGen=D.Name=D.nil=D.stringify=D.str=D._=D.KeywordCxt=D.Ajv2020=void 0;var BH=Bg(),RH=Hu(),GH=ka(),wH=Ou(),Ya="https://json-schema.org/draft/2020-12/schema";class Tn extends BH.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),RH.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(GH.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;wH.default.call(this,e),this.refs["http://json-schema.org/schema"]=Ya}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Ya)?Ya:void 0)}}D.Ajv2020=Tn;Na.exports=D=Tn;Na.exports.Ajv2020=Tn;Object.defineProperty(D,"__esModule",{value:!0});D.default=Tn;var FH=Gi();Object.defineProperty(D,"KeywordCxt",{enumerable:!0,get:function(){return FH.KeywordCxt}});var Pi=v();Object.defineProperty(D,"_",{enumerable:!0,get:function(){return Pi._}});Object.defineProperty(D,"str",{enumerable:!0,get:function(){return Pi.str}});Object.defineProperty(D,"stringify",{enumerable:!0,get:function(){return Pi.stringify}});Object.defineProperty(D,"nil",{enumerable:!0,get:function(){return Pi.nil}});Object.defineProperty(D,"Name",{enumerable:!0,get:function(){return Pi.Name}});Object.defineProperty(D,"CodeGen",{enumerable:!0,get:function(){return Pi.CodeGen}});var HH=Rn();Object.defineProperty(D,"ValidationError",{enumerable:!0,get:function(){return HH.default}});var vH=wi();Object.defineProperty(D,"MissingRefError",{enumerable:!0,get:function(){return vH.default}})});var mm=y(function(ot){Object.defineProperty(ot,"__esModule",{value:!0});ot.formatNames=ot.fastFormats=ot.fullFormats=void 0;function nt(e,t){return{validate:e,compare:t}}ot.fullFormats={date:nt(dm,$a),time:nt(La(!0),qa),"date-time":nt(am(!0),Cm),"iso-time":nt(La(),cm),"iso-date-time":nt(am(),um),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:tv,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:av,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:iv,int32:{type:"number",validate:sv},int64:{type:"number",validate:rv},float:{type:"number",validate:Im},double:{type:"number",validate:Im},password:!0,binary:!0};ot.fastFormats={...ot.fullFormats,date:nt(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,$a),time:nt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,qa),"date-time":nt(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Cm),"iso-time":nt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,cm),"iso-date-time":nt(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,um),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};ot.formatNames=Object.keys(ot.fullFormats);function LH(e){return e%4===0&&(e%100!==0||e%400===0)}var MH=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,$H=[0,31,28,31,30,31,30,31,31,30,31,30,31];function dm(e){let t=MH.exec(e);if(!t)return!1;let i=+t[1],n=+t[2],o=+t[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&LH(i)?29:$H[n])}function $a(e,t){if(!(e&&t))return;if(e>t)return 1;if(e<t)return-1;return 0}var Ka=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function La(e){return function(i){let n=Ka.exec(i);if(!n)return!1;let o=+n[1],s=+n[2],r=+n[3],g=n[4],a=n[5]==="-"?-1:1,l=+(n[6]||0),I=+(n[7]||0);if(l>23||I>59||e&&!g)return!1;if(o<=23&&s<=59&&r<60)return!0;let d=s-I*a,u=o-l*a-(d<0?1:0);return(u===23||u===-1)&&(d===59||d===-1)&&r<61}}function qa(e,t){if(!(e&&t))return;let i=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(!(i&&n))return;return i-n}function cm(e,t){if(!(e&&t))return;let i=Ka.exec(e),n=Ka.exec(t);if(!(i&&n))return;if(e=i[1]+i[2]+i[3],t=n[1]+n[2]+n[3],e>t)return 1;if(e<t)return-1;return 0}var Ma=/t|\s/i;function am(e){let t=La(e);return function(n){let o=n.split(Ma);return o.length===2&&dm(o[0])&&t(o[1])}}function Cm(e,t){if(!(e&&t))return;let i=new Date(e).valueOf(),n=new Date(t).valueOf();if(!(i&&n))return;return i-n}function um(e,t){if(!(e&&t))return;let[i,n]=e.split(Ma),[o,s]=t.split(Ma),r=$a(i,o);if(r===void 0)return;return r||qa(n,s)}var qH=/\/|:/,ev=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function tv(e){return qH.test(e)&&ev.test(e)}var lm=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function iv(e){return lm.lastIndex=0,lm.test(e)}var nv=-2147483648,ov=2147483647;function sv(e){return Number.isInteger(e)&&e<=ov&&e>=nv}function rv(e){return Number.isInteger(e)}function Im(){return!0}var gv=/[^\\]\\Z/;function av(e){if(gv.test(e))return!1;try{return new RegExp(e),!0}catch(t){return!1}}});var Am=y(function(el){Object.defineProperty(el,"__esModule",{value:!0});var lv=wg(),Iv=zg(),dv=da(),cv=Ga(),pm=wa(),Cv=[lv.default,Iv.default,(0,dv.default)(),cv.default,pm.metadataVocabulary,pm.contentVocabulary];el.default=Cv});var Zm=y(function(p2,uv){uv.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Wm=y(function(Q,tl){Object.defineProperty(Q,"__esModule",{value:!0});Q.MissingRefError=Q.ValidationError=Q.CodeGen=Q.Name=Q.nil=Q.stringify=Q.str=Q._=Q.KeywordCxt=Q.Ajv=void 0;var mv=Bg(),pv=Am(),Av=ka(),bm=Zm(),Zv=["/properties"],ps="http://json-schema.org/draft-07/schema";class jn extends mv.default{_addVocabularies(){if(super._addVocabularies(),pv.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(Av.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(bm,Zv):bm;this.addMetaSchema(e,ps,!1),this.refs["http://json-schema.org/schema"]=ps}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(ps)?ps:void 0)}}Q.Ajv=jn;tl.exports=Q=jn;tl.exports.Ajv=jn;Object.defineProperty(Q,"__esModule",{value:!0});Q.default=jn;var bv=Gi();Object.defineProperty(Q,"KeywordCxt",{enumerable:!0,get:function(){return bv.KeywordCxt}});var Si=v();Object.defineProperty(Q,"_",{enumerable:!0,get:function(){return Si._}});Object.defineProperty(Q,"str",{enumerable:!0,get:function(){return Si.str}});Object.defineProperty(Q,"stringify",{enumerable:!0,get:function(){return Si.stringify}});Object.defineProperty(Q,"nil",{enumerable:!0,get:function(){return Si.nil}});Object.defineProperty(Q,"Name",{enumerable:!0,get:function(){return Si.Name}});Object.defineProperty(Q,"CodeGen",{enumerable:!0,get:function(){return Si.CodeGen}});var Wv=Rn();Object.defineProperty(Q,"ValidationError",{enumerable:!0,get:function(){return Wv.default}});var hv=wi();Object.defineProperty(Q,"MissingRefError",{enumerable:!0,get:function(){return hv.default}})});var hm=y(function(xi){Object.defineProperty(xi,"__esModule",{value:!0});xi.formatLimitDefinition=void 0;var fv=Wm(),Qe=v(),Nt=Qe.operators,As={formatMaximum:{okStr:"<=",ok:Nt.LTE,fail:Nt.GT},formatMinimum:{okStr:">=",ok:Nt.GTE,fail:Nt.LT},formatExclusiveMaximum:{okStr:"<",ok:Nt.LT,fail:Nt.GTE},formatExclusiveMinimum:{okStr:">",ok:Nt.GT,fail:Nt.LTE}},yv={message:({keyword:e,schemaCode:t})=>Qe.str`should be ${As[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>Qe._`{comparison: ${As[e].okStr}, limit: ${t}}`};xi.formatLimitDefinition={keyword:Object.keys(As),type:"string",schemaType:"string",$data:!0,error:yv,code(e){let{gen:t,data:i,schemaCode:n,keyword:o,it:s}=e,{opts:r,self:g}=s;if(!r.validateFormats)return;let a=new fv.KeywordCxt(s,g.RULES.all.format.definition,"format");if(a.$data)l();else I();function l(){let u=t.scopeValue("formats",{ref:g.formats,code:r.code.formats}),c=t.const("fmt",Qe._`${u}[${a.schemaCode}]`);e.fail$data((0,Qe.or)(Qe._`typeof ${c} != "object"`,Qe._`${c} instanceof RegExp`,Qe._`typeof ${c}.compare != "function"`,d(c)))}function I(){let u=a.schema,c=g.formats[u];if(!c||c===!0)return;if(typeof c!="object"||c instanceof RegExp||typeof c.compare!="function")throw Error(`"${o}": format "${u}" does not define "compare" function`);let C=t.scopeValue("formats",{key:u,ref:c,code:r.code.formats?Qe._`${r.code.formats}${(0,Qe.getProperty)(u)}`:void 0});e.fail$data(d(C))}function d(u){return Qe._`${u}.compare(${i}, ${n}) ${As[o].fail} 0`}},dependencies:["format"]};var Vv=(e)=>(e.addKeyword(xi.formatLimitDefinition),e);xi.default=Vv});var Bm=y(function(Dn,Vm){Object.defineProperty(Dn,"__esModule",{value:!0});var Ji=mm(),Bv=hm(),il=v(),fm=new il.Name("fullFormats"),Rv=new il.Name("fastFormats"),nl=(e,t={keywords:!0})=>{if(Array.isArray(t))return ym(e,t,Ji.fullFormats,fm),e;let[i,n]=t.mode==="fast"?[Ji.fastFormats,Rv]:[Ji.fullFormats,fm],o=t.formats||Ji.formatNames;if(ym(e,o,i,n),t.keywords)(0,Bv.default)(e);return e};nl.get=(e,t="full")=>{let n=(t==="fast"?Ji.fastFormats:Ji.fullFormats)[e];if(!n)throw Error(`Unknown format "${e}"`);return n};function ym(e,t,i,n){var o,s;(o=(s=e.opts.code).formats)!==null&&o!==void 0||(s.formats=il._`require("ajv-formats/dist/formats").${n}`);for(let r of t)e.addFormat(r,i[r])}Vm.exports=Dn=nl;Object.defineProperty(Dn,"__esModule",{value:!0});Dn.default=nl});var Fb=y(function(tz,wb){wb.exports=EN;function JN(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};if(!e)return t;return Object.keys(t).forEach(function(i){if(!e[i])e[i]=t[i]}),e}function EN(e){let t=JN(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let i=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(i)&&i!==0)return i}return t.defaultWidth}});var _b=y(function(mz,Qb){var t1=require("stream");class Db extends t1{#i=null;constructor(e={}){super(e);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=e.replace,this._prompt=e.prompt||null,this._hadControl=!1}#t(e,t){if(this._dest)return this._dest[e];if(this._src)return this._src[e];return t}#e(e,...t){if(typeof this._dest?.[e]==="function")this._dest[e](...t);if(typeof this._src?.[e]==="function")this._src[e](...t)}get isTTY(){if(this.#i!==null)return this.#i;return this.#t("isTTY",!1)}set isTTY(e){this.#i=e}get rows(){return this.#t("rows")}get columns(){return this.#t("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(e){this._src=e}pipe(e,t){return this._dest=e,super.pipe(e,t)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(e){if(this.muted){if(!this.replace)return!0;if(e.match(/^\u001b/)){if(e.indexOf(this._prompt)===0)e=e.slice(this._prompt.length),e=e.replace(/./g,this.replace),e=this._prompt+e;return this._hadControl=!0,this.emit("data",e)}else{if(this._prompt&&this._hadControl&&e.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),e=e.slice(this._prompt.length);e=e.toString().replace(/./g,this.replace)}}this.emit("data",e)}end(e){if(this.muted)if(e&&this.replace)e=e.toString().replace(/./g,this.replace);else e=null;if(e)this.emit("data",e);this.emit("end")}destroy(...e){return this.#e("destroy",...e)}destroySoon(...e){return this.#e("destroySoon",...e)}close(...e){return this.#e("close",...e)}}Qb.exports=Db});class ct extends Error{constructor(e,t,i){super(i);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}}class Ct extends ct{constructor(e){super(1,"commander.invalidArgument",e);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}class wo{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new Ct(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,i);return t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function Fo(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}var MI=require("events"),vo=be(require("child_process")),Le=be(require("path")),pn=be(require("fs")),E=be(require("process")),$I=require("util");var QI=require("util");class Ho{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter((n)=>!n._hidden),i=e._getHelpCommand();if(i&&!i._hidden)t.push(i);if(this.sortSubcommands)t.sort((n,o)=>n.name().localeCompare(o.name()));return t}compareOptions(e,t){let i=(n)=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(e).localeCompare(i(t))}visibleOptions(e){let t=e.options.filter((n)=>!n.hidden),i=e._getHelpOption();if(i&&!i.hidden){let n=i.short&&e._findOption(i.short),o=i.long&&e._findOption(i.long);if(!n&&!o)t.push(i);else if(i.long&&!o)t.push(e.createOption(i.long,i.description));else if(i.short&&!n)t.push(e.createOption(i.short,i.description))}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let i=e.parent;i;i=i.parent){let n=i.options.filter((o)=>!o.hidden);t.push(...n)}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleArguments(e){if(e._argsDescription)e.registeredArguments.forEach((t)=>{t.description=t.description||e._argsDescription[t.name()]||""});if(e.registeredArguments.find((t)=>t.description))return e.registeredArguments;return[]}subcommandTerm(e){let t=e.registeredArguments.map((i)=>Fo(i)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;if(e._aliases[0])t=t+"|"+e._aliases[0];let i="";for(let n=e.parent;n;n=n.parent)i=n.name()+" "+i;return i+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((i)=>JSON.stringify(i)).join(", ")}`);if(e.defaultValue!==void 0){if(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==="boolean")t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`)}if(e.presetArg!==void 0&&e.optional)t.push(`preset: ${JSON.stringify(e.presetArg)}`);if(e.envVar!==void 0)t.push(`env: ${e.envVar}`);if(t.length>0){let i=`(${t.join(", ")})`;if(e.description)return`${e.description} ${i}`;return i}return e.description}argumentDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((i)=>JSON.stringify(i)).join(", ")}`);if(e.defaultValue!==void 0)t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`);if(t.length>0){let i=`(${t.join(", ")})`;if(e.description)return`${e.description} ${i}`;return i}return e.description}formatItemList(e,t,i){if(t.length===0)return[];return[i.styleTitle(e),...t,""]}groupItems(e,t,i){let n=new Map;return e.forEach((o)=>{let s=i(o);if(!n.has(s))n.set(s,[])}),t.forEach((o)=>{let s=i(o);if(!n.has(s))n.set(s,[]);n.get(s).push(o)}),n}formatHelp(e,t){let i=t.padWidth(e,t),n=t.helpWidth??80;function o(I,d){return t.formatItem(I,i,d,t)}let s=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],r=t.commandDescription(e);if(r.length>0)s=s.concat([t.boxWrap(t.styleCommandDescription(r),n),""]);let g=t.visibleArguments(e).map((I)=>o(t.styleArgumentTerm(t.argumentTerm(I)),t.styleArgumentDescription(t.argumentDescription(I))));if(s=s.concat(this.formatItemList("Arguments:",g,t)),this.groupItems(e.options,t.visibleOptions(e),(I)=>I.helpGroupHeading??"Options:").forEach((I,d)=>{let u=I.map((c)=>o(t.styleOptionTerm(t.optionTerm(c)),t.styleOptionDescription(t.optionDescription(c))));s=s.concat(this.formatItemList(d,u,t))}),t.showGlobalOptions){let I=t.visibleGlobalOptions(e).map((d)=>o(t.styleOptionTerm(t.optionTerm(d)),t.styleOptionDescription(t.optionDescription(d))));s=s.concat(this.formatItemList("Global Options:",I,t))}return this.groupItems(e.commands,t.visibleCommands(e),(I)=>I.helpGroup()||"Commands:").forEach((I,d)=>{let u=I.map((c)=>o(t.styleSubcommandTerm(t.subcommandTerm(c)),t.styleSubcommandDescription(t.subcommandDescription(c))));s=s.concat(this.formatItemList(d,u,t))}),s.join(`
|
|
11
|
+
`)}displayWidth(e){return QI.stripVTControlCharacters(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map((t)=>{if(t==="[options]")return this.styleOptionText(t);if(t==="[command]")return this.styleSubcommandText(t);if(t[0]==="["||t[0]==="<")return this.styleArgumentText(t);return this.styleCommandText(t)}).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map((t)=>{if(t==="[options]")return this.styleOptionText(t);if(t[0]==="["||t[0]==="<")return this.styleArgumentText(t);return this.styleSubcommandText(t)}).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,i,n){let s=" ".repeat(2);if(!i)return s+e;let r=e.padEnd(t+e.length-n.displayWidth(e)),g=2,l=(this.helpWidth??80)-t-g-2,I;if(l<this.minWidthToWrap||n.preformatted(i))I=i;else I=n.boxWrap(i,l).replace(/\n/g,`
|
|
12
|
+
`+" ".repeat(t+g));return s+r+" ".repeat(g)+I.replace(/\n/g,`
|
|
13
|
+
${s}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let i=e.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,o=[];return i.forEach((s)=>{let r=s.match(n);if(r===null){o.push("");return}let g=[r.shift()],a=this.displayWidth(g[0]);r.forEach((l)=>{let I=this.displayWidth(l);if(a+I<=t){g.push(l),a+=I;return}o.push(g.join(""));let d=l.trimStart();g=[d],a=this.displayWidth(d)}),o.push(g.join(""))}),o.join(`
|
|
14
|
+
`)}}class mn{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let i=zW(e);if(this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long)this.negate=this.long.startsWith("--no-");this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;if(typeof e==="string")t={[e]:!0};return this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new Ct(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,i);return t},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return _I(this.name().replace(/^no-/,""));return _I(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class fr{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach((t)=>{if(t.negate)this.negativeOptions.set(t.attributeName(),t);else this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,i)=>{if(this.positiveOptions.has(i))this.dualOptions.add(i)})}valueFromOption(e,t){let i=t.attributeName();if(!this.dualOptions.has(i))return!0;let n=this.negativeOptions.get(i).presetArg,o=n!==void 0?n:!1;return t.negate===(o===e)}}function _I(e){return e.split("-").reduce((t,i)=>t+i[0].toUpperCase()+i.slice(1))}function zW(e){let t,i,n=/^-[^-]$/,o=/^--[^-]/,s=e.split(/[ |,]+/).concat("guard");if(n.test(s[0]))t=s.shift();if(o.test(s[0]))i=s.shift();if(!t&&n.test(s[0]))t=s.shift();if(!t&&o.test(s[0]))t=i,i=s.shift();if(s[0].startsWith("-")){let r=s[0],g=`option creation failed due to '${r}' in option flags '${e}'`;if(/^-[^-][^-]/.test(r))throw Error(`${g}
|
|
15
15
|
- a short flag is a single dash and a single character
|
|
16
16
|
- either use a single dash and a single character (for a short flag)
|
|
17
|
-
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(n.test(
|
|
18
|
-
- too many short flags`);if(
|
|
19
|
-
- too many long flags`);throw Error(`${
|
|
20
|
-
- unrecognised flag format`)}if(t===void 0&&
|
|
17
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(n.test(r))throw Error(`${g}
|
|
18
|
+
- too many short flags`);if(o.test(r))throw Error(`${g}
|
|
19
|
+
- too many long flags`);throw Error(`${g}
|
|
20
|
+
- unrecognised flag format`)}if(t===void 0&&i===void 0)throw Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:i}}function jW(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let i=[];for(let n=0;n<=e.length;n++)i[n]=[n];for(let n=0;n<=t.length;n++)i[0][n]=n;for(let n=1;n<=t.length;n++)for(let o=1;o<=e.length;o++){let s;if(e[o-1]===t[n-1])s=0;else s=1;if(i[o][n]=Math.min(i[o-1][n]+1,i[o][n-1]+1,i[o-1][n-1]+s),o>1&&n>1&&e[o-1]===t[n-2]&&e[o-2]===t[n-1])i[o][n]=Math.min(i[o][n],i[o-2][n-2]+1)}return i[e.length][t.length]}function yr(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let i=e.startsWith("--");if(i)e=e.slice(2),t=t.map((r)=>r.slice(2));let n=[],o=3,s=0.4;if(t.forEach((r)=>{if(r.length<=1)return;let g=jW(e,r),a=Math.max(e.length,r.length);if((a-g)/a>s){if(g<o)o=g,n=[r];else if(g===o)n.push(r)}}),n.sort((r,g)=>r.localeCompare(g)),i)n=n.map((r)=>`--${r}`);if(n.length>1)return`
|
|
21
21
|
(Did you mean one of ${n.join(", ")}?)`;if(n.length===1)return`
|
|
22
|
-
(Did you mean ${n[0]}?)`;return""}class
|
|
23
|
-
- specify the name in Command constructor or using .name()`);if(t=t||{},t.isDefault)this._defaultCommandName=e._name;if(t.noHelp||t.hidden)e._hidden=!0;return this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new
|
|
24
|
-
Expecting one of '${
|
|
25
|
-
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=(n)=>[n.name()].concat(n.aliases()),
|
|
26
|
-
- 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(e,t,
|
|
27
|
-
- if '${
|
|
22
|
+
(Did you mean ${n[0]}?)`;return""}class Ai extends MI.EventEmitter{constructor(e){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=e||"",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:(t)=>E.default.stdout.write(t),writeErr:(t)=>E.default.stderr.write(t),outputError:(t,i)=>i(t),getOutHelpWidth:()=>E.default.stdout.isTTY?E.default.stdout.columns:void 0,getErrHelpWidth:()=>E.default.stderr.isTTY?E.default.stderr.columns:void 0,getOutHasColors:()=>LI()??(E.default.stdout.isTTY&&E.default.stdout.hasColors?.()),getErrHasColors:()=>LI()??(E.default.stderr.isTTY&&E.default.stderr.hasColors?.()),stripColor:(t)=>$I.stripVTControlCharacters(t)},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(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,i){let n=t,o=i;if(typeof n==="object"&&n!==null)o=n,n=null;o=o||{};let[,s,r]=e.match(/([^ ]+) *(.*)/),g=this.createCommand(s);if(n)g.description(n),g._executableHandler=!0;if(o.isDefault)this._defaultCommandName=g._name;if(g._hidden=!!(o.noHelp||o.hidden),g._executableFile=o.executableFile||null,r)g.arguments(r);if(this._registerCommand(g),g.parent=this,g.copyInheritedSettings(this),n)return this;return g}createCommand(e){return new Ai(e)}createHelp(){return Object.assign(new Ho,this.configureHelp())}configureHelp(e){if(e===void 0)return this._helpConfiguration;return this._helpConfiguration=e,this}configureOutput(e){if(e===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...e},this}showHelpAfterError(e=!0){if(typeof e!=="string")e=!!e;return this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw Error(`Command passed to .addCommand() must have a name
|
|
23
|
+
- specify the name in Command constructor or using .name()`);if(t=t||{},t.isDefault)this._defaultCommandName=e._name;if(t.noHelp||t.hidden)e._hidden=!0;return this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new wo(e,t)}argument(e,t,i,n){let o=this.createArgument(e,t);if(typeof i==="function")o.default(n).argParser(i);else o.default(i);return this.addArgument(o),this}arguments(e){return e.trim().split(/ +/).forEach((t)=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e==="boolean"){if(this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let i=e??"help [command]",[,n,o]=i.match(/([^ ]+) *(.*)/),s=t??"display help for command",r=this.createCommand(n);if(r.helpOption(!1),o)r.arguments(o);if(s)r.description(s);if(this._addImplicitHelpCommand=!0,this._helpCommand=r,e||t)this._initCommandGroup(r);return this}addHelpCommand(e,t){if(typeof e!=="object")return this.helpCommand(e,t),this;return this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(e),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(e,t){let i=["preSubcommand","preAction","postAction"];if(!i.includes(e))throw Error(`Unexpected value for event passed to hook : '${e}'.
|
|
24
|
+
Expecting one of '${i.join("', '")}'`);if(this._lifeCycleHooks[e])this._lifeCycleHooks[e].push(t);else this._lifeCycleHooks[e]=[t];return this}exitOverride(e){if(e)this._exitCallback=e;else this._exitCallback=(t)=>{if(t.code!=="commander.executeSubCommandAsync")throw t};return this}_exit(e,t,i){if(this._exitCallback)this._exitCallback(new ct(e,t,i));E.default.exit(e)}action(e){let t=(i)=>{let n=this.registeredArguments.length,o=i.slice(0,n);if(this._storeOptionsAsProperties)o[n]=this;else o[n]=this.opts();return o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new mn(e,t)}_callParseArg(e,t,i,n){try{return e.parseArg(t,i)}catch(o){if(o.code==="commander.invalidArgument"){let s=`${n} ${o.message}`;this.error(s,{exitCode:o.exitCode,code:o.code})}throw o}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let i=e.long&&this._findOption(e.long)?e.long:e.short;throw Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
|
|
25
|
+
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=(n)=>[n.name()].concat(n.aliases()),i=t(e).find((n)=>this._findCommand(n));if(i){let n=t(this._findCommand(i)).join("|"),o=t(e).join("|");throw Error(`cannot add command '${o}' as already have command '${n}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),i=e.attributeName();if(e.defaultValue!==void 0)this.setOptionValueWithSource(i,e.defaultValue,"default");let n=(o,s,r)=>{if(o==null&&e.presetArg!==void 0)o=e.presetArg;let g=this.getOptionValue(i);if(o!==null&&e.parseArg)o=this._callParseArg(e,o,g,s);else if(o!==null&&e.variadic)o=e._collectValue(o,g);if(o==null)if(e.negate)o=!1;else if(e.isBoolean()||e.optional)o=!0;else o="";this.setOptionValueWithSource(i,o,r)};if(this.on("option:"+t,(o)=>{let s=`error: option '${e.flags}' argument '${o}' is invalid.`;n(o,s,"cli")}),e.envVar)this.on("optionEnv:"+t,(o)=>{let s=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;n(o,s,"env")});return this}_optionEx(e,t,i,n,o){if(typeof t==="object"&&t instanceof mn)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(t,i);if(s.makeOptionMandatory(!!e.mandatory),typeof n==="function")s.default(o).argParser(n);else if(n instanceof RegExp){let r=n;n=(g,a)=>{let l=r.exec(g);return l?l[0]:a},s.default(o).argParser(n)}else s.default(n);return this.addOption(s)}option(e,t,i,n){return this._optionEx({},e,t,i,n)}requiredOption(e,t,i,n){return this._optionEx({mandatory:!0},e,t,i,n)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){if(this._storeOptionsAsProperties)return this[e];return this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,i){if(this._storeOptionsAsProperties)this[e]=t;else this._optionValues[e]=t;return this._optionValueSources[e]=i,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach((i)=>{if(i.getOptionValueSource(e)!==void 0)t=i.getOptionValueSource(e)}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){if(E.default.versions?.electron)t.from="electron";let n=E.default.execArgv??[];if(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))t.from="eval"}if(e===void 0)e=E.default.argv;this.rawArgs=e.slice();let i;switch(t.from){case void 0:case"node":this._scriptPath=e[1],i=e.slice(2);break;case"electron":if(E.default.defaultApp)this._scriptPath=e[1],i=e.slice(2);else i=e.slice(1);break;case"user":i=e.slice(0);break;case"eval":i=e.slice(1);break;default:throw Error(`unexpected parse option { from: '${t.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",i}parse(e,t){this._prepareForParse();let i=this._prepareUserArgs(e,t);return this._parseCommand([],i),this}async parseAsync(e,t){this._prepareForParse();let i=this._prepareUserArgs(e,t);return await this._parseCommand([],i),this}_prepareForParse(){if(this._savedState===null)this.options.filter((e)=>e.negate&&e.defaultValue===void 0&&this.getOptionValue(e.attributeName())===void 0).forEach((e)=>{let t=e.long.replace(/^--no-/,"--");if(!this._findOption(t))this.setOptionValueWithSource(e.attributeName(),!0,"default")}),this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
26
|
+
- 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(e,t,i){if(pn.default.existsSync(e))return;let n=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",o=`'${e}' does not exist
|
|
27
|
+
- if '${i}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
28
28
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
29
|
-
- ${n}`;throw Error(
|
|
29
|
+
- ${n}`;throw Error(o)}_executeSubCommand(e,t){t=t.slice();let i=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,I){let d=Le.default.resolve(l,I);if(pn.default.existsSync(d))return d;if(i.includes(Le.default.extname(I)))return;let u=i.find((c)=>pn.default.existsSync(`${d}${c}`));if(u)return`${d}${u}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,s=this._executableDir||"";if(this._scriptPath){let l;try{l=pn.default.realpathSync(this._scriptPath)}catch{l=this._scriptPath}s=Le.default.resolve(Le.default.dirname(l),s)}if(s){let l=n(s,o);if(!l&&!e._executableFile&&this._scriptPath){let I=Le.default.basename(this._scriptPath,Le.default.extname(this._scriptPath));if(I!==this._name)l=n(s,`${I}-${e._name}`)}o=l||o}let r=i.includes(Le.default.extname(o)),g;if(E.default.platform!=="win32")if(r)t.unshift(o),t=KI(E.default.execArgv).concat(t),g=vo.default.spawn(E.default.argv[0],t,{stdio:"inherit"});else g=vo.default.spawn(o,t,{stdio:"inherit"});else this._checkForMissingExecutable(o,s,e._name),t.unshift(o),t=KI(E.default.execArgv).concat(t),g=vo.default.spawn(E.default.execPath,t,{stdio:"inherit"});if(!g.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((I)=>{E.default.on(I,()=>{if(g.killed===!1&&g.exitCode===null)g.kill(I)})});let a=this._exitCallback;g.on("close",(l)=>{if(l=l??1,!a)E.default.exit(l);else a(new ct(l,"commander.executeSubCommandAsync","(close)"))}),g.on("error",(l)=>{if(l.code==="ENOENT")this._checkForMissingExecutable(o,s,e._name);else if(l.code==="EACCES")throw Error(`'${o}' not executable`);if(!a)E.default.exit(1);else{let I=new ct(1,"commander.executeSubCommandAsync","(error)");I.nestedError=l,a(I)}}),this.runningCommand=g}_dispatchSubcommand(e,t,i){let n=this._findCommand(e);if(!n)this.help({error:!0});n._prepareForParse();let o;return o=this._chainOrCallSubCommandHook(o,n,"preSubcommand"),o=this._chainOrCall(o,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(i));else return n._parseCommand(t,i)}),o}_dispatchHelpCommand(e){if(!e)this.help();let t=this._findCommand(e);if(t&&!t._executableHandler)t.help();return this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((e,t)=>{if(e.required&&this.args[t]==null)this.missingArgument(e.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let e=(i,n,o)=>{let s=n;if(n!==null&&i.parseArg){let r=`error: command-argument value '${n}' is invalid for argument '${i.name()}'.`;s=this._callParseArg(i,n,o,r)}return s};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((i,n)=>{let o=i.defaultValue;if(i.variadic){if(n<this.args.length){if(o=this.args.slice(n),i.parseArg)o=o.reduce((s,r)=>e(i,r,s),i.defaultValue)}else if(o===void 0)o=[]}else if(n<this.args.length){if(o=this.args[n],i.parseArg)o=e(i,o,i.defaultValue)}t[n]=o}),this.processedArgs=t}_chainOrCall(e,t){if(e?.then&&typeof e.then==="function")return e.then(()=>t());return t()}_chainOrCallHooks(e,t){let i=e,n=[];if(this._getCommandAndAncestors().reverse().filter((o)=>o._lifeCycleHooks[t]!==void 0).forEach((o)=>{o._lifeCycleHooks[t].forEach((s)=>{n.push({hookedCommand:o,callback:s})})}),t==="postAction")n.reverse();return n.forEach((o)=>{i=this._chainOrCall(i,()=>o.callback(o.hookedCommand,this))}),i}_chainOrCallSubCommandHook(e,t,i){let n=e;if(this._lifeCycleHooks[i]!==void 0)this._lifeCycleHooks[i].forEach((o)=>{n=this._chainOrCall(n,()=>o(this,t))});return n}_parseCommand(e,t){let i=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(i.operands),t=i.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{if(i.unknown.length>0)this.unknownOption(i.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let s;if(s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent)s=this._chainOrCall(s,()=>{this.parent.emit(o,e,t)});return s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent?.listenerCount(o))n(),this._processArguments(),this.parent.emit(o,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);if(this.listenerCount("command:*"))this.emit("command:*",e,t);else if(this.commands.length)this.unknownCommand();else n(),this._processArguments()}else if(this.commands.length)n(),this.help({error:!0});else n(),this._processArguments()}_findCommand(e){if(!e)return;return this.commands.find((t)=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find((t)=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((e)=>{e.options.forEach((t)=>{if(t.mandatory&&e.getOptionValue(t.attributeName())===void 0)e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter((i)=>{let n=i.attributeName();if(this.getOptionValue(n)===void 0)return!1;return this.getOptionValueSource(n)!=="default"});e.filter((i)=>i.conflictsWith.length>0).forEach((i)=>{let n=e.find((o)=>i.conflictsWith.includes(o.attributeName()));if(n)this._conflictingOption(i,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((e)=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],i=[],n=t;function o(l){return l.length>1&&l[0]==="-"}let s=(l)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l))return!1;return!this._getCommandAndAncestors().some((I)=>I.options.map((d)=>d.short).some((d)=>/^-\d$/.test(d)))},r=null,g=null,a=0;while(a<e.length||g){let l=g??e[a++];if(g=null,l==="--"){if(n===i)n.push(l);n.push(...e.slice(a));break}if(r&&(!o(l)||s(l))){this.emit(`option:${r.name()}`,l);continue}if(r=null,o(l)){let I=this._findOption(l);if(I){if(I.required){let d=e[a++];if(d===void 0)this.optionMissingArgument(I);this.emit(`option:${I.name()}`,d)}else if(I.optional){let d=null;if(a<e.length&&(!o(e[a])||s(e[a])))d=e[a++];this.emit(`option:${I.name()}`,d)}else this.emit(`option:${I.name()}`);r=I.variadic?I:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let I=this._findOption(`-${l[1]}`);if(I){if(I.required||I.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${I.name()}`,l.slice(2));else this.emit(`option:${I.name()}`),g=`-${l.slice(2)}`;continue}}if(/^--[^=]+=/.test(l)){let I=l.indexOf("="),d=this._findOption(l.slice(0,I));if(d&&(d.required||d.optional)){this.emit(`option:${d.name()}`,l.slice(I+1));continue}}if(n===t&&o(l)&&!(this.commands.length===0&&s(l)))n=i;if((this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&i.length===0){if(this._findCommand(l)){t.push(l),i.push(...e.slice(a));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(a));break}else if(this._defaultCommandName){i.push(l,...e.slice(a));break}}if(this._passThroughOptions){n.push(l,...e.slice(a));break}n.push(l)}return{operands:t,unknown:i}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let i=0;i<t;i++){let n=this.options[i].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){if(this._outputConfiguration.outputError(`${e}
|
|
30
30
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
31
31
|
`);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
|
|
32
|
-
`),this.outputHelp({error:!0});let
|
|
33
|
-
`),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let
|
|
34
|
-
Expecting one of '${
|
|
35
|
-
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((n)=>t.is(n)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function
|
|
36
|
-
`);return new
|
|
37
|
-
${t}`,e)}}var Xs="x-potato-sdk-base-url",lc=(e,t,r)=>(_(e.length>0,"The SDK base URL cannot be empty"),_(t.length>0,"The SDK API key cannot be empty"),{headers:{Accept:"application/json",Authorization:`ApiKey ${t}`,[Xs]:new URL(e).toString()},fetch:r});async function j(e,t){let{fetch:r=globalThis.fetch,...n}=t,i=new Headers(n.headers),s=i.get(Xs);_(s,"The SDK base URL is missing"),i.delete(Xs);let o=await r(new URL(e,s),{...n,headers:i}),a=await o.text();if(!o.ok){let l=a;if(a.length===0)l=void 0;else if(o.headers.get("content-type")?.includes("application/json"))l=JSON.parse(a);throw te.fromResponse(o.status,l,o.headers.get("x-request-id")??void 0)}return a.length===0?void 0:JSON.parse(a)}var jv=()=>"/api/v2-beta/base-models",dc=async(e)=>j(jv(),{...e,method:"GET"}),Rv=(e)=>`/api/v2-beta/base-models/${e}`,cc=async(e,t)=>j(Rv(e),{...t,method:"GET"}),Cv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/projects/${e}/models?${n}`:`/api/v2-beta/projects/${e}/models`},Zs=async(e,t,r)=>j(Cv(e,t),{...r,method:"GET"}),Ov=(e)=>`/api/v2-beta/projects/${e}/models`,uc=async(e,t,r)=>j(Ov(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Fv=(e,t,r)=>{let n=new URLSearchParams;Object.entries(r||{}).forEach(([s,o])=>{if(o!==void 0)n.append(s,o===null?"null":o.toString())});let i=n.toString();return i.length>0?`/api/v2-beta/projects/${e}/models/${t}/versions?${i}`:`/api/v2-beta/projects/${e}/models/${t}/versions`},eo=async(e,t,r,n)=>j(Fv(e,t,r),{...n,method:"GET"}),Tv=(e)=>`/api/v2-beta/model-versions/${e}`,pc=async(e,t)=>j(Tv(e),{...t,method:"GET"}),Av=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}/archive`,fc=async(e,t,r)=>j(Av(e,t),{...r,method:"POST"}),kv=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}`,mc=async(e,t,r)=>j(kv(e,t),{...r,method:"GET"}),Dv=()=>"/api/v2-beta/me",hc=async(e)=>j(Dv(),{...e,method:"GET"}),Nv=(e)=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,i])=>{if(i!==void 0)t.append(n,i===null?"null":i.toString())});let r=t.toString();return r.length>0?`/api/v2-beta/projects?${r}`:"/api/v2-beta/projects"},to=async(e,t)=>j(Nv(e),{...t,method:"GET"}),Mv=()=>"/api/v2-beta/projects",gc=async(e,t)=>j(Mv(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),Lv=(e)=>`/api/v2-beta/projects/${e}`,yc=async(e,t)=>j(Lv(e),{...t,method:"GET"}),qv=(e)=>`/api/v2-beta/projects/${e}`,_c=async(e,t,r)=>j(qv(e),{...r,method:"PATCH",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Uv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/projects/${e}/pipelines?${n}`:`/api/v2-beta/projects/${e}/pipelines`},ro=async(e,t,r)=>j(Uv(e,t),{...r,method:"GET"}),Bv=(e)=>`/api/v2-beta/pipelines/${e}`,bc=async(e,t)=>j(Bv(e),{...t,method:"GET"}),Gv=(e)=>`/api/v2-beta/pipelines/${e}`,Pc=async(e,t,r)=>j(Gv(e),{...r,method:"PATCH",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Vv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/projects/${e}/datasets?${n}`:`/api/v2-beta/projects/${e}/datasets`},no=async(e,t,r)=>j(Vv(e,t),{...r,method:"GET"}),zv=(e)=>`/api/v2-beta/projects/${e}/datasets`,vc=async(e,t,r)=>j(zv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Kv=(e)=>`/api/v2-beta/datasets/${e}`,wc=async(e,t)=>j(Kv(e),{...t,method:"GET"}),Wv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/datasets/${e}/fields?${n}`:`/api/v2-beta/datasets/${e}/fields`},io=async(e,t,r)=>j(Wv(e,t),{...r,method:"GET"}),Hv=(e)=>`/api/v2-beta/datasets/${e}/fields`,so=async(e,t,r)=>j(Hv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Jv=(e)=>`/api/v2-beta/datasets/${e}/inferred-fields`,$c=async(e,t)=>j(Jv(e),{...t,method:"GET"}),Qv=(e)=>`/api/v2-beta/datasets/${e}/items`,Ic=async(e,t,r)=>j(Qv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Yv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/datasets/${e}/items?${n}`:`/api/v2-beta/datasets/${e}/items`},oo=async(e,t,r)=>j(Yv(e,t),{...r,method:"GET"}),Xv=(e)=>`/api/v2-beta/datasets/${e}/uploads`,Ec=async(e,t,r)=>j(Xv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Zv=(e)=>`/api/v2-beta/uploads/${e}/finalize`,Sc=async(e,t)=>j(Zv(e),{...t,method:"POST"}),ew=(e)=>`/api/v2-beta/uploads/${e}`,ao=async(e,t)=>j(ew(e),{...t,method:"GET"}),tw=(e)=>`/api/v2-beta/uploads/${e}/cancel`,xc=async(e,t)=>j(tw(e),{...t,method:"POST"}),rw=(e)=>`/api/v2-beta/projects/${e}/pipelines/import`,jc=async(e,t,r)=>j(rw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),nw=(e)=>`/api/v2-beta/pipelines/${e}/dataset`,Rc=async(e,t,r)=>j(nw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),iw=(e)=>`/api/v2-beta/pipelines/${e}/export`,Cc=async(e,t)=>j(iw(e),{...t,method:"GET"}),sw=(e)=>`/api/v2-beta/pipelines/${e}/copy`,Oc=async(e,t,r)=>j(sw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),ow=(e)=>`/api/v2-beta/pipelines/${e}/cost-estimate`,Fc=async(e,t,r)=>j(ow(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),aw=(e)=>`/api/v2-beta/pipelines/${e}/runs`,Tc=async(e,t)=>j(aw(e),{...t,method:"POST"}),lw=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/pipelines/${e}/runs?${n}`:`/api/v2-beta/pipelines/${e}/runs`},lo=async(e,t,r)=>j(lw(e,t),{...r,method:"GET"}),dw=(e)=>`/api/v2-beta/runs/${e}`,co=async(e,t)=>j(dw(e),{...t,method:"GET"});var cw=(e)=>`/api/v2-beta/runs/${e}/cancel`,Ac=async(e,t)=>j(cw(e),{...t,method:"POST"}),uw=(e)=>`/api/v2-beta/datasets/${e}/exports`,kc=async(e,t,r)=>j(uw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),pw=(e)=>`/api/v2-beta/exports/${e}`,uo=async(e,t)=>j(pw(e),{...t,method:"GET"}),fw=(e)=>`/api/v2-beta/pipelines/${e}/graph`,Dc=async(e,t)=>j(fw(e),{...t,method:"GET"}),mw=(e)=>`/api/v2-beta/pipelines/${e}/graph`,Nc=async(e,t,r)=>j(mw(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),hw=(e)=>`/api/v2-beta/pipelines/${e}/graph/validate`,Mc=async(e,t,r)=>j(hw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),gw=(e,t)=>`/api/v2-beta/pipelines/${e}/graph/nodes/${t}`,Lc=async(e,t,r,n)=>j(gw(e,t),{...n,method:"PATCH",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(r)}),yw=(e)=>`/api/v2-beta/projects/${e}/secrets`,qc=async(e,t)=>j(yw(e),{...t,method:"GET"}),_w=(e,t)=>`/api/v2-beta/projects/${e}/secrets/${t}`,Uc=async(e,t,r,n)=>j(_w(e,t),{...n,method:"PUT",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(r)}),bw=(e)=>`/api/v2-beta/projects/${e}/files`,Bc=async(e,t)=>j(bw(e),{...t,method:"GET"}),Pw=(e)=>`/api/v2-beta/projects/${e}/files`,Gc=async(e,t,r)=>j(Pw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),vw=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}/finalize`,Vc=async(e,t,r)=>j(vw(e,t),{...r,method:"POST"}),ww=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}`,zc=async(e,t,r)=>j(ww(e,t),{...r,method:"DELETE"}),$w=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([i,s])=>{if(s!==void 0)r.append(i,s===null?"null":s.toString())});let n=r.toString();return n.length>0?`/api/v2-beta/runs/${e}/items?${n}`:`/api/v2-beta/runs/${e}/items`},po=async(e,t,r)=>j($w(e,t),{...r,method:"GET"}),Iw=(e,t)=>`/api/v2-beta/runs/${e}/items/${t}`,Kc=async(e,t,r)=>j(Iw(e,t),{...r,method:"GET"}),Ew=(e)=>`/api/v2-beta/pipelines/${e}/checks`,Wc=async(e,t)=>j(Ew(e),{...t,method:"GET"}),Sw=(e)=>`/api/v2-beta/pipelines/${e}/checks`,Hc=async(e,t,r)=>j(Sw(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),xw=(e)=>`/api/v2-beta/checks/${e}`,fo=async(e,t)=>j(xw(e),{...t,method:"GET"});async function*Je(e,t={}){let r=t.offset;while(!0){let n=await e({limit:t.limit,offset:r});if(yield*n.items,!n.pagination.hasMore)return;r=n.pagination.offset+n.pagination.limit}}var Xr=async(e,t,r={})=>{let n=r.timeoutMs??60000,i=r.intervalMs??1000;_(Number.isFinite(n)&&n>=0,"The wait timeout must be a nonnegative finite number"),_(Number.isFinite(i)&&i>0,"The polling interval must be a positive finite number");let s=Date.now()+n,o=new AbortController,a=setTimeout(()=>o.abort(),n);try{while(!0){if(o.signal.aborted)throw te.waitTimeout(n);let l=await e(o.signal);if(t(l))return l;let d=s-Date.now();if(d<=0)throw te.waitTimeout(n);let{promise:c,resolve:p}=Promise.withResolvers();setTimeout(p,Math.min(i,d)),await c}}catch(l){if(o.signal.aborted)throw te.waitTimeout(n);throw l}finally{clearTimeout(a)}};var Rw=(e)=>{let t=lc(e.baseUrl,e.apiKey,e.fetch),r=()=>{let u=new Headers(t.headers);return u.set("Content-Type","application/json"),{...t,headers:u,body:"{}"}};async function n(u,f){switch(u.type){case"datasetUpload":return Xr((m)=>ao(u.uploadId,{...t,signal:m}),(m)=>m.status==="succeeded"||m.status==="failed",f);case"datasetExport":return Xr((m)=>uo(u.exportId,{...t,signal:m}),(m)=>m.status==="succeeded",f);case"pipelineCheck":return Xr((m)=>fo(u.checkRunId,{...t,signal:m}),(m)=>m.status==="succeeded"||m.status==="failed",f);case"pipelineRun":return Xr((m)=>co(u.runId,{...t,signal:m}),(m)=>m.status==="succeeded"||m.status==="failed",f)}}return{me:()=>hc(t),projects:{create:(u)=>gc(u,t),get:({projectId:u})=>yc(u,t),update:({projectId:u,...f})=>_c(u,f,t),listPage:(u={})=>to(u,t),listAll:(u={})=>Je(async(f)=>{let m=await to({...u,...f},t);return{items:m.projects,pagination:m.pagination}},u)},pipelines:{import:({projectId:u,...f})=>jc(u,f,t),get:({pipelineId:u})=>bc(u,t),update:({pipelineId:u,...f})=>Pc(u,f,t),listPage:({projectId:u,...f})=>ro(u,f,t),listAll:({projectId:u,...f})=>Je(async(m)=>{let g=await ro(u,{...f,...m},t);return{items:g.pipelines,pagination:g.pagination}},f),getGraph:({pipelineId:u})=>Dc(u,t),replaceGraph:({pipelineId:u,...f})=>Nc(u,"version"in f?{graph:f.graph,expectedVersion:f.version}:f,t),validateGraph:({pipelineId:u,...f})=>Mc(u,f,t),estimateCost:({pipelineId:u,...f})=>Fc(u,f,t),patchNode:({pipelineId:u,nodeId:f,...m})=>Lc(u,f,m,t),attachDataset:({pipelineId:u,...f})=>Rc(u,f,t),export:({pipelineId:u})=>Cc(u,t),copy:({pipelineId:u,...f})=>Oc(u,f,t)},datasets:{create:({projectId:u,...f})=>vc(u,f,t),get:({datasetId:u})=>wc(u,t),listPage:({projectId:u,...f})=>no(u,f,t),listAll:({projectId:u,...f})=>Je(async(m)=>{let g=await no(u,{...f,...m},t);return{items:g.datasets,pagination:g.pagination}},f),createField:async({datasetId:u,...f})=>{let m=await so(u,f,t);return _(!("fields"in m),"Creating one field must return that field"),m},createFields:async({datasetId:u,fields:f})=>{let m=await so(u,{fields:f},t);return _("fields"in m,"Creating several fields must return those fields"),m.fields},listFieldsPage:({datasetId:u,...f})=>io(u,f,t),getInferredFields:({datasetId:u})=>$c(u,t),listAllFields:({datasetId:u,...f})=>Je(async(m)=>{let g=await io(u,{...f,...m},t);return{items:g.fields,pagination:g.pagination}},f),appendItems:({datasetId:u,...f})=>Ic(u,f,t),listItemsPage:({datasetId:u,...f})=>oo(u,f,t),listAllItems:({datasetId:u,...f})=>Je(async(m)=>{let g=await oo(u,{...f,...m},t);return{items:g.items,pagination:g.pagination}},f),startUpload:({datasetId:u,...f})=>Ec(u,f,t),finalizeUpload:({uploadId:u})=>Sc(u,r()),cancelUpload:({uploadId:u})=>xc(u,r()),getUpload:({uploadId:u})=>ao(u,t),startExport:({datasetId:u,...f})=>kc(u,f,t),getExport:({exportId:u})=>uo(u,t)},baseModels:{list:async()=>(await dc(t)).baseModels,get:({id:u})=>cc(u,t)},models:{listPage:({projectId:u,...f})=>Zs(u,f,t),listAll:({projectId:u,...f})=>Je(async(m)=>{let g=await Zs(u,{...f,...m},t);return{items:g.models,pagination:g.pagination}},f),get:({projectId:u,modelId:f})=>mc(u,f,t),listVersionsPage:({projectId:u,modelId:f,...m})=>eo(u,f,m,t),listAllVersions:({projectId:u,modelId:f,...m})=>Je(async(g)=>{let y=await eo(u,f,{...m,...g},t);return{items:y.versions,pagination:y.pagination}},m),create:({projectId:u,...f})=>uc(u,f,t),getVersion:({modelVersionId:u})=>pc(u,t),archive:({projectId:u,modelId:f})=>{let m=new Headers(t.headers);return m.set("Content-Type","application/json"),fc(u,f,{...t,headers:m})}},runs:{start:({pipelineId:u})=>Tc(u,r()),get:({runId:u})=>co(u,t),cancel:({runId:u})=>Ac(u,t),listPage:({pipelineId:u,...f})=>lo(u,f,t),listAll:({pipelineId:u,...f})=>Je(async(m)=>{let g=await lo(u,{...f,...m},t);return{items:g.runs,pagination:g.pagination}},f),listItemsPage:({runId:u,...f})=>po(u,f,t),listAllItems:({runId:u,...f})=>Je(async(m)=>{let g=await po(u,{...f,...m},t);return{items:g.items,pagination:g.pagination}},f),getItem:({runId:u,itemId:f})=>Kc(u,f,t)},secrets:{list:async({projectId:u})=>(await qc(u,t)).secrets,set:({projectId:u,name:f,...m})=>Uc(u,f,m,t)},files:{list:async({projectId:u})=>(await Bc(u,t)).files,startUpload:({projectId:u,...f})=>Gc(u,f,t),finalizeUpload:({projectId:u,fileId:f})=>Vc(u,f,t),delete:({projectId:u,fileId:f})=>zc(u,f,t)},checks:{list:async({pipelineId:u})=>(await Wc(u,t)).checks,start:({pipelineId:u,...f})=>Hc(u,f,t),get:({checkRunId:u})=>fo(u,t)},waitFor:n}};function ct(e){return Rw(e)}var $r=require("fs/promises"),ul=require("path"),em=Re(cl(),1);var Wi="toloka.json";class pl extends Error{constructor(e,t){super(e,t);this.name="TolokaStateError"}}var eR="^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))(?!.*//).+$",tR={type:"object",properties:{projectId:{type:"string",minLength:1},pipelines:{type:"object",propertyNames:{type:"string",pattern:eR},additionalProperties:{type:"object",properties:{pipelineId:{type:"string",minLength:1}},required:["pipelineId"],additionalProperties:!1}},datasets:{type:"object",propertyNames:{type:"string",minLength:1},additionalProperties:{type:"object",properties:{datasetId:{type:"string",minLength:1}},required:["datasetId"],additionalProperties:!1}}},required:["projectId","pipelines","datasets"],additionalProperties:!1},rR=new em.default({allErrors:!0,strict:!1}),Zf=rR.compile(tR);function nR(e){let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return`${typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/"}: ${e.message??`failed ${e.keyword} validation`}`}function tm(e){if(Zf(e))return e;let t=Zf.errors;throw _(t,"toloka.json validation failed without errors"),new pl(`Invalid toloka.json: ${t.map(nR).join("; ")}`)}async function Ee(e){let t;try{t=await $r.readFile(ul.join(e,Wi),"utf8")}catch(r){if(r instanceof Error&&"code"in r&&r.code==="ENOENT")return;throw r}try{return tm(JSON.parse(t))}catch(r){if(r instanceof SyntaxError)throw new pl(`Invalid toloka.json: ${r.message}`,{cause:r});throw r}}async function Gt(e,t){let r=tm(t),n=Object.fromEntries(Object.entries(r.pipelines).sort(([s],[o])=>s<o?-1:s>o?1:0)),i=Object.fromEntries(Object.entries(r.datasets).sort(([s],[o])=>s<o?-1:s>o?1:0));await $r.mkdir(e,{recursive:!0}),await $r.writeFile(ul.join(e,Wi),`${JSON.stringify({projectId:r.projectId,pipelines:n,datasets:i},null,2)}
|
|
38
|
-
`,"utf8")}var
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
`),{cause:l})}let o=[`Created project ${s.id} as ${r}.`];if(e.sourceRoot!==void 0){let l=await _R(e.sourceRoot,n,s,r);if(l!==void 0)o.push(l)}let a=o.join(`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
`)}}}var xg=require("crypto"),Xt=require("fs/promises"),js=require("path");var Er=require("path");function Im(){let e=SR();return async(t)=>{for(let r of t)r.module=e(r.filename);return t}}function SR(e=process.argv[1]?Er.dirname(process.argv[1]):process.cwd(),t=Er.sep==="\\"){let r=t?$m(e):e;return(n)=>{if(!n)return;let i=t?$m(n):n,{dir:s,base:o,ext:a}=Er.posix.parse(i);if(a===".js"||a===".mjs"||a===".cjs")o=o.slice(0,-1*a.length);let l=decodeURIComponent(o);if(!s)s=".";let d=s.lastIndexOf("/node_modules");if(d>-1)return`${s.slice(d+14).replace(/\//g,".")}:${l}`;if(s.startsWith(r)){let c=s.slice(r.length+1).replace(/\//g,".");return c?`${c}:${l}`:l}return l}}function $m(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var _l=(e)=>{if("flags"in e){let t=Em(e.flags),r=Sm(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,s])=>[i,es(s)])),n=Object.fromEntries(Object.entries(t).map(([i,s])=>[i,xR(i,s,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function xR(e,t,r){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:r?JSON.stringify(r):void 0,description:void 0}}}var Em=(e)=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,Cn(r)]).filter(([,t])=>t!==void 0)),Sm=(e)=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter((r)=>{let n=t[r];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map((r)=>{let n=t[r].metadata?.payload;return[r,n?es(n):void 0]}))},Cn=(e)=>e===void 0?void 0:e.variant??e.enabled,es=(e)=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var jR=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],On=(e,t=[])=>{let r={},n=(i)=>{if(e[i]!==void 0)r[i]=e[i]};return jR.forEach(n),t.forEach(n),r};var Se=function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.AiQueue="ai_queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e}({});function bl(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var CR="NativeGzipValidationError",OR=31,FR=139,TR=8,AR=(e)=>e.length>=2&&e[0]===OR&&e[1]===FR;var Fn,kR=()=>{if(Fn)return Fn;Fn=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;Fn[e]=t>>>0}return Fn},DR=(e)=>{let t=kR(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},ts=(e)=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name=CR,t},NR=async(e,t)=>{if(e.size<18)ts("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());if(!AR(r)||r[2]!==TR)ts("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());if(n.getUint32(0,!0)!==DR(t))ts("invalid-crc");let i=t.length>>>0;if(n.getUint32(4,!0)!==i)ts("invalid-size")};async function zt(e,t=!0,r){try{let n=new TextEncoder().encode(e),i=new globalThis.CompressionStream("gzip"),s=i.writable.getWriter(),o=s.write(n).then(()=>s.close()).catch(async(d)=>{try{await s.abort(d)}catch{}throw d}),a=new Response(i.readable).blob(),[l]=await Promise.all([a,o]);return await NR(l,n),l}catch(n){if(r?.rethrow)throw n;if(t)console.error("Failed to gzip compress data",n);return null}}var MR=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],xm=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return MR.concat(t).some((n)=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};function Sr(e){let t=[];return JSON.stringify(e,function(r,n){if(typeof n=="bigint")return n.toString();if(typeof n=="function"||typeof n=="symbol")return;if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){while(t.length>0&&t[t.length-1]!==this)t.pop();if(t.includes(n))return"[Circular]";t.push(n)}return n})??"null"}var qR=Array.isArray,jm=Object.prototype,qN=jm.hasOwnProperty,rs=jm.toString,et=qR||function(e){return rs.call(e)==="[object Array]"};var Tn=(e)=>e===Object(e)&&!et(e);var Kt=(e)=>e===void 0,gt=(e)=>rs.call(e)=="[object String]",Rm=(e)=>gt(e)&&e.trim().length===0,Cm=(e)=>e===null;var An=(e)=>rs.call(e)=="[object Number]"&&e===e;var Om=(e)=>rs.call(e)==="[object Boolean]";var Fm=(e)=>e instanceof Error;function ns(e){return e===null||typeof e!="object"}function Wt(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function Tm(e){return Wt(e,"ErrorEvent")}function xr(e){return typeof Event<"u"&&UR(e,Event)}function Am(e){return Wt(e,"Object")}function UR(e,t){try{return e instanceof t}catch{return!1}}function kn(e,t,r,n,i){if(t>r)n.warn("min cannot be greater than max."),t=r;if(An(e))if(e>r)return n.warn(" cannot be greater than max: "+r+". Using max value instead."),r;else{if(!(e<t))return e;return n.warn(" cannot be less than min: "+t+". Using min value instead."),t}return n.warn(" must be a number. using max or fallback. max: "+r+", fallback: "+i),kn(i||r,t,r,n)}var BR=86400000,GR=1,VR=10;function km(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??GR,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??VR}}class Pl{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=kn(e.bucketSize,0,100,e._logger),this._refillRate=kn(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=kn(e.refillInterval,0,BR,e._logger)}_applyRefill(e,t){let r=t-e.lastAccess,n=Math.floor(r/this._refillInterval);if(n>0){let i=n*this._refillRate;e.tokens=Math.min(e.tokens+i,this._bucketSize),e.lastAccess=e.lastAccess+n*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),r=String(e),n=this._buckets[r];if(n)this._applyRefill(n,t);else n={tokens:this._bucketSize,lastAccess:t},this._buckets[r]=n;if(n.tokens===0)return!0;if(n.tokens--,n.tokens===0)this._onBucketRateLimited?.(e);return n.tokens===0}stop(){this._buckets={}}}/*! For license information please see uuidv7.mjs.LICENSE.txt */class Ht{constructor(e){this.bytes=e}static ofInner(e){if(e.length===16)return new Ht(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,r,n){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||e<0||t<0||r<0||n<0||e>281474976710655||t>4095||r>1073741823||n>4294967295)throw RangeError("invalid field value");let i=new Uint8Array(16);return i[0]=e/1099511627776,i[1]=e/4294967296,i[2]=e/16777216,i[3]=e/65536,i[4]=e/256,i[5]=e,i[6]=112|t>>>8,i[7]=t,i[8]=128|r>>>24,i[9]=r>>>16,i[10]=r>>>8,i[11]=r,i[12]=n>>>24,i[13]=n>>>16,i[14]=n>>>8,i[15]=n,new Ht(i)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;default:break}if(t){let r=new Uint8Array(16);for(let n=0;n<16;n+=4){let i=parseInt(t.substring(2*n,2*n+8),16);r[n+0]=i>>>24,r[n+1]=i>>>16,r[n+2]=i>>>8,r[n+3]=i}return new Ht(r)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)if(e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]),t===3||t===5||t===7||t===9)e+="-";return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every((t)=>t===0)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every((t)=>t===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new Ht(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let r=this.bytes[t]-e.bytes[t];if(r!==0)return Math.sign(r)}return 0}}class Nm{constructor(e){this.timestamp=0,this.counter=0,this.random=e??zR()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let r=this.generateOrAbortCore(e,t);if(r===void 0)this.timestamp=0,r=this.generateOrAbortCore(e,t);return r}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return Ht.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,Ht.ofInner(e)}}var zR=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),Dm,xe=()=>KR().toString(),KR=()=>(Dm||(Dm=new Nm)).generate();class vl{add(e){let t=xe(),r=++this.nextId;return this.promiseByIds[t]={id:r,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map((r)=>r.promise),t=e.length;while(t>0)await Promise.all(e),e=Object.values(this.promiseByIds).map((r)=>r.promise),t=e.length}getPromises(e=[],t=this.nextId){let r=new Set(e);return Object.values(this.promiseByIds).filter((n)=>n.id<=t&&!r.has(n.promise)).map((n)=>n.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}function WR(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var Mm=(e,t,r)=>{function n(s,...o){t(()=>{let a=r[s];a(e,...o)})}return{debug:(...s)=>{n("debug",...s)},info:(...s)=>{n("log",...s)},warn:(...s)=>{n("warn",...s)},error:(...s)=>{n("error",...s)},critical:(...s)=>{r.error(e,...s)},createLogger:(s)=>Mm(`${e} ${s}`,t,r)}},HR=(e)=>e();function Lm(e,t=HR){return Mm(e,t,WR())}var Rr="Mobile",ss="iOS",jr="Android",Vm="Tablet",XN=jr+" "+Vm;var QR="Apple",ZN=QR+" Watch",zm="Safari",os="BlackBerry",Km="Samsung",YR=Km+"Browser",XR=Km+" Internet",as="Chrome",ZR=as+" OS",eC=as+" "+ss,Wm="Internet Explorer",tC=Wm+" "+Rr,$l="Opera",e1=$l+" Mini",Hm="Edge",rC="Microsoft "+Hm,Il="Firefox",nC=Il+" "+ss,El="Nintendo",Sl="PlayStation",is="Xbox",iC=jr+" "+Rr,sC=Rr+" "+zm,Dn="Windows",oC=Dn+" Phone";var Jm="Generic",t1=Jm+" "+Rr.toLowerCase(),r1=Jm+" "+Vm.toLowerCase(),aC="Konqueror",lC="Oculus Browser",qm="Vivaldi",dC="Yandex",Um="Whale",cC="DuckDuckGo",uC="Pale Moon",Bm="Waterfox",Gm="Brave",pC="Google Search App",J="(\\d+(\\.\\d+)?)",wl=new RegExp("Version/"+J);var n1=new RegExp(is,"i"),i1=new RegExp(Sl+" \\w+","i"),s1=new RegExp(El+" \\w+","i"),fC=new RegExp(os+"|PlayBook|BB10","i"),mC={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"};var o1={[tC]:[new RegExp("rv:"+J)],[rC]:[new RegExp(Hm+"?\\/"+J)],[as]:[new RegExp("("+as+"|CrMo)\\/"+J)],[eC]:[new RegExp("CriOS\\/"+J)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+J)],[zm]:[wl],[sC]:[wl],[$l]:[new RegExp("("+$l+"|OPR)\\/"+J)],[Il]:[new RegExp(Il+"\\/"+J)],[nC]:[new RegExp("FxiOS\\/"+J)],[aC]:[new RegExp("Konqueror[:/]?"+J,"i")],[os]:[new RegExp(os+" "+J),wl],[iC]:[new RegExp("android\\s"+J,"i")],[XR]:[new RegExp(YR+"\\/"+J)],[lC]:[new RegExp("OculusBrowser\\/"+J)],[qm]:[new RegExp(qm+"\\/"+J)],[dC]:[new RegExp("YaBrowser\\/"+J)],[Um]:[new RegExp(Um+"\\/"+J)],[Gm]:[new RegExp(Gm+"\\/"+J)],[cC]:[new RegExp("(DuckDuckGo|Ddg)\\/"+J)],[uC]:[new RegExp("PaleMoon\\/"+J)],[Bm]:[new RegExp(Bm+"\\/"+J)],[pC]:[new RegExp("GSA\\/"+J)],[Wm]:[new RegExp("(rv:|MSIE )"+J)],Mozilla:[new RegExp("rv:"+J)]};var a1=[[new RegExp(is+"; "+is+" (.*?)[);]","i"),(e)=>[is,e&&e[1]||""]],[new RegExp(El,"i"),[El,""]],[new RegExp(Sl,"i"),[Sl,""]],[fC,[os,""]],[new RegExp(Dn,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[oC,""];if(new RegExp(Rr).test(t)&&!/IEMobile\b/.test(t))return[Dn+" "+Rr,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=mC[n]||"";if(/arm/i.test(t))i="RT";return[Dn,i]}return[Dn,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(e)=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[ss,t.join(".")]}return[ss,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(e)=>{let t="";if(e&&e.length>=3)t=Kt(e[2])?e[3]:e[2];return["watchOS",t]}],[new RegExp("("+jr+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+jr+")","i"),(e)=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[jr,t.join(".")]}return[jr,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(e)=>{let t=["Mac OS X",""];if(e&&e[1]){let r=[e[1],e[2],e[3]||"0"];t[1]=r.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[ZR,""]],[/Linux|debian/i,["Linux",""]]];var Qm="utf8",hC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function gC(e){return typeof e=="string"&&hC.test(e)}function ls(e,t){return gC(e)?e:t()}function Ym(e){return e?.replace(/\/+$/,"")}async function Xm(e,t){let r=null;for(let n=0;n<t.retryCount+1;n++){if(n>0)await new Promise((i)=>setTimeout(i,t.retryDelay));try{return await e()}catch(i){if(r=i,!t.retryCheck(i))throw i}}throw r}function xl(){return new Date().toISOString()}function ue(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var Zm=(e)=>e instanceof Error;function jl(e){return Promise.all(e.map((t)=>(t??Promise.resolve()).then((r)=>({status:"fulfilled",value:r}),(r)=>({status:"rejected",reason:r}))))}var _C={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},b1=_C.info;function Rl(e){if(Om(e))return{boolValue:e};if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e))return{intValue:e};return{doubleValue:e}}if(typeof e=="string")return{stringValue:e};if(et(e))return{arrayValue:{values:e.map((t)=>Rl(t))}};try{return{stringValue:JSON.stringify(e)}}catch{return{stringValue:String(e)}}}function Nn(e){let t=[];for(let r in e){let n=e[r];if(!(Cm(n)||Kt(n)))t.push({key:r,value:Rl(n)})}return t}var Mn=[0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,1e4];function Cl(e){return String(e)+"000000"}function Ol(e,t,r,n){let i="";if(n)i=Object.keys(n).sort().map((o)=>`${JSON.stringify(o)}:${JSON.stringify(n[o])}`).join(",");return`${e}\x00${t}\x00${r??""}\x00${i}`}function eh(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function Fl(e,t,r){return{...e.resourceAttributes,"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":r}}function Tl(e,t,r,n){return{resourceMetrics:[{resource:{attributes:Nn(t)},scopeMetrics:[{scope:{name:r,version:n},metrics:e}]}]}}function ds(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1000}}var th=1;class cs{constructor(e,t,r){this._instance=e,this._config=t,this._logger=r,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,r){this._capture({name:e,type:"count",value:t,unit:r?.unit,attributes:r?.attributes})}gauge(e,t,r){this._capture({name:e,type:"gauge",value:t,unit:r?.unit,attributes:r?.attributes})}histogram(e,t,r){this._capture({name:e,type:"histogram",value:t,unit:r?.unit,attributes:r?.attributes})}flush(){let e=this._flushPromise,r=(async()=>{if(e)await e.catch(()=>{});await this._doFlush()})().finally(()=>{if(this._flushPromise===r)this._flushPromise=null});return this._flushPromise=r,r}drainWindow(){if(this._series.size===0)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){if(this._instance.isDisabled||this._instance.optedOut)return;let t=this._runBeforeSend(e);if(t===null)return;if(!t.name||typeof t.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof t.value!="number"||!Number.isFinite(t.value))return void this._logger.warn(`Dropping metric '${t.name}': value must be a finite number`);if(t.type==="count"&&t.value<0)return void this._logger.warn(`Dropping count '${t.name}': counters are monotonic, value must be >= 0`);let r,n;try{r=t.attributes?{...t.attributes}:void 0,n=Ol(t.type,t.name,t.unit,r)}catch(o){this._logger.warn(`Dropping metric '${t.name}': attributes could not be serialized`,o);return}let i=this._series.get(n);if(!i){if(!this._admitNewSeries())return;i={name:t.name,type:t.type,unit:t.unit,attributes:r,windowStartMs:Date.now()},this._series.set(n,i)}let s=this._typeByName.get(t.name);if(s===void 0)this._typeByName.set(t.name,t.type);else if(s!==t.type&&!this._typeCollisionWarned.has(t.name))this._typeCollisionWarned.add(t.name),this._logger.warn(`Metric name '${t.name}' is already used as a ${s}; recording it as a ${t.type} too will blend both series in charts. Use a distinct name.`);this._fold(i,t.value),this._armFlushTimer()}_admitNewSeries(){if(this._series.size<this._config.maxSeriesPerFlush)return!0;if(!this._seriesCapWarned)this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`);return!1}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{if(!e.hist)e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(Mn.length+1).fill(0)};let r=e.hist;r.count+=1,r.sum+=t,r.min=Math.min(r.min,t),r.max=Math.max(r.max,t),r.bucketCounts[eh(t,Mn)]+=1;break}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let r=et(t)?t:[t],n=e;for(let i of r)try{let s=i(n);if(!s)return this._logger.info("Metric was rejected in beforeSend function"),null;n=s}catch(s){return this._logger.error("Error in beforeSend function for metric:",s),null}return n}_armFlushTimer(){if(this._flushTimer)return;this._flushTimer=ue(()=>{this._flushTimer=void 0,this.flush().catch((e)=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs)}_clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}async _doFlush(){if(this._series.size===0)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,r=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t!==this._generation)return;switch(r.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",r.error);return}}_buildPayload(e){return Tl(this._buildMetrics(e),Fl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(e){let t=Cl(Date.now()),r=new Map;for(let n of e.values()){let i=Ol(n.type,n.name,n.unit,void 0),s=r.get(i);if(!s){if(s={name:n.name,...n.unit&&{unit:n.unit}},n.type==="count")s.sum={aggregationTemporality:th,isMonotonic:!0,dataPoints:[]};else if(n.type==="gauge")s.gauge={dataPoints:[]};else s.histogram={aggregationTemporality:th,dataPoints:[]};r.set(i,s)}let o=Nn(n.attributes??{}),a=Cl(n.windowStartMs);if(n.type==="count"){let l={attributes:o,startTimeUnixNano:a,timeUnixNano:t,asDouble:n.total??0};s.sum.dataPoints.push(l)}else if(n.type==="gauge"){let l={attributes:o,timeUnixNano:t,asDouble:n.last??0};s.gauge.dataPoints.push(l)}else if(n.hist){let l={attributes:o,startTimeUnixNano:a,timeUnixNano:t,count:n.hist.count,sum:n.hist.sum,min:n.hist.min,max:n.hist.max,bucketCounts:n.hist.bucketCounts,explicitBounds:Mn};s.histogram.dataPoints.push(l)}}return Array.from(r.values())}_mergeWindowBack(e){for(let[t,r]of e){let n=this._series.get(t);if(!n){if(this._admitNewSeries())this._series.set(t,r);continue}switch(n.windowStartMs=Math.min(n.windowStartMs,r.windowStartMs),n.type){case"count":n.total=(n.total??0)+(r.total??0);break;case"gauge":break;case"histogram":if(r.hist)if(n.hist){n.hist.count+=r.hist.count,n.hist.sum+=r.hist.sum,n.hist.min=Math.min(n.hist.min,r.hist.min),n.hist.max=Math.max(n.hist.max,r.hist.max);for(let i=0;i<n.hist.bucketCounts.length;i++)n.hist.bucketCounts[i]+=r.hist.bucketCounts[i]}else n.hist=r.hist;break}}}}class Al{constructor(){this.events={},this.events={}}on(e,t){if(!this.events[e])this.events[e]=[];return this.events[e].push(t),()=>{this.events[e]=this.events[e].filter((r)=>r!==t)}}emit(e,t){for(let r of this.events[e]||[])r(t);for(let r of this.events["*"]||[])r(e,t)}}var $e={};ub($e,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>Ps,DOMExceptionCoercer:()=>fh,EXCEPTION_STEP_INTERNAL_FIELDS:()=>Ln,ErrorCoercer:()=>hs,ErrorEventCoercer:()=>mh,ErrorPropertiesBuilder:()=>fs,EventCoercer:()=>gh,ExceptionStepsBuffer:()=>bh,ObjectCoercer:()=>_s,PrimitiveCoercer:()=>bs,PromiseRejectionEventCoercer:()=>yh,ReduceableCache:()=>_h,StringCoercer:()=>gs,chromeStackLineParser:()=>kl,createDefaultStackParser:()=>Nl,createStackParser:()=>ph,geckoStackLineParser:()=>Dl,getUtf8ByteLength:()=>Ph,nodeStackLineParser:()=>lh,opera10StackLineParser:()=>sh,opera11StackLineParser:()=>oh,resolveExceptionStepsConfig:()=>Ml,reverseAndStripFrames:()=>uh,stripReservedExceptionStepFields:()=>qC,winjsStackLineParser:()=>ih});var us,rh,ps;function nh(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);if(ps&&r.length===rh)return ps;return rh=r.length,ps=r.reduce((n,i)=>{if(!us)us={};let s=us[i];if(s)n[s[0]]=s[1];else{let o=e(i);for(let a=o.length-1;a>=0;a--){let d=o[a]?.filename,c=t[i];if(d&&c){n[d]=c,us[i]=[d,c];break}}}return n},{}),ps}var wC=4;class fs{constructor(e,t,r=[]){this.coercers=e,this.stackParser=t,this.modifiers=r}buildFromUnknown(e,t={}){let n=t&&t.mechanism||{handled:!0,type:"generic"},s=this.buildCoercingContext(n,t,0).apply(e),o=this.buildParsingContext(t),a=this.parseStacktrace(s,o);return{$exception_list:this.convertToExceptionList(a,n),$exception_level:"error"}}async modifyFrames(e){for(let t of e)if(t.stacktrace&&t.stacktrace.frames&&et(t.stacktrace.frames))t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames);return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let r;if(e.cause!=null)r=this.parseStacktrace(e.cause,t);let n;if(e.stack!=""&&e.stack!=null)n=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap);return{...e,cause:r,stack:n}}applyChunkIds(e,t){return e.map((r)=>{if(r.filename&&t)r.chunk_id=t[r.filename];return r})}applyCoercers(e,t){for(let r of this.coercers)if(r.match(e))return r.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let r of this.modifiers)t=await r(t);return t}convertToExceptionList(e,t){let r={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};if(e.stack)r.stacktrace={type:"raw",frames:e.stack};let n=[r];if(e.cause!=null)n.push(...this.convertToExceptionList(e.cause,{...t,handled:!0}));return n}buildParsingContext(e){return{chunkIdMap:nh(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,r=0){let n=(s,o)=>{if(!(o<=wC))return;{let a=this.buildCoercingContext(e,t,o);return this.applyCoercers(s,a)}};return{...t,syntheticException:r==0?t.syntheticException:void 0,mechanism:e,apply:(s)=>n(s,r),next:(s)=>n(s,r+1)}}}var oe="?";function tt(e,t,r,n,i){let s={platform:e,filename:t,function:r==="<anonymous>"?oe:r,in_app:!0};if(!Kt(n))s.lineno=n;if(!Kt(i))s.colno=i;return s}var ms=(e,t)=>{let r=e.indexOf("safari-extension")!==-1,n=e.indexOf("safari-web-extension")!==-1;return r||n?[e.indexOf("@")!==-1?e.split("@")[0]:oe,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var $C=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,IC=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,EC=/\((\S*)(?::(\d+))(?::(\d+))\)/,kl=(e,t)=>{let r=$C.exec(e);if(r){let[,i,s,o]=r;return tt(t,i,oe,+s,+o)}let n=IC.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=EC.exec(n[2]);if(a)n[2]=a[1],n[3]=a[2],n[4]=a[3]}let[s,o]=ms(n[1]||oe,n[2]);return tt(t,o,s,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var SC=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,xC=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Dl=(e,t)=>{let r=SC.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let o=xC.exec(r[3]);if(o)r[1]=r[1]||"eval",r[3]=o[1],r[4]=o[2],r[5]=""}let i=r[3],s=r[1]||oe;return[s,i]=ms(s,i),tt(t,i,s,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var jC=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,ih=(e,t)=>{let r=jC.exec(e);return r?tt(t,r[2],r[1]||oe,+r[3],r[4]?+r[4]:void 0):void 0};var RC=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,sh=(e,t)=>{let r=RC.exec(e);return r?tt(t,r[2],r[3]||oe,+r[1]):void 0},CC=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,oh=(e,t)=>{let r=CC.exec(e);return r?tt(t,r[5],r[3]||r[4]||oe,+r[1],+r[2]):void 0};var OC=/^\s*[-]{4,}$/,FC=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,TC=/^Promise\.(?:all|any)$/,AC=/^index \d+$/,kC="node:internal/promise",lh=(e,t)=>{let r=e.match(FC);if(r){let n,i,s,o,a;if(r[1]){s=r[1];let c=s.lastIndexOf(".");if(s[c-1]===".")c--;if(c>0){n=s.slice(0,c),i=s.slice(c+1);let p=n.indexOf(".Module");if(p>0)s=s.slice(p+1),n=n.slice(0,p)}o=void 0}if(i)o=n,a=i;if(i==="<anonymous>")a=void 0,s=void 0;if(s===void 0)a=a||oe,s=o?`${o}.${a}`:a;let l=r[2]?.startsWith("file://")?r[2].slice(7):r[2],d=r[5]==="native";if(l?.match(/\/[A-Z]:/))l=l.slice(1);if(!l&&r[5]&&!d)l=r[5];if(TC.test(s)&&AC.test(l||""))l=kC;return{filename:l?decodeURI(l):void 0,module:void 0,function:s,lineno:ah(r[3]),colno:ah(r[4]),in_app:DC(l||"",d),platform:t}}if(e.match(OC))return{filename:e,platform:t}};function DC(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function ah(e){return parseInt(e||"",10)||void 0}var dh=/\(error: (.*)\)/,ch=50;function uh(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,ch).map((r)=>({...r,filename:r.filename||NC(t).filename,function:r.function||oe}))}function NC(e){return e[e.length-1]||{}}function Nl(){return ph("web:javascript",kl,Dl)}function ph(e,...t){return(r,n=0)=>{let i=[],s=r.split(`
|
|
55
|
-
`);for(let o=n;o<s.length;o++){let a=s[o];if(a.length>1024)continue;let l=dh.test(a)?a.replace(dh,"$1"):a;if(!l.match(/\S*Error: /)){for(let d of t){let c=d(l,e);if(c){i.push(c);break}}if(i.length>=ch)break}}return uh(i)}}class fh{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let r=gt(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return Wt(e,"DOMException")}isDOMError(e){return Wt(e,"DOMError")}}class hs{match(e){return Fm(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let r=e.message;if(r.error&&typeof r.error.message=="string")return String(r.error.message);return String(r)}getStack(e){return e.stacktrace||e.stack||void 0}}class mh{constructor(){}match(e){return Tm(e)&&e.error!=null}coerce(e,t){let r=t.apply(e.error);if(!r)return{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0};return r}}var MC=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class gs{match(e){return typeof e=="string"}coerce(e,t){let[r,n]=this.getInfos(e);return{type:r??"Error",value:n??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",r=e,n=e.match(MC);if(n)t=n[1],r=n[2];return[t,r]}}var hh=["fatal","error","warning","log","info","debug"];function ys(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let n=r.length;n>0;n--){let i=r.slice(0,n).join(", ");if(!(i.length>t)){if(n===r.length)return i;return i.length<=t?i:`${i.slice(0,t)}...`}}return""}class _s{match(e){return typeof e=="object"&&e!==null}coerce(e,t){let r=this.getErrorPropertyFromObject(e);if(r)return t.apply(r);return{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return xr(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){let n=`'${e.name}' captured as exception`;if("message"in e&&typeof e.message=="string")n+=` with message: '${e.message}'`;return n}if("message"in e&&typeof e.message=="string")return e.message;let t=this.getObjectClassName(e),r=ys(e);return`${t&&t!=="Object"?`'${t}'`:"Object"} captured as exception with keys: ${r}`}isSeverityLevel(e){return gt(e)&&!Rm(e)&&hh.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let r=e[t];if(Zm(r))return r}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(t){return}}}class gh{match(e){return xr(e)}coerce(e,t){let r=e.constructor.name;return{type:r,value:`${r} captured as exception with keys: ${ys(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class bs{match(e){return ns(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class yh{match(e){return Wt(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!xr(e))return!1;try{let t=e.detail;return t!=null&&typeof t=="object"&&"reason"in t}catch{return!1}}coerce(e,t){let r=this.getUnhandledRejectionReason(e);if(ns(r))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(r)}`,stack:t.syntheticException?.stack,synthetic:!0};return t.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}class _h{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t===void 0)return;return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){while(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;if(e)this._cache.delete(e)}}}var Ln={MESSAGE:"$message",TIMESTAMP:"$timestamp"},LC=new Set([Ln.MESSAGE,Ln.TIMESTAMP]),Ps={enabled:!0,max_bytes:32768};function Ml(e){if(!e)return{...Ps};return{enabled:e.enabled??Ps.enabled,max_bytes:UC(e.max_bytes,Ps.max_bytes)}}function qC(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>{if(LC.has(i))return t.push(i),n;return n[i]=e[i],n},{}),droppedKeys:t}}class bh{constructor(e){this._entries=[],this._totalBytes=0,this._config=Ml(e)}setConfig(e){this._config=Ml(e),this._trimToMaxBytes()}add(e){let t=BC(e);if(!t)return;let r=Ph(t.json);if(r>this._config.max_bytes)return;this._entries.push({step:t.step,bytes:r}),this._totalBytes+=r,this._trimToMaxBytes()}getAttachable(){return this._entries.map((e)=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let e=this._entries.shift();if(e)this._totalBytes-=e.bytes}}}function UC(e,t){if(!An(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);if(r<0)return t;return r}function BC(e){let t;try{t=Sr(e)}catch{return}try{let r=JSON.parse(t);if(!Tn(r))return;let n=r,i=n[Ln.MESSAGE],s=n[Ln.TIMESTAMP];if(!gt(i)||i.trim().length===0)return;if(!gt(s)&&!An(s))return;return{step:n,json:t}}catch{return}}function Ph(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)if(t[n]==="%")r+=1,n+=2;else r+=1;return r}class Ot extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class Jt extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}var $h=(e,t)=>{for(let r of Object.keys(t))if(r.startsWith("$feature/")||r==="$active_feature_flags")e[r]=t[r]};async function vh(e){if(e instanceof Ot){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function GC(e){return typeof e=="object"&&(e instanceof Ot||Ih(e))}function Ih(e){return e instanceof Jt}function VC(e){if(e instanceof Ot)return e.status===502||e.status===504;if(!(e instanceof Jt))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}function Cr(e){return typeof e=="object"&&e instanceof Ot&&e.status===413}function qn(e){if(e instanceof Ot)return e.status===408||e.status===429||e.status>=500;return Ih(e)}function wh(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Ll="default";class vs{getErrorPropertiesBuilder(){if(!this._errorPropertiesBuilder)this._errorPropertiesBuilder=this.createErrorPropertiesBuilder();return this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new fs([new hs,new _s,new gs,new bs],Nl())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new vl,this._events=new Al,this._isInitialized=!1;let r=typeof e=="string"?e.trim():"",n=typeof t.host=="string"?t.host.trim():"",i=!r;if(this._logger=Lm("[PostHog]",this.logMsgIfDebug.bind(this)),i)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=r,this.host=Ym(n||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1000),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3000,retryCheck:qn},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3000,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||i,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!bl()||(t?.disableCompression??!1)}logMsgIfDebug(e){if(this.isDebug)e()}wrap(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Se.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Se.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Se.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let t=this.on("*",(r,n)=>this._logger.info(r,n));this.removeDebugCallback=()=>{t(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},r={...t,...this.getCommonEventProperties()};if($h(r,t),e.event==="$feature_flag_called"&&r.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled())r=On(r);return{distinct_id:e.distinct_id,event:e.event,properties:r}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,r){this.wrap(()=>{let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",n,r)})}async identifyStatelessImmediate(e,t,r){let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",n,r)}captureStateless(e,t,r,n){this.wrap(()=>{let i=this.buildPayload({distinct_id:e,event:t,properties:r});this.enqueue("capture",i,n)})}async captureStatelessImmediate(e,t,r,n){let i=this.buildPayload({distinct_id:e,event:t,properties:r});await this.sendImmediate("capture",i,n)}aliasStateless(e,t,r,n){this.wrap(()=>{let i=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});this.enqueue("alias",i,n)})}async aliasStatelessImmediate(e,t,r,n){let i=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",i,n)}groupIdentifyStateless(e,t,r,n,i,s){this.wrap(()=>{let o=this.buildPayload({distinct_id:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...s||{}}});this.enqueue("capture",o,n)})}async groupIdentifyStatelessImmediate(e,t,r,n,i,s){let o=this.buildPayload({distinct_id:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...s||{}}});await this.sendImmediate("capture",o,n)}async getRemoteConfig(){await this._initPromise;let e=this.host;if(e==="https://us.i.posthog.com")e="https://us-assets.i.posthog.com";else if(e==="https://eu.i.posthog.com")e="https://eu-assets.i.posthog.com";let t=`${e}/array/${this.apiKey}/config`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,r,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((n)=>n.json()).catch((n)=>{this._logger.error("Remote config could not be loaded",n),this._events.emit("error",n)})}async getFlags(e,t={},r={},n={},i={},s=!1){await this._initPromise;let o=s?"&config=true":"",a=`${this.host}/flags/?v=2${o}`,l={token:this.apiKey,distinct_id:e,groups:t,person_properties:r,group_properties:n,...i};if(r.$device_id)l.$device_id=r.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)l.evaluation_contexts=this.evaluationContexts;let d={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(l)};return this._logger.info("Flags URL",a),this.fetchWithRetry(a,d,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:VC},this.featureFlagsRequestTimeoutMs).then((c)=>c.json()).then((c)=>({success:!0,response:_l(c)})).catch((c)=>(this._events.emit("error",c),{success:!1,error:this.categorizeRequestError(c)}))}categorizeRequestError(e){if(e instanceof Ot)return{type:"api_error",statusCode:e.status};if(e instanceof Jt){let t=e.error;if(t instanceof Error&&(t.name==="AbortError"||t.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,r={},n={},i={},s){await this._initPromise;let o=await this.getFeatureFlagDetailStateless(e,t,r,n,i,s);if(o===void 0)return{response:void 0,requestId:void 0};let a=Cn(o.response);if(a===void 0)a=!1;return{response:a,requestId:o.requestId}}async getFeatureFlagDetailStateless(e,t,r={},n={},i={},s){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(t,r,n,i,s,[e]);if(o===void 0)return;return{response:o.flags[e],requestId:o.requestId,evaluatedAt:o.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,r={},n={},i={},s){await this._initPromise;let o=await this.getFeatureFlagPayloadsStateless(t,r,n,i,s,[e]);if(!o)return;let a=o[e];if(a===void 0)return null;return a}async getFeatureFlagPayloadsStateless(e,t={},r={},n={},i,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,r,n,i,s)).payloads}async getFeatureFlagsStateless(e,t={},r={},n={},i,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,r,n,i,s)}async getFeatureFlagsAndPayloadsStateless(e,t={},r={},n={},i,s){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(e,t,r,n,i,s);if(!o)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:o.featureFlags,payloads:o.featureFlagPayloads,requestId:o.requestId}}async getFeatureFlagDetailsStateless(e,t={},r={},n={},i,s){await this._initPromise;let o={geoip_disable:i??this.disableGeoip};if(s)o.flag_keys_to_evaluate=s;let a=await this.getFlags(e,t,r,n,o);if(!a.success)return;let l=a.response;if(l.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(l.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:l?.requestId,quotaLimited:l.quotaLimited};return l}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},n=(await this.fetchWithRetry(e,t).then((i)=>{if(i.status!==200||!i.json){let s=`Surveys API could not be loaded: ${i.status}`,o=Error(s);this._logger.error(o),this._events.emit("error",Error(s));return}return i.json()}).catch((i)=>{this._logger.error("Surveys API could not be loaded",i),this._events.emit("error",i)}))?.surveys;if(n)this._logger.info("Surveys fetched from API: ",JSON.stringify(n));return n??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(Se.Props);return this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Se.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Se.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return Ll}persistedQueueKeyForRoute(e){return Se.Queue}getActiveQueueRoutes(){return[Ll]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,r){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,r);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);let i=this.persistedQueueKeyForRoute(this.getQueueRouteKey(n)),s=this.getPersistedProperty(i)||[];if(s.length>=this.maxQueueSize)s.shift(),this._logger.warn("Queue is full, the oldest event is dropped.");if(s.push({message:n}),this.setPersistedProperty(i,s),this._events.emit(e,n),s.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=ue(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(e,t,r){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,r);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);try{await this.sendBatch([n],void 0,this.getQueueRouteKey(n))}catch(i){this._events.emit("error",i)}}normalizeMessage(e){let{type:t,library:r,library_version:n,...i}=e,s=wh(i.properties)?i.properties:void 0;if(r!==void 0&&s?.$lib===void 0)s={...s||{},$lib:r};if(n!==void 0&&s?.$lib_version===void 0)s={...s||{},$lib_version:n};if(s)i.properties=s;return i.uuid=ls(i.uuid,xe),i}prepareMessage(e,t){let r={...e,timestamp:t?.timestamp?t?.timestamp:xl(),uuid:ls(t?.uuid,xe)};if(t?.disableGeoip??this.disableGeoip){if(!wh(r.properties))r.properties={};r.properties.$geoip_disable=!0}if(r.distinctId)r.distinct_id=r.distinctId,delete r.distinctId;return r}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){if(this.pendingFlushPromise)return;this.flush().catch(async(e)=>{await vh(e)})}async waitForPendingPromises(e,t=[]){let r=t.filter((i)=>!!i),n=0;while(!0){let i=this.promiseQueue.getPromises([...r,...this.flushPromises],e);if(i.length===0)return;if(n>0)this._logger.debug(`flush() re-checking ${i.length} pending promise(s) before flushing`);await Promise.all(i.map((s)=>s.catch(()=>{}))),n++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,r=this.promiseQueue.maxId,n=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(r,[t,n])}).then(()=>jl([t])).then(()=>{if(this.pendingFlushPromise===n)this.pendingFlushPromise=null;return this._flush()});return this.pendingFlushPromise=n,this.flushPromise=n,this.flushPromises.add(n),this.addPendingPromise(n),jl([n]).then(()=>{if(this.flushPromises.delete(n),this.pendingFlushPromise===n)this.pendingFlushPromise=null;if(this.flushPromise===n)this.flushPromise=null}),n}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};if(e&&e!=="")t["User-Agent"]=e;return t}async sendBatch(e,t,r=Ll){let n={api_key:this.apiKey,batch:e,sent_at:xl()};if(this.historicalMigration)n.historical_migration=!0;let i=Sr(n),s=`${this.host}/batch/`,o=this.disableCompression?null:await zt(i,this.isDebug),a={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...o!==null&&{"Content-Encoding":"gzip"}},body:o||i};await(await this.fetchWithRetry(s,a,t)).body?.cancel()?.catch(()=>{})}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getActiveQueueRoutes();if(!e.some((n)=>this.getRouteQueue(n).length>0))return;let t=[],r;for(let n of e)try{await this._flushRoute(n,t)}catch(i){if(r===void 0)r=i}if(r!==void 0)throw r;this._events.emit("flush",t)}async _flushRoute(e,t){let r=this.persistedQueueKeyForRoute(e),n=this.getPersistedProperty(r)||[];if(!n.length)return;let i=n.length,s=0;while(n.length>0&&s<i){let o=n.slice(0,this.maxBatchSize),a=o.map((c)=>c.message===void 0?c.message:this.normalizeMessage(c.message)),l=async()=>{let p=(this.getPersistedProperty(r)||[]).slice(o.length);this.setPersistedProperty(r,p),n=p,this._dequeuedMessagesCount+=o.length,await this.flushStorage()},d={retryCheck:(c)=>{if(Cr(c))return!1;return qn(c)}};try{await this.sendBatch(a,d,e)}catch(c){if(Cr(c)&&a.length>1){this.maxBatchSize=Math.max(1,Math.floor(a.length/2)),this._logger.warn(`Received 413 when sending batch of size ${a.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(c instanceof Jt))await l();throw this._events.emit("error",c),c}await l(),t.push(...a),s+=a.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await zt(t,this.isDebug),i={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(r,i,{retryCheck:(s)=>{if(Cr(s))return!1;return qn(s)}}),{kind:"ok"}}catch(s){if(Cr(s))return{kind:"too-large"};if(s instanceof Jt)return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await zt(t,this.isDebug),i={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(r,i,{retryCheck:(s)=>{if(Cr(s))return!1;return qn(s)}}),{kind:"ok"}}catch(s){if(Cr(s))return{kind:"too-large"};if(qn(s))return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async fetchWithRetry(e,t,r,n){let i=t.body?t.body:"",s=-1;try{s=i instanceof Blob?i.size:Buffer.byteLength(i,Qm)}catch{if(i instanceof Blob)s=i.size;else s=new TextEncoder().encode(i).length}return await Xm(async()=>{let o=new AbortController,a=n??this.requestTimeout,l=ue(()=>o.abort(),a),d=null;try{d=await this.fetch(e,{signal:o.signal,...t})}catch(p){throw new Jt(p)}finally{clearTimeout(l)}if(t.mode!=="no-cors"&&(d.status<200||d.status>=400))throw new Ot(d,s);return d},{...this._retryOptions,...r})}async _shutdown(e=30000){await this._initPromise;let t=!1;if(this.clearFlushTimer(),this.disabled)return;let r=async()=>{try{await this.promiseQueue.join();while(!0){if(!this.getActiveQueueRoutes().some((o)=>this.getRouteQueue(o).length>0))break;let s=this._dequeuedMessagesCount;if(await this.flush(),t)break;if(this._dequeuedMessagesCount===s){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(i){if(!GC(i))throw i;await vh(i)}},n;try{return await Promise.race([new Promise((i,s)=>{n=ue(()=>{this._logger.error("Timed out while shutting down PostHog"),t=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),r()])}finally{clearTimeout(n)}}async shutdown(e=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var xh=require("fs"),jh=require("readline"),ws=new $e.ReduceableCache(25),Rh=new $e.ReduceableCache(20),ql=7,JC=1000,QC=1e4;async function Ch(e){let t={};for(let i=e.length-1;i>=0;i--){let s=e[i],o=s?.filename;if(!s||typeof o!="string"||typeof s.lineno!="number"||eO(o)||tO(s))continue;if(!t[o])t[o]=[];t[o].push(s.lineno)}let r=Object.keys(t);if(r.length==0)return e;let n=[];for(let i of r){if(Rh.get(i))continue;let s=t[i];if(!s)continue;s.sort((l,d)=>l-d);let o=nO(s);if(o.every((l)=>rO(i,l)))continue;let a=iO(ws,i,{});n.push(YC(i,o,a))}if(await Promise.all(n).catch(()=>{}),e&&e.length>0)XC(e,ws);return ws.reduce(),e}function YC(e,t,r){return new Promise((n)=>{let i=xh.createReadStream(e),s=jh.createInterface({input:i});function o(){i.destroy(),n()}let a=0,l=0,d=t[l];if(d===void 0)return void o();let c=d[0],p=d[1];function h(){Rh.set(e,1),s.close(),s.removeAllListeners(),o()}i.on("error",h),s.on("error",h),s.on("close",o),s.on("line",(u)=>{if(a++,a<c)return;if(r[a]=sO(u,0),a>=p){if(l===t.length-1){s.close(),s.removeAllListeners();return}l++;let f=t[l];if(f===void 0){s.close(),s.removeAllListeners();return}c=f[0],p=f[1]}})})}function XC(e,t){for(let r of e)if(r.filename&&r.context_line===void 0&&typeof r.lineno=="number"){let n=t.get(r.filename);if(n===void 0)continue;ZC(r.lineno,r,n)}}function ZC(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=Oh(e);i<e;i++){let s=r[i];if(s===void 0)return void Eh(t);t.pre_context.push(s)}if(r[e]===void 0)return void Eh(t);t.context_line=r[e];let n=Fh(e);t.post_context=[];for(let i=e+1;i<=n;i++){let s=r[i];if(s===void 0)break;t.post_context.push(s)}}function Eh(e){delete e.pre_context,delete e.context_line,delete e.post_context}function eO(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function tO(e){if(e.lineno!==void 0&&e.lineno>QC)return!0;if(e.colno!==void 0&&e.colno>JC)return!0;return!1}function rO(e,t){let r=ws.get(e);if(r===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(r[n]===void 0)return!1;return!0}function nO(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=Sh(r),i=[];while(!0){if(t===e.length-1){i.push(n);break}let s=e[t+1];if(typeof s!="number")break;if(s<=n[1])n[1]=s+ql;else i.push(n),n=Sh(s);t++}return i}function Sh(e){return[Oh(e),Fh(e)]}function Oh(e){return Math.max(1,e-ql)}function Fh(e){return e+ql}function iO(e,t,r){let n=e.get(t);if(n===void 0)return e.set(t,r),r;return n}function sO(e,t){let r=e,n=r.length;if(n<=150)return r;if(t>n)t=n;let i=Math.max(t-60,0);if(i<5)i=0;let s=Math.min(i+140,n);if(s>n-5)s=n;if(s===n)i=Math.max(s-140,0);if(r=r.slice(i,s),i>0)r=`...${r}`;if(s<n)r+="...";return r}var Or=require("path");function Th(e=process.cwd()){let t=Or.sep==="\\",r=(i)=>t?i.replace(/\\/g,"/"):i,n=r(e);return async(i)=>{for(let s of i)if(!(!s.filename||s.filename.startsWith("node:")||s.filename.startsWith("data:"))){if(Or.isAbsolute(s.filename))s.filename=r(Or.relative(n,r(s.filename)))}return i}}var Ah="5.46.1";var yt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};class Qt{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),!t)return;if(!t.enabled)return!1;return t.variant??!0}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let r=this._flags[t];if(r)e[t]=r}return this._cloneWith(e)}only(e){let t={},r=[];for(let n of e){let i=this._flags[n];if(i)t[n]=i;else r.push(n)}if(r.length>0)this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${r.join(", ")}`);return this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[r,n]of Object.entries(this._flags)){let i=n.enabled===!1?!1:n.variant??!0;if(e[`$feature/${r}`]=i,n.enabled)t.push(r)}if(t.length>0)t.sort(),e.$active_feature_flags=t;return e}_cloneWith(e){return new Qt({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),this._distinctId==="")return;if(this._isSlice&&!(e in this._flags))return;let t=this._flags[e],r=t===void 0?void 0:t.enabled===!1?!1:t.variant??!0,n={$feature_flag:e,$feature_flag_response:r,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:r,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};if(t?.hasExperiment!==void 0)n.$feature_flag_has_experiment=t.hasExperiment;if(t?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0)n.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt;let i=[];if(this._errorsWhileComputing)i.push(yt.ERRORS_WHILE_COMPUTING);if(this._quotaLimited)i.push(yt.QUOTA_LIMITED);if(t===void 0)i.push(yt.FLAG_MISSING);if(i.length>0)n.$feature_flag_error=i.join(",");this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:r,groups:this._groups,disableGeoip:this._disableGeoip,properties:n})}}async function kh(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map((i)=>i.toString(16).padStart(2,"0")).join("")}var oO=60000,aO=1152921504606847000,lO=["is_not","is_set"];class Fr extends Error{constructor(e){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,Fr.prototype)}}function Lh(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class L extends Error{constructor(e){super(e);Lh(this,L)}}class rt extends Error{constructor(e){super(e);Lh(this,rt)}}class Ul{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:r,timeout:n,host:i,customHeaders:s,...o}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=n,this.projectApiKey=r,this.host=i,this.poller=void 0,this.fetch=o.fetch||fetch,this.onError=o.onError,this.customHeaders=s,this.onLoad=o.onLoad,this.onMinimalFlagCalledEvents=o.onMinimalFlagCalledEvents,this.cacheProvider=o.cacheProvider,this.strictLocalEvaluation=o.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){if(this.debugMode)e()}createEvaluationContext(e,t={},r={},n={},i={}){return{distinctId:e,groups:t,personProperties:r,groupProperties:n,evaluationCache:i}}async getFeatureFlag(e,t,r={},n={},i={}){await this.loadFeatureFlags();let s,o;if(!this.loadedSuccessfullyOnce)return s;if(o=this.featureFlagsByKey[e],o!==void 0){let a=this.createEvaluationContext(t,r,n,i);try{s=(await this.computeFlagAndPayloadLocally(o,a)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${s}`))}catch(l){if(l instanceof rt||l instanceof L)this.logMsgIfDebug(()=>console.debug(`${l.name} when computing flag locally: ${e}: ${l.message}`));else if(l instanceof Error)this.onError?.(Error(`Error computing flag locally: ${e}: ${l}`))}}return s}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let r={},n={},i=this.featureFlags.length==0,s=t?t.map((a)=>this.featureFlagsByKey[a]).filter(Boolean):this.featureFlags,o={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(s.map(async(a)=>{try{let{value:l,payload:d}=await this.computeFlagAndPayloadLocally(a,o);if(r[a.key]=l,d)n[a.key]=d}catch(l){if(l instanceof rt||l instanceof L)this.logMsgIfDebug(()=>console.debug(`${l.name} when computing flag locally: ${a.key}: ${l.message}`));else if(l instanceof Error)this.onError?.(Error(`Error computing flag locally: ${a.key}: ${l}`));i=!0}})),{response:r,payloads:n,fallbackToFlags:i}}async computeFlagAndPayloadLocally(e,t,r={}){let{matchValue:n,skipLoadCheck:i=!1}=r;if(!i)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=n!==void 0?n:await this.computeFlagValueLocally(e,t);let o=this.getFeatureFlagPayload(e.key,s);return{value:s,payload:o}}async computeFlagValueLocally(e,t){let{distinctId:r,groups:n,personProperties:i,groupProperties:s}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new L("Flag has experience continuity enabled");let a=(e.filters||{}).aggregation_group_type_index;if(a!=null){let l=this.groupTypeMapping[String(a)];if(!l)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${a} for feature flag ${e.key}`)),new L("Flag has unknown group type index");if(!(l in n))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;if(e.bucketing_identifier==="device_id"&&(i?.$device_id===void 0||i?.$device_id===null||i?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let d=s[l];return await this.matchFeatureFlagProperties(e,n[l],d,t)}{let l=this.getBucketingValueForFlag(e,r,i);if(l===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new L(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,l,i,t)}}getBucketingValueForFlag(e,t,r){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier==="device_id"){let n=r?.$device_id;if(n==null||n==="")return;return n}return t}getFeatureFlagPayload(e,t){let r=null;if(t!==!1&&t!=null){if(typeof t=="boolean")r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null;else if(typeof t=="string")r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null;if(r!=null){if(typeof r=="object")return r;if(typeof r=="string")try{return JSON.parse(r)}catch{}return r}}return null}async evaluateFlagDependency(e,t,r){let{evaluationCache:n}=r,i=e.key;if(!this.featureFlagsByKey)throw new L("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new L(`Flag dependency property for '${i}' is missing required 'dependency_chain' field`);let s=e.dependency_chain;if(!Array.isArray(s))throw new L(`Flag dependency property for '${i}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new L(`Circular dependency detected for flag '${i}' (empty dependency chain)`);for(let a of s){if(!(a in n)){let d=this.featureFlagsByKey[a];if(d)if(d.active)try{let c=await this.computeFlagValueLocally(d,r);n[a]=c}catch(c){throw new L(`Error evaluating flag dependency '${a}' for flag '${i}': ${c}`)}else n[a]=!1;else throw new L(`Missing flag dependency '${a}' for flag '${i}'`)}if(n[a]==null)throw new L(`Dependency '${a}' could not be evaluated`)}let o=n[i];return this.flagEvaluatesToExpectedValue(e.value,o)}flagEvaluatesToExpectedValue(e,t){if(typeof e=="boolean")return e===t||typeof t=="string"&&t!==""&&e===!0;if(typeof e=="string")return t===e;return!1}async matchFeatureFlagProperties(e,t,r,n){let i=e.filters||{},s=i.groups||[],o=i.aggregation_group_type_index,a=i.early_exit??!1,{groups:l,groupProperties:d}=n,c=!1,p;for(let h of s)try{let u=h.aggregation_group_type_index!==void 0?h.aggregation_group_type_index:o,f=r,m=t;if(u!==o){if(u!=null){let y=this.groupTypeMapping[String(u)];if(!y||!(y in l)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${u} not available`));continue}if(!(y in d)){c=!0;continue}f=d[y],m=l[y]}}let g=await this.isConditionMatch(e,m,h,f,n);if(g==="match"){let y=h.variant,b=i.multivariate?.variants||[];p=y&&b.some((v)=>v.key===y)?y:await this.getMatchingVariant(e,m)||!0;break}if(a&&g==="out_of_rollout_bound")return!1}catch(u){if(u instanceof rt)throw u;if(u instanceof L)c=!0;else throw u}if(p!==void 0)return p;if(c)throw new L("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,r,n,i){let s=r.rollout_percentage,o=(a)=>{this.logMsgIfDebug(()=>console.warn(a))};if((r.properties||[]).length>0){for(let a of r.properties){let l=a.type,d=!1;if(l==="cohort"){let c=await Uh(a,n,this.cohorts,this.debugMode,(p)=>this.evaluateFlagDependency(p,n,i));d=a.operator==="not_in"?!c:c}else d=l==="flag"?await this.evaluateFlagDependency(a,n,i):qh(a,n,o);if(!d)return"no_match"}if(s==null)return"match"}if(s!=null&&await Dh(e.key,t)>s/100)return"out_of_rollout_bound";return"match"}async getMatchingVariant(e,t){let r=await Dh(e.key,t,"variant"),n=this.variantLookupTable(e).find((i)=>r>=i.valueMin&&r<i.valueMax);if(n)return n.key}variantLookupTable(e){let t=[],r=0,n=0;return((e.filters||{}).multivariate?.variants||[]).forEach((o)=>{n=r+o.rollout_percentage/100,t.push({valueMin:r,valueMax:n,key:o.key}),r=n}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((t,r)=>(t[r.key]=r,t),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.(e.minimalFlagCalledEvents===!0)}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter((r)=>r.ensure_experience_continuity);if(t.length>0)console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map((r)=>r.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(t){return this.onError?.(Error(`Failed to load from cache: ${t}`)),!1}}async loadFeatureFlags(e=!1){if(this.loadedSuccessfullyOnce&&!e)return;if(!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((t)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${t}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(oO,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(r){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${r}`))}if(!e){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Fr(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new Fr(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Fr(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let r=await t.json()??{};if(!("flags"in r))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(r)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let n={flags:r.flags??[],groupTypeMapping:r.group_type_mapping||{},cohorts:r.cohorts||{},minimalFlagCalledEvents:r.minimal_flag_called_events===!0};if(this.updateFlagState(n),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(n)}catch(i){this.onError?.(Error(`Failed to store in cache: ${i}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(n.flags);break}default:return}}catch(e){if(e instanceof Fr)this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let r={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(t)r["If-None-Match"]=t;return{method:e,headers:r}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),r=null;if(this.timeout&&typeof this.timeout=="number"){let n=new AbortController;r=ue(()=>{n.abort()},this.timeout),t.signal=n.signal}try{let n=this.fetch;return n(e,t)}finally{clearTimeout(r)}}async stopPoller(e=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();if(t instanceof Promise)await Promise.race([t,new Promise((r,n)=>setTimeout(()=>n(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(t){this.onError?.(Error(`Error during cache shutdown: ${t}`))}}}async function Dh(e,t,r=""){let n=await kh(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/aO}function qh(e,t,r){let{key:n,value:i}=e,s=e.operator||"exact";if(n in t){if(s==="is_not_set")return!1}else{if(s==="is_not_set")return!0;throw new L(`Property ${n} not found in propertyValues`)}let o=t[n];if(o==null&&!lO.includes(s)){if(r)r(`Property ${n} cannot have a value of null/undefined with the ${s} operator`);return!1}function a(d,c){if(Array.isArray(d))return d.map((p)=>String(p).toLowerCase()).includes(String(c).toLowerCase());return String(d).toLowerCase()===String(c).toLowerCase()}function l(d,c,p){if(p==="gt")return d>c;if(p==="gte")return d>=c;if(p==="lt")return d<c;if(p==="lte")return d<=c;throw Error(`Invalid operator: ${p}`)}switch(s){case"exact":return a(i,o);case"is_not":return!a(i,o);case"is_set":return n in t;case"icontains":return String(o).toLowerCase().includes(String(i).toLowerCase());case"not_icontains":return!String(o).toLowerCase().includes(String(i).toLowerCase());case"regex":return Nh(String(i))&&String(o).match(String(i))!==null;case"not_regex":return Nh(String(i))&&String(o).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let d=typeof i=="number"?i:parseFloat(String(i)),c;if(c=typeof o=="number"?o:o!=null?parseFloat(String(o)):NaN,Number.isFinite(d)&&Number.isFinite(c))return l(c,d,s);return l(String(o),String(i),s)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new L("Date operations cannot be performed on boolean values");let d=fO(String(i));if(d==null)d=Mh(i);if(d==null)throw new L(`Invalid date: ${i}`);let c=Mh(o);if(["is_date_before"].includes(s))return c<d;return c>d}case"semver_eq":return Ae(ae(String(o)),ae(String(i)))===0;case"semver_neq":return Ae(ae(String(o)),ae(String(i)))!==0;case"semver_gt":return Ae(ae(String(o)),ae(String(i)))>0;case"semver_gte":return Ae(ae(String(o)),ae(String(i)))>=0;case"semver_lt":return Ae(ae(String(o)),ae(String(i)))<0;case"semver_lte":return Ae(ae(String(o)),ae(String(i)))<=0;case"semver_tilde":{let d=ae(String(o)),{lower:c,upper:p}=cO(String(i));return Ae(d,c)>=0&&Ae(d,p)<0}case"semver_caret":{let d=ae(String(o)),{lower:c,upper:p}=uO(String(i));return Ae(d,c)>=0&&Ae(d,p)<0}case"semver_wildcard":{let d=ae(String(o)),{lower:c,upper:p}=pO(String(i));return Ae(d,c)>=0&&Ae(d,p)<0}default:throw new L(`Unknown operator: ${s}`)}}function dO(e,t){if(!(e in t))throw new rt(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function Uh(e,t,r,n=!1,i){let s=String(e.value);dO(s,r);let o=r[s];return Bh(o,t,r,n,i)}async function Bh(e,t,r,n=!1,i){if(!e)return!0;let{type:s,values:o}=e;if(!o||o.length===0)return!0;let a=!1;if("values"in o[0]){for(let l of o)try{let d=await Bh(l,t,r,n,i);if(s==="AND"){if(!d)return!1}else if(d)return!0}catch(d){if(d instanceof rt)throw d;if(d instanceof L){if(n)console.debug(`Failed to compute property ${l} locally: ${d}`);a=!0}else throw d}if(a)throw new L("Can't match cohort without a given cohort property value");return s==="AND"}for(let l of o)try{let d;if(l.type==="cohort")d=await Uh(l,t,r,n,i);else if(l.type==="flag"){if(!i)throw new L(`Flag dependency '${l.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);d=await i(l)}else d=qh(l,t);let c=l.negation||!1;if(s==="AND"){if(!d&&!c)return!1;if(d&&c)return!1}else{if(d&&!c)return!0;if(!d&&c)return!0}}catch(d){if(d instanceof rt)throw d;if(d instanceof L){if(n)console.debug(`Failed to compute property ${l} locally: ${d}`);a=!0}else throw d}if(a)throw new L("can't match cohort without a given cohort property value");return s==="AND"}function Nh(e){try{return new RegExp(e),!0}catch(t){return!1}}function Gh(e,t){if(!/^\d+$/.test(e))throw new L(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new L(`Invalid semver: ${t}`);return parseInt(e,10)}function ae(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new L(`Invalid semver: ${e}`);let n=r.split("."),i=(l)=>{if(l===void 0||l==="")return 0;return Gh(l,e)},s=i(n[0]),o=i(n[1]),a=i(n[2]);return[s,o,a]}function Ae(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function cO(e){let t=ae(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function uO(e){let t=ae(e),[r,n,i]=t,s=[r,n,i],o;return o=r>0?[r+1,0,0]:n>0?[0,n+1,0]:[0,0,i+1],{lower:s,upper:o}}function pO(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new L(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=(l)=>{try{return Gh(l,e)}catch{throw new L(`Invalid wildcard semver: ${e}`)}},s=i(n[0]),o,a;if(n.length===1)o=[s,0,0],a=[s+1,0,0];else{let l=i(n[1]);o=[s,l,0],a=[s,l+1,0]}return{lower:o,upper:a}}function Mh(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new L(`${e} is in an invalid date format`)}throw new L(`The date provided ${e} must be a string, number, or date object`)}function fO(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r)return null;{if(!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let s=r.groups.interval;if(s=="h")n.setUTCHours(n.getUTCHours()-i);else if(s=="d")n.setUTCDate(n.getUTCDate()-i);else if(s=="w")n.setUTCDate(n.getUTCDate()-7*i);else if(s=="m")n.setUTCMonth(n.getUTCMonth()-i);else{if(s!="y")return null;n.setUTCFullYear(n.getUTCFullYear()-i)}return n}}function mO(e,t){let r=!1;return Object.assign((n)=>{let s=global.process.listeners("uncaughtException").filter((o)=>o.name!=="domainUncaughtExceptionClear"&&o._posthogErrorHandler!==!0).length===0;if(e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&s)r=!0,t(n)},{_posthogErrorHandler:!0})}function Vh(e,t){globalThis.process?.on("uncaughtException",mO(e,t))}function zh(e){globalThis.process?.on("unhandledRejection",(t)=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var hO=2000;class nt{constructor(e,t,r){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=r,this._rateLimiter=new Pl({...km(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return Tn(e)&&"__posthog_previously_captured_error"in e&&e.__posthog_previously_captured_error===!0}static async buildEventMessage(e,t,r,n,i){let s={...i},o=e.buildFromUnknown(t,r);return o.$exception_list=await e.modifyFrames(o.$exception_list),{event:"$exception",distinctId:n,properties:{...o,...s},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())Vh(this.onException.bind(this),this.onFatalError.bind(this)),zh(this.onException.bind(this))}onException(e,t){this.client.addPendingPromise((async()=>{if(!nt.isPreviouslyCapturedError(e)){let r=await nt.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),i=r.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(i))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:i});return this.client._capturePreparedEvent(r,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(hO),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class Bl{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t!==null?t:void 0}constructor(){this._memoryStorage={}}}function gO(e){return e==="v0"||e==="v1"}function Kh(){let e=typeof process<"u"?process.env?.POSTHOG_CAPTURE_MODE:void 0;return gO(e)?e:"v0"}var Un="analytics",Bn="ai";function Wh(e){return typeof e.event=="string"&&e.event.startsWith("$ai_")}class Tr extends Error{constructor({requestId:e,drops:t,retryExhausted:r,cause:n}){super(Tr.buildMessage(e,t,r,n)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=r,this.cause=n}static buildMessage(e,t,r,n){let i=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${r.length} undelivered`;if(n instanceof Error)i+=` (${n.message})`;return i}}function Gl(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function yO(e){return typeof e=="string"?e:void 0}var _O=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:Gl},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:Gl},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:Gl},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:yO}],bO=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function PO(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function vO(e){if(typeof e=="string"){let r=new Date(e);return Number.isNaN(r.getTime())?new Date().toISOString():e}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function Hh(e,t,r){if(r!==void 0&&!(t in e))e[t]=r}function wO(e){let r={...PO(e.properties)?e.properties:{}},n={};for(let{property:s,optionKey:o,coerce:a}of _O)if(s in r){let l=a(r[s]);if(l!==void 0)n[o]=l;delete r[s]}let i={};for(let{property:s,field:o}of bO)if(s in r){let a=r[s];if(typeof a=="string")i[o]=a;delete r[s]}return delete r.$lib,delete r.$lib_version,Hh(r,"$set",e.$set),Hh(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:vO(e.timestamp),...i,options:n,properties:r}}function Jh(e,{createdAt:t,historicalMigration:r}){let n={created_at:t,batch:e.map(wO)};if(r)n.historical_migration=!0;return n}var $O="/i/v1/analytics/events",IO=30000,EO=new Set([408,500,502,503,504]);class Vl{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??IO,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??((r)=>new Promise((n)=>ue(n,r))),this.generateRequestId=t.generateRequestId??xe,this.compress=t.compress??zt}async sendV1Batch(e){if(e.length===0)return;let t=this.generateRequestId(),r=new Date(this.now()).toISOString(),{batch:n}=Jh(e,{createdAt:r,historicalMigration:this.config.historicalMigration}),i=`${this.config.host}${$O}`,s=[],o=n,a=Math.max(1,this.config.maxAttempts);for(let l=1;l<=a;l++){let d=l===a,c=Sr({created_at:r,...this.config.historicalMigration?{historical_migration:!0}:{},batch:o}),p;try{p=await this.sendOnce(i,c,l,t)}catch(g){if(d)return this.surfaceBatchFailure(t,s,o,g);await this.sleep(this.backoffDelay(l));continue}let{status:h}=p;if(h<200||h>=300){if(!d&&EO.has(h)){let y=this.parseRetryAfter(p);await this.cancelBody(p),await this.sleep(this.backoffDelay(l,y));continue}let g=await this.buildHttpError(p,h);return this.surfaceBatchFailure(t,s,o,g)}let u;try{u=await this.parseResponse(p)}catch{return this.surfaceBatchFailure(t,s,o,Error(`Capture V1 returned an unparseable ${h} response body`))}let f=this.classify(o,u,s);if(f.length===0)return this.surfacePartialDrops(t,s);if(d)return void this.onError(new Tr({requestId:t,drops:s,retryExhausted:f.map((g)=>g.uuid)}));o=f;let m=this.parseRetryAfter(p);await this.sleep(this.backoffDelay(l,m))}}async sendOnce(e,t,r,n){let i=this.buildHeaders(r,n),s=t;if(this.config.compressionEnabled){let l=await this.compress(t,this.config.isDebug);if(l!==null)s=l,i["Content-Encoding"]="gzip"}let o=new AbortController,a=ue(()=>o.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:i,body:s,signal:o.signal})}finally{clearTimeout(a)}}buildHeaders(e,t){let r=`${this.config.libraryId}/${this.config.libraryVersion}`,n={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":r,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};if(this.config.userAgent)n["User-Agent"]=this.config.userAgent;return n}classify(e,t,r){let n=t.results??{},i=[];for(let s of e){let o=n[s.uuid];if(o){if(o.result==="drop")r.push({uuid:s.uuid,details:o.details??void 0});else if(o.result==="retry")i.push(s)}}return i}backoffDelay(e,t){let r=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);if(t===void 0)return r;return Math.max(r,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let r=t.trim();if(/^\d+$/.test(r)){let s=parseInt(r,10);return Number.isFinite(s)&&s>0?1000*s:void 0}let n=Date.parse(r);if(Number.isNaN(n))return;let i=n-this.now();return i>0?i:void 0}async parseResponse(e){let t=await e.text(),r=JSON.parse(t);if(typeof r!="object"||r===null||Array.isArray(r))throw Error("unexpected response shape");let n=r.results;if(n!==void 0&&(typeof n!="object"||n===null||Array.isArray(n)))throw Error("unexpected results shape");return{results:n??{}}}async buildHttpError(e,t){let r="";try{r=(await e.text()).slice(0,512)}catch{}let n=r?`: ${r}`:"";return Error(`Capture V1 request failed with HTTP ${t}${n}`)}surfaceBatchFailure(e,t,r,n){this.onError(new Tr({requestId:e,drops:t,retryExhausted:r.map((i)=>i.uuid),cause:n}))}surfacePartialDrops(e,t){if(t.length>0)this.onError(new Tr({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}var SO=100,Qh=30000,xO=50000,jO=50,RO=500,CO="https://us.i.posthog.com",Yh=new Set;function $s(e,t){if(Yh.has(e))return;Yh.add(e),console.warn(`[PostHog] ${t}`)}function OO(e){return typeof e=="string"?e.trim():""}function FO(e){return(typeof e=="string"?e.trim():"")||void 0}function TO(e){return(typeof e=="string"?e.trim():"")||CO}function AO(e){return(Array.isArray(e)?e:[e]).filter((r)=>typeof r=="string"&&r.trim().length>0)}function kO(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter((n)=>e[n]!==!1).sort();if(r.length>0)t.$active_feature_flags=r;return t}class zl extends vs{constructor(e,t={}){let r=OO(e),n={...t,maxQueueSize:t.maxQueueSize??1e4,flushInterval:t.flushInterval??5000,host:TO(t.host),personalApiKey:FO(t.secretKey??t.personalApiKey)};if(super(r,n),this._memoryStorage=new Bl,this._minimalFlagCalledEvents=!1,this.options=n,this.captureMode=Kh(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof n.featureFlagsPollingInterval=="number"?Math.max(n.featureFlagsPollingInterval,SO):Qh,typeof n.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(n.waitUntilDebounceMs,0);if(typeof n.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(n.waitUntilMaxWaitMs,0);if(!this.disabled&&n.personalApiKey){if(n.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(n.enableLocalEvaluation!==!1)this.featureFlagsPoller=new Ul({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:n.personalApiKey,projectApiKey:r,timeout:n.requestTimeout??1e4,host:this.host,fetch:n.fetch,onError:(s)=>{this._events.emit("error",s)},onLoad:(s)=>{this._events.emit("localEvaluationFlagsLoaded",s)},onMinimalFlagCalledEvents:(s)=>{this._minimalFlagCalledEvents=s},customHeaders:this.getCustomHeaders(),cacheProvider:n.flagDefinitionCacheProvider,strictLocalEvaluation:n.strictLocalEvaluation})}this.errorTracking=new nt(this,n,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=n.maxCacheSize||xO}enqueue(e,t,r){super.enqueue(e,t,r),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let s,o=new Promise((a)=>{s=a});try{e(o)}catch{return}this._waitUntilCycle={resolve:s,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,r=this.options.waitUntilMaxWaitMs??RO,n=t>=r;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(n)return void this.resolveWaitUntilFlush();let i=this.options.waitUntilDebounceMs??jO;this._waitUntilCycle.timer=ue(()=>{this.resolveWaitUntilFlush()},i)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;if(e)clearTimeout(e.timer),this._waitUntilCycle=void 0;return e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){return this.captureMode==="v1"&&Wh(e)?Bn:Un}persistedQueueKeyForRoute(e){return e===Bn?Se.AiQueue:Se.Queue}getActiveQueueRoutes(){return this.captureMode==="v1"?[Un,Bn]:[Un]}async sendBatch(e,t,r=Un){if(this.captureMode!=="v1"||r===Bn)return super.sendBatch(e,t,r);let n=e.filter((i)=>i!==void 0);await this.getV1Sender().sendV1Batch(n)}getV1Sender(){if(!this._v1Sender)this._v1Sender=new Vl({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3000,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:(e)=>this._events.emit("error",e)});return this._v1Sender}getLibraryVersion(){return Ah}get metrics(){if(!this._metrics)this._metrics=new cs(this,ds(this.options.metrics),this._logger);return this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();if(this.options.isServer??!0)e.$is_server=!0;return e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,r){if(typeof e=="string")this._logger.warn(t);if(e.event==="$exception"&&!e._originatedFromCaptureException)this._logger.warn(r)}_sendPreparedEvent(e,t,r,n){return this.addPendingPromise(this._prepareEventMessage(t,n).then(({distinctId:i,event:s,properties:o,options:a})=>{let l={timestamp:a.timestamp,disableGeoip:a.disableGeoip,uuid:a.uuid},d={distinctId:i,event:s,properties:{...o,...this.getCommonEventProperties()}};return r?this.sendImmediate(e,d,l):this.enqueue(e,d,l)}).catch((i)=>{if(i)console.error(i)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:r}){let{$set:n,$set_once:i,$anon_distinct_id:s,...o}=t,d={$set:n||o,$set_once:i||{},$anon_distinct_id:s??void 0};this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:d,disableGeoip:r},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:r}){let{$set:n,$set_once:i,$anon_distinct_id:s,...o}=t,d={$set:n||o,$set_once:i||{},$anon_distinct_id:s??void 0};await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:d,disableGeoip:r},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:r={}}){if(Object.keys(t).length===0&&Object.keys(r).length===0)return;let n={};if(Object.keys(t).length>0)n.$set=t;if(Object.keys(r).length>0)n.$set_once=r;this.capture({distinctId:e,event:"$set",properties:n})}unsetPersonProperties({distinctId:e,properties:t}){let r=AO(t);if(r.length===0)return;this.capture({distinctId:e,event:"$set",properties:{$unset:r}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=Qh){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((t)=>{let r=setTimeout(()=>{n(),t(!1)},e),n=this._events.on("localEvaluationFlagsLoaded",(i)=>{clearTimeout(r),n(),t(i>0)})})}_resolveDistinctId(e,t){if(typeof e=="string")return{distinctId:e,options:t};return{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,r={},n){if(this.disabled)return void this._logger.warn("The client is disabled");let i=r.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let w=this._flagOverrides[e];if(w===void 0)return;let x=this._payloadOverrides?.[e];return{key:e,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:x}}let{groups:s,disableGeoip:o}=r,{onlyEvaluateLocally:a,personProperties:l,groupProperties:d}=r,c=this.addLocalPersonAndGroupProperties(t,s,l,d);l=c.allPersonProperties,d=c.allGroupProperties;let p=this.createFeatureFlagEvaluationContext(t,s,this.personPropertiesForLocalEvaluation(t,l),d);if(a==null)a=this.options.strictLocalEvaluation??!1;let h,u=!1,f,m,g,y,b,v,I;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let w=this.featureFlagsPoller?.featureFlagsByKey[e];if(w)try{let x=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(w,p,{matchValue:n});if(x){u=!0;let T=x.value;y=w.id,v="Evaluated locally",I=w.has_experiment,h={key:e,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:x.payload??void 0}}}catch(x){if(x instanceof rt||x instanceof L)this._logger?.info(`${x.name} when computing flag locally: ${e}: ${x.message}`);else throw x}}if(!u&&!a){let w=await super.getFeatureFlagDetailsStateless(p.distinctId,p.groups,l,d,o,[e]);if(w===void 0)g=yt.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=w.minimalFlagCalledEvents===!0,f=w.requestId,m=w.evaluatedAt;let x=[];if(w.errorsWhileComputingFlags)x.push(yt.ERRORS_WHILE_COMPUTING);if(w.quotaLimited?.includes("feature_flags"))x.push(yt.QUOTA_LIMITED);let T=w.flags[e];if(T===void 0)x.push(yt.FLAG_MISSING);else{y=T.metadata?.id,b=T.metadata?.version,v=T.reason?.description??T.reason?.code,I=T.metadata?.has_experiment;let R;if(T.metadata?.payload!==void 0)try{R=JSON.parse(T.metadata.payload)}catch{R=T.metadata.payload}h={key:e,enabled:T.enabled,variant:T.variant,payload:R}}if(x.length>0)g=x.join(",")}}if(i){let w=h===void 0?void 0:h.enabled===!1?!1:h.variant??!0,x={$feature_flag:e,$feature_flag_response:w,$feature_flag_id:y,$feature_flag_version:b,$feature_flag_reason:v,locally_evaluated:u,[`$feature/${e}`]:w,$feature_flag_request_id:f,$feature_flag_evaluated_at:u?Date.now():m};if(I!==void 0)x.$feature_flag_has_experiment=I;if(u&&this.featureFlagsPoller){let T=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(T!==void 0)x.$feature_flag_definitions_loaded_at=T}if(g)x.$feature_flag_error=g;this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:w,groups:s,disableGeoip:o,properties:x})}if(h!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides)h={...h,payload:this._payloadOverrides[e]};return h}async getFeatureFlag(e,t,r){$s("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return n.variant??!0}async getFeatureFlagPayload(e,t,r,n){if($s("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let i=await this._getFeatureFlagResult(e,t,{...n,sendFeatureFlagEvents:!1},r);if(i===void 0)return;return i.payload??null}async getFeatureFlagResult(e,t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult(e,n,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let r=await t.json();if(typeof r=="string")try{return JSON.parse(r)}catch(n){}return r}async isFeatureEnabled(e,t,r){$s("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return!!(n.variant??!0)||!1}async getAllFlags(e,t){let{distinctId:r,options:n}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(r,n)).featureFlags||{}}async getAllFlagsAndPayloads(e,t){let{distinctId:r,options:n}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:i,disableGeoip:s,flagKeys:o}=n||{},{onlyEvaluateLocally:a,personProperties:l,groupProperties:d}=n||{},c=this.addLocalPersonAndGroupProperties(r,i,l,d);l=c.allPersonProperties,d=c.allGroupProperties;let p=this.createFeatureFlagEvaluationContext(r,i,this.personPropertiesForLocalEvaluation(r,l),d);if(a==null)a=this.options.strictLocalEvaluation??!1;let h=await this.featureFlagsPoller?.getAllFlagsAndPayloads(p,o),u={},f={},m=!0;if(h)u=h.response,f=h.payloads,m=h.fallbackToFlags;if(m&&!a){let g=await super.getFeatureFlagsAndPayloadsStateless(p.distinctId,p.groups,l,d,s,o);u={...u,...g.flags||{}},f={...f,...g.payloads||{}}}if(this._flagOverrides!==void 0)u={...u,...this._flagOverrides};if(this._payloadOverrides!==void 0)f={...f,...this._payloadOverrides};return{featureFlags:u,featureFlagPayloads:f}}async evaluateFlags(e,t){let{distinctId:r,options:n}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:r,flags:{}});let{groups:i,disableGeoip:s,flagKeys:o}=n||{},{onlyEvaluateLocally:a,personProperties:l,groupProperties:d}=n||{},c=this.addLocalPersonAndGroupProperties(r,i,l,d);l=c.allPersonProperties,d=c.allGroupProperties;let p=this.createFeatureFlagEvaluationContext(r,i,this.personPropertiesForLocalEvaluation(r,l),d);if(a==null)a=this.options.strictLocalEvaluation??!1;let h={},u,f,m=!1,g=!1,y=await this.featureFlagsPoller?.getAllFlagsAndPayloads(p,o),b=new Set;if(y)for(let[I,E]of Object.entries(y.response)){let w=this.featureFlagsPoller?.featureFlagsByKey[I];h[I]={key:I,enabled:E!==!1,variant:typeof E=="string"?E:void 0,payload:y.payloads[I],id:w?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:w?.has_experiment},b.add(I)}if((y?y.fallbackToFlags:!0)&&!a){let I=await super.getFeatureFlagDetailsStateless(p.distinctId,p.groups,l,d,s,o);if(I){this._minimalFlagCalledEvents=I.minimalFlagCalledEvents===!0,u=I.requestId,f=I.evaluatedAt,m=Boolean(I.errorsWhileComputingFlags),g=Array.isArray(I.quotaLimited)&&I.quotaLimited.includes("feature_flags");for(let[E,w]of Object.entries(I.flags)){if(b.has(E))continue;let x;if(w.metadata?.payload!==void 0)try{x=JSON.parse(w.metadata.payload)}catch{x=w.metadata.payload}h[E]={key:E,enabled:w.enabled,variant:w.variant,payload:x,id:w.metadata?.id,version:w.metadata?.version,reason:w.reason?.description??w.reason?.code,locallyEvaluated:!1,hasExperiment:w.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[I,E]of Object.entries(this._flagOverrides)){if(E===void 0){delete h[I];continue}let w=h[I];h[I]={key:I,enabled:E!==!1,variant:typeof E=="string"?E:void 0,payload:w?.payload,id:w?.id,version:w?.version,reason:w?.reason,locallyEvaluated:w?.locallyEvaluated??!1,hasExperiment:w?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[I,E]of Object.entries(this._payloadOverrides)){let w=h[I];if(w)h[I]={...w,payload:E}}return new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:r,groups:i,disableGeoip:s,flags:h,requestId:u,evaluatedAt:f,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:m,quotaLimited:g})}_shouldSendMinimalFlagCalledEvent(e,t){return e==="$feature_flag_called"&&this._minimalFlagCalledEvents&&t.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:r,response:n,groups:i,disableGeoip:s,properties:o}=e,a=i&&Object.keys(i).length>0?`_${JSON.stringify(Object.entries(i).sort(([d],[c])=>d<c?-1:d>c?1:0))}`:"",l=`${r}_${n}${a}`;if(t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(l))return;if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(this.distinctIdHasSentFlagCalls[t]instanceof Set)this.distinctIdHasSentFlagCalls[t].add(l);else this.distinctIdHasSentFlagCalls[t]=new Set([l]);this.capture({distinctId:t,event:"$feature_flag_called",properties:o,groups:i,disableGeoip:s})}_getFeatureFlagEvaluationsHost(){if(!this._featureFlagEvaluationsHost)this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:(e)=>this._captureFlagCalledEventIfNeeded(e),logWarning:(e)=>{if(this.options.featureFlagsLogWarnings!==!1)console.warn(`[PostHog] ${e}`)}};return this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:r,distinctId:n,disableGeoip:i}){this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:i},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:r,distinctId:n,disableGeoip:i}){await this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:i},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=(r)=>Object.fromEntries(r.map((n)=>[n,!0]));if(e===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){if("flags"in e){if(e.flags===!1)this._flagOverrides=void 0;else if(Array.isArray(e.flags))this._flagOverrides=t(e.flags);else if(e.flags!==void 0)this._flagOverrides={...e.flags}}if("payloads"in e){if(e.payloads===!1)this._payloadOverrides=void 0;else if(e.payloads!==void 0)this._payloadOverrides={...e.payloads}}return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if("flags"in t){let r=t.flags;if(r===!1||Array.isArray(r)||typeof r=="object"&&r!==null)return!0}if("payloads"in t){let r=t.payloads;if(r===!1||typeof r=="object"&&r!==null)return!0}return!1}withContext(e,t,r){if(!this.context)return t();return this.context.run(e,t,r)}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??30000),r=this._consumeWaitUntilCycle();if(await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics)await Promise.race([this._metrics.flush().catch(()=>{}),new Promise((n)=>ue(n,Math.max(0,t-Date.now())))]),this._metrics.reset();try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},r?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},n=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let i=new AbortController;n=ue(()=>{i.abort()},this.options.requestTimeout),r.signal=i.signal}try{return await this.fetch(t,r)}catch(i){this._events.emit("error",i);return}finally{if(n)clearTimeout(n)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let r={},n={};for(let[i,s]of Object.entries(e))if(Am(s)&&t&&i in t){let o={};for(let[a,l]of Object.entries(s))o[String(a)]=String(l);n[String(i)]=o}else r[String(i)]=String(s);return{personProperties:r,groupProperties:n}}async getFeatureFlagsForEvent(e,t,r,n){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let i=n?.personProperties||{},s=n?.groupProperties||{},o=n?.flagKeys;if(n?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let l={};for(let[d,c]of Object.entries(t||{}))l[d]=String(c);return await this.getAllFlags(e,{groups:l,personProperties:i,groupProperties:s,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:o})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let l={};for(let[d,c]of Object.entries(t||{}))l[d]=String(c);return await this.getAllFlags(e,{groups:l,personProperties:i,groupProperties:s,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:o})}return(await super.getFeatureFlagsStateless(e,t,i,s,r)).flags}addLocalPersonAndGroupProperties(e,t,r,n){let i={...r||{}},s={};if(t)for(let o of Object.keys(t))s[o]={$group_key:t[o],...n?.[o]||{}};return{allPersonProperties:i,allGroupProperties:s}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,r,n){return{distinctId:e,groups:t||{},personProperties:r||{},groupProperties:n||{},evaluationCache:{}}}captureException(e,t,r,n,i){if(!nt.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");this.addPendingPromise(nt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,r).then((o)=>this._capturePreparedEvent({...o,uuid:n,flags:i},!1)))}}async captureExceptionImmediate(e,t,r,n){if(!nt.isPreviouslyCapturedError(e)){let i=Error("PostHog syntheticException");return this.addPendingPromise(nt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:i},t,r).then((s)=>this.captureImmediate({...s,flags:n})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:r,event:n,properties:i,groups:s,flags:o,sendFeatureFlags:a,timestamp:l,disableGeoip:d,uuid:c}=e,p=this.context?.get(),h=t.includeContextProperties??!0,u=r||p?.distinctId,f=h?{...this.props,...p?.properties||{},...i||{}}:{...i||{}};if(!u)u=xe(),f.$process_person_profile=!1;if(h&&p?.sessionId&&!f.$session_id)f.$session_id=p.sessionId;let m=this._shouldSendMinimalFlagCalledEvent(n,f)?On(f):f,g=this._runBeforeSend({distinctId:u,event:n,properties:m,groups:s,flags:o,sendFeatureFlags:a,timestamp:l,disableGeoip:d,uuid:c});if(!g)return Promise.reject(null);let y=await Promise.resolve().then(async()=>{if(o){if(a)console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`.");return o._getEventProperties()}if(a){$s("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let b=typeof a=="object"?a:void 0,v=await this.getFeatureFlagsForEvent(g.distinctId,s,d,b);return kO(v)}return{}}).catch(()=>({})).then((b)=>{let v=g.groups||s;return{...b,...g.properties||{},...v!==void 0&&Object.keys(v).length>0?{$groups:v}:{}}});if(g.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof y.$raw_user_agent=="string"){if(xm(y.$raw_user_agent,this.options.custom_blocked_useragents||[]))g.event="$bot_pageview",y.$browser_type="bot"}return{distinctId:g.distinctId,event:g.event,properties:y,options:{timestamp:g.timestamp,disableGeoip:g.disableGeoip,uuid:g.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let r=Array.isArray(t)?t:[t],n=e;for(let i of r){if(n=i(n),!n)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!n.properties||Object.keys(n.properties).length===0){let s=`Event '${n.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return n}}var Xh=require("async_hooks");class Kl{constructor(){this.storage=new Xh.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,r){return this.storage.run(this.resolve(e,r),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let r=this.get()||{};return{distinctId:e.distinctId??r.distinctId,sessionId:e.sessionId??r.sessionId,properties:{...r.properties||{},...e.properties||{}}}}}function DO(e,{organization:t,projectId:r,prefix:n,severityAllowList:i=["error"],sendExceptionsToPostHog:s=!0}={}){return(o)=>{if(!(i==="*"||i.includes(o.level)))return o;if(!o.tags)o.tags={};let l=o.tags[Zh.POSTHOG_ID_TAG];if(l===void 0)return o;let d=e.options.host??"https://us.i.posthog.com",c=new URL(`/project/${e.apiKey}/person/${l}`,d).toString();o.tags["PostHog Person URL"]=c;let p=o.exception?.values||[],h=p.map((f)=>({...f,stacktrace:f.stacktrace?{...f.stacktrace,type:"raw",frames:(f.stacktrace.frames||[]).map((m)=>({...m,platform:"node:javascript"}))}:void 0})),u={$exception_message:p[0]?.value||o.message,$exception_type:p[0]?.type,$exception_level:o.level,$exception_list:h,$sentry_event_id:o.event_id,$sentry_exception:o.exception,$sentry_exception_message:p[0]?.value||o.message,$sentry_exception_type:p[0]?.type,$sentry_tags:o.tags};if(t&&r)u.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+o.event_id;if(s)e.capture({event:"$exception",distinctId:l,properties:u});return o}}class Zh{static#r=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,r,n,i){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(s,o){let a=o()?.getClient()?.getDsn()?.projectId;s(DO(e,{organization:t,projectId:a,prefix:r,severityAllowList:n,sendExceptionsToPostHog:i??!0}))}}}class Wl extends zl{getLibraryId(){return"posthog-node"}initializeContext(){return new Kl}createErrorPropertiesBuilder(){return new $e.ErrorPropertiesBuilder([new $e.EventCoercer,new $e.ErrorCoercer,new $e.ObjectCoercer,new $e.StringCoercer,new $e.PrimitiveCoercer],$e.createStackParser("node:javascript",$e.nodeStackLineParser),[Im(),Ch,Th()])}}var re=require("fs/promises"),fe=require("path");var eg={name:"@toloka-platform/sdk",version:"0.1.0-preview.6",private:!1,description:"Preview. Build, inspect, and operate Toloka pipeline projects as TypeScript source. The public API may change.",license:"Apache-2.0",bin:{toloka:"bin/toloka.js"},files:["README.md","bin","docs","dist","examples","openapi/gen","skills","src"],type:"module",main:"./src/index.ts",exports:{".":"./src/index.ts","./examples/face-image-collection":"./examples/face-image-collection/pipeline.ts"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/",tag:"preview"},scripts:{build:"bun ./scripts/build-cli.ts ./dist/cli",generate:"orval --config ./openapi/orval.config.js",prepack:"bun run build","sync-skill-catalog":"bun ./scripts/sync-skill-catalog.ts",test:"vitest run",typecheck:"tsc --noEmit"},dependencies:{"@inquirer/select":"5.2.1",ajv:"8.17.1","ajv-formats":"3.0.1",commander:"15.0.0","es-toolkit":"1.42.0","posthog-node":"5.46.1"},devDependencies:{"@types/node":"24.10.1",orval:"7.17.0",typescript:"7.0.2",vitest:"4.1.0",yaml:"2.9.0"},engines:{bun:"1.4.0"}};var tg=require("fs/promises"),rg=require("path"),Is=(e,...t)=>e instanceof Error&&("code"in e)&&typeof e.code==="string"&&t.includes(e.code),Es=(e)=>Is(e,"ENOENT"),Ar=async(e)=>{try{return await tg.lstat(e)}catch(t){if(Es(t))return;throw t}},Gn=async(e,t,r="write")=>{let n=e;for(let i of t.split("/")){n=rg.join(n,i);let s=await Ar(n);if(s===void 0)return;_(!s.isSymbolicLink(),`Refusing to ${r} through symbolic link ${n}.`)}};var og=require("crypto"),Z=require("fs/promises"),pe=require("path"),ag=require("url");var MO=(e)=>{let t=typeof e.body==="string"?e.body:e.body===void 0?void 0:JSON.stringify(e.body);return t===void 0||t.length===0?void 0:t},Vn=(e)=>{if(e instanceof te){let t=MO(e);return t===void 0?e.message:`${e.message}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
32
|
+
`),this.outputHelp({error:!0});let i=t||{},n=i.exitCode||1,o=i.code||"commander.error";this._exit(n,o,e)}_parseOptionsEnv(){this.options.forEach((e)=>{if(e.envVar&&e.envVar in E.default.env){let t=e.attributeName();if(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))if(e.required||e.optional)this.emit(`optionEnv:${e.name()}`,E.default.env[e.envVar]);else this.emit(`optionEnv:${e.name()}`)}})}_parseOptionsImplied(){let e=new fr(this.options),t=(i)=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter((i)=>i.implied!==void 0&&t(i.attributeName())&&e.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach((i)=>{Object.keys(i.implied).filter((n)=>!t(n)).forEach((n)=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let i=(s)=>{let r=s.attributeName(),g=this.getOptionValue(r),a=this.options.find((I)=>I.negate&&r===I.attributeName()),l=this.options.find((I)=>!I.negate&&r===I.attributeName());if(a&&(a.presetArg===void 0&&g===!1||a.presetArg!==void 0&&g===a.presetArg))return a;return l||s},n=(s)=>{let r=i(s),g=r.attributeName();if(this.getOptionValueSource(g)==="env")return`environment variable '${r.envVar}'`;return`option '${r.flags}'`},o=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter((r)=>r.long).map((r)=>r.long);n=n.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);t=yr(e,n)}let i=`error: unknown option '${e}'${t}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,i=t===1?"":"s",n=e.length,o=this.parent?` for '${this.name()}'`:"",s=e.join(", "),r=`error: too many arguments${o}. Expected ${t} argument${i} but got ${n}: ${s}.`;this.error(r,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach((o)=>{if(n.push(o.name()),o.alias())n.push(o.alias())}),t=yr(e,n)}let i=`error: unknown command '${e}'${t}`;this.error(i,{code:"commander.unknownCommand"})}version(e,t,i){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",i=i||"output the version number";let n=this.createOption(t,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
33
|
+
`),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(e);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){if(e===void 0)return this._aliases;return e.forEach((t)=>this.alias(t)),this}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map((i)=>Fo(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){if(e===void 0)return this._name;return this._name=e,this}helpGroup(e){if(e===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=e,this}commandsGroup(e){if(e===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=e,this}optionsGroup(e){if(e===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=e,this}_initOptionGroup(e){if(this._defaultOptionGroup&&!e.helpGroupHeading)e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){if(this._defaultCommandGroup&&!e.helpGroup())e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Le.default.basename(e,Le.default.extname(e)),this}executableDir(e){if(e===void 0)return this._executableDir;return this._executableDir=e,this}helpInformation(e){let t=this.createHelp(),i=this._getOutputContext(e);t.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let n=t.formatHelp(this,t);if(i.hasColors)return n;return this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,i,n,o;if(t)i=(r)=>this._outputConfiguration.writeErr(r),n=this._outputConfiguration.getErrHasColors(),o=this._outputConfiguration.getErrHelpWidth();else i=(r)=>this._outputConfiguration.writeOut(r),n=this._outputConfiguration.getOutHasColors(),o=this._outputConfiguration.getOutHelpWidth();return{error:t,write:(r)=>{if(!n)r=this._outputConfiguration.stripColor(r);return i(r)},hasColors:n,helpWidth:o}}outputHelp(e){let t;if(typeof e==="function")t=e,e=void 0;let i=this._getOutputContext(e),n={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach((s)=>s.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let o=this.helpInformation({error:i.error});if(t){if(o=t(o),typeof o!=="string"&&!Buffer.isBuffer(o))throw Error("outputHelp callback must return a string or a Buffer")}if(i.write(o),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",n),this._getCommandAndAncestors().forEach((s)=>s.emit("afterAllHelp",n))}helpOption(e,t){if(typeof e==="boolean"){if(e){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),e||t)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(E.default.exitCode??0);if(t===0&&e&&typeof e!=="function"&&e.error)t=1;this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let i=["beforeAll","before","after","afterAll"];if(!i.includes(e))throw Error(`Unexpected value for position to addHelpText.
|
|
34
|
+
Expecting one of '${i.join("', '")}'`);let n=`${e}Help`;return this.on(n,(o)=>{let s;if(typeof t==="function")s=t({error:o.error,command:o.command});else s=t;if(s)o.write(`${s}
|
|
35
|
+
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((n)=>t.is(n)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function KI(e){return e.map((t)=>{if(!t.startsWith("--inspect"))return t;let i,n="127.0.0.1",o="9229",s;if((s=t.match(/^(--inspect(-brk)?)$/))!==null)i=s[1];else if((s=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(i=s[1],/^\d+$/.test(s[3]))o=s[3];else n=s[3];else if((s=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)i=s[1],n=s[3],o=s[4];if(i&&o!=="0")return`${i}=${n}:${parseInt(o)+1}`;return t})}function LI(){if(E.default.env.NO_COLOR||E.default.env.FORCE_COLOR==="0"||E.default.env.FORCE_COLOR==="false")return!1;if(E.default.env.FORCE_COLOR||E.default.env.CLICOLOR_FORCE!==void 0)return!0;return}var $1=new Ai;function b(e,t){if(e)return;if(typeof t==="string")throw Error(t);throw t}var FW=require("fs/promises"),Go=require("path"),HW=require("readline/promises");class te extends Error{code;status;body;requestId;constructor(e,t,i,n,o){super(e);this.name="PotatoApiError",this.code=t,this.status=i,this.body=n,this.requestId=o}static fromResponse(e,t,i){let n=i===void 0?"":` (request id: ${i})`;return new te(`Potato API request failed with status ${e}${n}`,"http",e,t,i)}static waitTimeout(e){return new te(`Potato API job did not reach a terminal status within ${e} ms`,"wait_timeout",void 0,{timeoutMs:e})}}class Zi extends Error{code="invalid_pipeline_graph";issues;constructor(e,t){super(e);this.name="PipelineGraphValidationError",this.issues=t}static fromIssues(e){let t=e.map(({path:i,reason:n})=>`- ${i}: ${n}`).join(`
|
|
36
|
+
`);return new Zi(`Pipeline graph validation failed
|
|
37
|
+
${t}`,e)}}var Br="x-potato-sdk-base-url",qI=(e,t,i)=>(b(e.length>0,"The SDK base URL cannot be empty"),b(t.length>0,"The SDK API key cannot be empty"),{headers:{Accept:"application/json",Authorization:`ApiKey ${t}`,[Br]:new URL(e).toString()},fetch:i});async function w(e,t){let{fetch:i=globalThis.fetch,...n}=t,o=new Headers(n.headers),s=o.get(Br);b(s,"The SDK base URL is missing"),o.delete(Br);let r=await i(new URL(e,s),{...n,headers:o}),g=await r.text();if(!r.ok){let a=g;if(g.length===0)a=void 0;else if(r.headers.get("content-type")?.includes("application/json"))a=JSON.parse(g);throw te.fromResponse(r.status,a,r.headers.get("x-request-id")??void 0)}return g.length===0?void 0:JSON.parse(g)}var rV=()=>"/api/v2-beta/base-models",ed=async(e)=>w(rV(),{...e,method:"GET"}),gV=(e)=>`/api/v2-beta/base-models/${e}`,td=async(e,t)=>w(gV(e),{...t,method:"GET"}),aV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/models?${n}`:`/api/v2-beta/projects/${e}/models`},Rr=async(e,t,i)=>w(aV(e,t),{...i,method:"GET"}),lV=(e)=>`/api/v2-beta/projects/${e}/models`,id=async(e,t,i)=>w(lV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),IV=(e,t,i)=>{let n=new URLSearchParams;Object.entries(i||{}).forEach(([s,r])=>{if(r!==void 0)n.append(s,r===null?"null":r.toString())});let o=n.toString();return o.length>0?`/api/v2-beta/projects/${e}/models/${t}/versions?${o}`:`/api/v2-beta/projects/${e}/models/${t}/versions`},Gr=async(e,t,i,n)=>w(IV(e,t,i),{...n,method:"GET"}),dV=(e)=>`/api/v2-beta/model-versions/${e}`,nd=async(e,t)=>w(dV(e),{...t,method:"GET"}),cV=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}/archive`,od=async(e,t,i)=>w(cV(e,t),{...i,method:"POST"}),CV=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}`,sd=async(e,t,i)=>w(CV(e,t),{...i,method:"GET"}),uV=()=>"/api/v2-beta/me",rd=async(e)=>w(uV(),{...e,method:"GET"}),mV=(e)=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,o])=>{if(o!==void 0)t.append(n,o===null?"null":o.toString())});let i=t.toString();return i.length>0?`/api/v2-beta/projects?${i}`:"/api/v2-beta/projects"},wr=async(e,t)=>w(mV(e),{...t,method:"GET"}),pV=()=>"/api/v2-beta/projects",gd=async(e,t)=>w(pV(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),AV=(e)=>`/api/v2-beta/projects/${e}`,ad=async(e,t)=>w(AV(e),{...t,method:"GET"}),ZV=(e)=>`/api/v2-beta/projects/${e}`,ld=async(e,t,i)=>w(ZV(e),{...i,method:"PATCH",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),bV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/pipelines?${n}`:`/api/v2-beta/projects/${e}/pipelines`},Fr=async(e,t,i)=>w(bV(e,t),{...i,method:"GET"}),WV=(e)=>`/api/v2-beta/pipelines/${e}`,Id=async(e,t)=>w(WV(e),{...t,method:"GET"}),hV=(e)=>`/api/v2-beta/pipelines/${e}`,dd=async(e,t,i)=>w(hV(e),{...i,method:"PATCH",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),fV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/datasets?${n}`:`/api/v2-beta/projects/${e}/datasets`},Hr=async(e,t,i)=>w(fV(e,t),{...i,method:"GET"}),yV=(e)=>`/api/v2-beta/projects/${e}/datasets`,cd=async(e,t,i)=>w(yV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),VV=(e)=>`/api/v2-beta/datasets/${e}`,Cd=async(e,t)=>w(VV(e),{...t,method:"GET"}),BV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/datasets/${e}/fields?${n}`:`/api/v2-beta/datasets/${e}/fields`},vr=async(e,t,i)=>w(BV(e,t),{...i,method:"GET"}),RV=(e)=>`/api/v2-beta/datasets/${e}/fields`,kr=async(e,t,i)=>w(RV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),GV=(e)=>`/api/v2-beta/datasets/${e}/inferred-fields`,ud=async(e,t)=>w(GV(e),{...t,method:"GET"}),wV=(e)=>`/api/v2-beta/datasets/${e}/items`,md=async(e,t,i)=>w(wV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),FV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/datasets/${e}/items?${n}`:`/api/v2-beta/datasets/${e}/items`},Pr=async(e,t,i)=>w(FV(e,t),{...i,method:"GET"}),HV=(e)=>`/api/v2-beta/datasets/${e}/uploads`,pd=async(e,t,i)=>w(HV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),vV=(e)=>`/api/v2-beta/uploads/${e}/finalize`,Ad=async(e,t)=>w(vV(e),{...t,method:"POST"}),kV=(e)=>`/api/v2-beta/uploads/${e}/cancel`,Zd=async(e,t)=>w(kV(e),{...t,method:"POST"}),PV=(e)=>`/api/v2-beta/uploads/${e}`,Yr=async(e,t)=>w(PV(e),{...t,method:"GET"}),YV=(e)=>`/api/v2-beta/projects/${e}/pipelines/import`,bd=async(e,t,i)=>w(YV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),NV=(e)=>`/api/v2-beta/pipelines/${e}/dataset`,Wd=async(e,t,i)=>w(NV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),XV=(e)=>`/api/v2-beta/pipelines/${e}/export`,hd=async(e,t)=>w(XV(e),{...t,method:"GET"}),SV=(e)=>`/api/v2-beta/pipelines/${e}/copy`,fd=async(e,t,i)=>w(SV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),xV=(e)=>`/api/v2-beta/pipelines/${e}/cost-estimate`,yd=async(e,t,i)=>w(xV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),JV=(e)=>`/api/v2-beta/pipelines/${e}/runs`,Vd=async(e,t)=>w(JV(e),{...t,method:"POST"}),EV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/pipelines/${e}/runs?${n}`:`/api/v2-beta/pipelines/${e}/runs`},Nr=async(e,t,i)=>w(EV(e,t),{...i,method:"GET"}),UV=(e)=>`/api/v2-beta/runs/${e}`,Xr=async(e,t)=>w(UV(e),{...t,method:"GET"});var OV=(e)=>`/api/v2-beta/runs/${e}/cancel`,Bd=async(e,t)=>w(OV(e),{...t,method:"POST"});var TV=(e)=>`/api/v2-beta/datasets/${e}/exports`,Rd=async(e,t,i)=>w(TV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),zV=(e)=>`/api/v2-beta/exports/${e}`,Sr=async(e,t)=>w(zV(e),{...t,method:"GET"}),jV=(e)=>`/api/v2-beta/pipelines/${e}/graph`,Gd=async(e,t)=>w(jV(e),{...t,method:"GET"}),DV=(e)=>`/api/v2-beta/pipelines/${e}/graph`,wd=async(e,t,i)=>w(DV(e),{...i,method:"PUT",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),QV=(e)=>`/api/v2-beta/pipelines/${e}/graph/validate`,Fd=async(e,t,i)=>w(QV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),_V=(e,t)=>`/api/v2-beta/pipelines/${e}/graph/nodes/${t}`,Hd=async(e,t,i,n)=>w(_V(e,t),{...n,method:"PATCH",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(i)}),KV=(e)=>`/api/v2-beta/projects/${e}/secrets`,vd=async(e,t)=>w(KV(e),{...t,method:"GET"}),LV=(e,t)=>`/api/v2-beta/projects/${e}/secrets/${t}`,kd=async(e,t,i,n)=>w(LV(e,t),{...n,method:"PUT",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(i)}),MV=(e)=>`/api/v2-beta/projects/${e}/files`,Pd=async(e,t)=>w(MV(e),{...t,method:"GET"}),$V=(e)=>`/api/v2-beta/projects/${e}/files`,Yd=async(e,t,i)=>w($V(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),qV=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}/finalize`,Nd=async(e,t,i)=>w(qV(e,t),{...i,method:"POST"}),eB=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}`,Xd=async(e,t,i)=>w(eB(e,t),{...i,method:"DELETE"}),tB=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([o,s])=>{if(s!==void 0)i.append(o,s===null?"null":s.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/runs/${e}/items?${n}`:`/api/v2-beta/runs/${e}/items`},xr=async(e,t,i)=>w(tB(e,t),{...i,method:"GET"}),iB=(e,t)=>`/api/v2-beta/runs/${e}/items/${t}`,Sd=async(e,t,i)=>w(iB(e,t),{...i,method:"GET"}),nB=(e)=>`/api/v2-beta/pipelines/${e}/checks`,xd=async(e,t)=>w(nB(e),{...t,method:"GET"}),oB=(e)=>`/api/v2-beta/pipelines/${e}/checks`,Jd=async(e,t,i)=>w(oB(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),sB=(e)=>`/api/v2-beta/checks/${e}`,Jr=async(e,t)=>w(sB(e),{...t,method:"GET"});async function*Me(e,t={}){let i=t.offset;while(!0){let n=await e({limit:t.limit,offset:i});if(yield*n.items,!n.pagination.hasMore)return;i=n.pagination.offset+n.pagination.limit}}var An=async(e,t,i={})=>{let n=i.timeoutMs??60000,o=i.intervalMs??1000;b(Number.isFinite(n)&&n>=0,"The wait timeout must be a nonnegative finite number"),b(Number.isFinite(o)&&o>0,"The polling interval must be a positive finite number");let s=Date.now()+n,r=new AbortController,g=setTimeout(()=>r.abort(),n);try{while(!0){if(r.signal.aborted)throw te.waitTimeout(n);let a=await e(r.signal);if(t(a))return a;let l=s-Date.now();if(l<=0)throw te.waitTimeout(n);let{promise:I,resolve:d}=Promise.withResolvers();setTimeout(d,Math.min(o,l)),await I}}catch(a){if(r.signal.aborted)throw te.waitTimeout(n);throw a}finally{clearTimeout(g)}};var gB=(e)=>{let t=qI(e.baseUrl,e.apiKey,e.fetch),i=()=>{let c=new Headers(t.headers);return c.set("Content-Type","application/json"),{...t,headers:c,body:"{}"}};async function n(c,C){switch(c.type){case"datasetUpload":return An((A)=>Yr(c.uploadId,{...t,signal:A}),(A)=>A.status==="succeeded"||A.status==="failed",C);case"datasetExport":return An((A)=>Sr(c.exportId,{...t,signal:A}),(A)=>A.status==="succeeded",C);case"pipelineCheck":return An((A)=>Jr(c.checkRunId,{...t,signal:A}),(A)=>A.status==="succeeded"||A.status==="failed",C);case"pipelineRun":return An((A)=>Xr(c.runId,{...t,signal:A}),(A)=>A.status==="succeeded"||A.status==="failed",C)}}return{me:()=>rd(t),projects:{create:(c)=>gd(c,t),get:({projectId:c})=>ad(c,t),update:({projectId:c,...C})=>ld(c,C,t),listPage:(c={})=>wr(c,t),listAll:(c={})=>Me(async(C)=>{let A=await wr({...c,...C},t);return{items:A.projects,pagination:A.pagination}},c)},pipelines:{import:({projectId:c,...C})=>bd(c,C,t),get:({pipelineId:c})=>Id(c,t),update:({pipelineId:c,...C})=>dd(c,C,t),listPage:({projectId:c,...C})=>Fr(c,C,t),listAll:({projectId:c,...C})=>Me(async(A)=>{let m=await Fr(c,{...C,...A},t);return{items:m.pipelines,pagination:m.pagination}},C),getGraph:({pipelineId:c})=>Gd(c,t),replaceGraph:({pipelineId:c,...C})=>wd(c,"version"in C?{graph:C.graph,expectedVersion:C.version}:C,t),validateGraph:({pipelineId:c,...C})=>Fd(c,C,t),estimateCost:({pipelineId:c,...C})=>yd(c,C,t),patchNode:({pipelineId:c,nodeId:C,...A})=>Hd(c,C,A,t),attachDataset:({pipelineId:c,...C})=>Wd(c,C,t),export:({pipelineId:c})=>hd(c,t),copy:({pipelineId:c,...C})=>fd(c,C,t)},datasets:{create:({projectId:c,...C})=>cd(c,C,t),get:({datasetId:c})=>Cd(c,t),listPage:({projectId:c,...C})=>Hr(c,C,t),listAll:({projectId:c,...C})=>Me(async(A)=>{let m=await Hr(c,{...C,...A},t);return{items:m.datasets,pagination:m.pagination}},C),createField:async({datasetId:c,...C})=>{let A=await kr(c,C,t);return b(!("fields"in A),"Creating one field must return that field"),A},createFields:async({datasetId:c,fields:C})=>{let A=await kr(c,{fields:C},t);return b("fields"in A,"Creating several fields must return those fields"),A.fields},listFieldsPage:({datasetId:c,...C})=>vr(c,C,t),getInferredFields:({datasetId:c})=>ud(c,t),listAllFields:({datasetId:c,...C})=>Me(async(A)=>{let m=await vr(c,{...C,...A},t);return{items:m.fields,pagination:m.pagination}},C),appendItems:({datasetId:c,...C})=>md(c,C,t),listItemsPage:({datasetId:c,...C})=>Pr(c,C,t),listAllItems:({datasetId:c,...C})=>Me(async(A)=>{let m=await Pr(c,{...C,...A},t);return{items:m.items,pagination:m.pagination}},C),startUpload:({datasetId:c,...C})=>pd(c,C,t),finalizeUpload:({uploadId:c})=>Ad(c,i()),cancelUpload:({uploadId:c})=>Zd(c,i()),getUpload:({uploadId:c})=>Yr(c,t),startExport:({datasetId:c,...C})=>Rd(c,C,t),getExport:({exportId:c})=>Sr(c,t)},baseModels:{list:async()=>(await ed(t)).baseModels,get:({id:c})=>td(c,t)},models:{listPage:({projectId:c,...C})=>Rr(c,C,t),listAll:({projectId:c,...C})=>Me(async(A)=>{let m=await Rr(c,{...C,...A},t);return{items:m.models,pagination:m.pagination}},C),get:({projectId:c,modelId:C})=>sd(c,C,t),listVersionsPage:({projectId:c,modelId:C,...A})=>Gr(c,C,A,t),listAllVersions:({projectId:c,modelId:C,...A})=>Me(async(m)=>{let p=await Gr(c,C,{...A,...m},t);return{items:p.versions,pagination:p.pagination}},A),create:({projectId:c,...C})=>id(c,C,t),getVersion:({modelVersionId:c})=>nd(c,t),archive:({projectId:c,modelId:C})=>{let A=new Headers(t.headers);return A.set("Content-Type","application/json"),od(c,C,{...t,headers:A})}},runs:{start:({pipelineId:c})=>Vd(c,i()),get:({runId:c})=>Xr(c,t),cancel:({runId:c})=>Bd(c,t),listPage:({pipelineId:c,...C})=>Nr(c,C,t),listAll:({pipelineId:c,...C})=>Me(async(A)=>{let m=await Nr(c,{...C,...A},t);return{items:m.runs,pagination:m.pagination}},C),listItemsPage:({runId:c,...C})=>xr(c,C,t),listAllItems:({runId:c,...C})=>Me(async(A)=>{let m=await xr(c,{...C,...A},t);return{items:m.items,pagination:m.pagination}},C),getItem:({runId:c,itemId:C})=>Sd(c,C,t)},secrets:{list:async({projectId:c})=>(await vd(c,t)).secrets,set:({projectId:c,name:C,...A})=>kd(c,C,A,t)},files:{list:async({projectId:c})=>(await Pd(c,t)).files,startUpload:({projectId:c,...C})=>Yd(c,C,t),finalizeUpload:({projectId:c,fileId:C})=>Nd(c,C,t),delete:({projectId:c,fileId:C})=>Xd(c,C,t)},checks:{list:async({pipelineId:c})=>(await xd(c,t)).checks,start:({pipelineId:c,...C})=>Jd(c,C,t),get:({checkRunId:c})=>Jr(c,t)},waitFor:n}};function ut(e){return gB(e)}var Yi=require("fs/promises"),Sa=require("path"),zu=be(Xa(),1);var us="toloka.json";class xa extends Error{constructor(e,t){super(e,t);this.name="TolokaStateError"}}var kH="^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))(?!.*//).+$",PH={type:"object",properties:{projectId:{type:"string",minLength:1},pipelines:{type:"object",propertyNames:{type:"string",pattern:kH},additionalProperties:{type:"object",properties:{pipelineId:{type:"string",minLength:1}},required:["pipelineId"],additionalProperties:!1}},datasets:{type:"object",propertyNames:{type:"string",minLength:1},additionalProperties:{type:"object",properties:{datasetId:{type:"string",minLength:1}},required:["datasetId"],additionalProperties:!1}}},required:["projectId","pipelines","datasets"],additionalProperties:!1},YH=new zu.default({allErrors:!0,strict:!1}),Tu=YH.compile(PH);function NH(e){let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return`${typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/"}: ${e.message??`failed ${e.keyword} validation`}`}function ju(e){if(Tu(e))return e;let t=Tu.errors;throw b(t,"toloka.json validation failed without errors"),new xa(`Invalid toloka.json: ${t.map(NH).join("; ")}`)}async function Re(e){let t;try{t=await Yi.readFile(Sa.join(e,us),"utf8")}catch(i){if(i instanceof Error&&"code"in i&&i.code==="ENOENT")return;throw i}try{return ju(JSON.parse(t))}catch(i){if(i instanceof SyntaxError)throw new xa(`Invalid toloka.json: ${i.message}`,{cause:i});throw i}}async function Lt(e,t){let i=ju(t),n=Object.fromEntries(Object.entries(i.pipelines).sort(([s],[r])=>s<r?-1:s>r?1:0)),o=Object.fromEntries(Object.entries(i.datasets).sort(([s],[r])=>s<r?-1:s>r?1:0));await Yi.mkdir(e,{recursive:!0}),await Yi.writeFile(Sa.join(e,us),`${JSON.stringify({projectId:i.projectId,pipelines:n,datasets:o},null,2)}
|
|
38
|
+
`,"utf8")}var Ws=require("fs"),jm=require("child_process"),Dm=require("module"),Qm=require("events"),St=require("fs/promises"),ll=require("os"),Xt=require("path"),gl=require("url");var _u=require("oxc-parser");var Du=require("oxc-parser"),Ja=(e,t,i)=>{let n=Du.parseSync(e,t,{lang:i,preserveParens:!1});return n.errors.some((o)=>o.severity==="Error")?null:n.program},Qu=(e)=>{let t=e?.value;if(!t)return null;if(t.type==="Literal")return typeof t.value==="string"?t.value:null;if(t.type==="JSXExpressionContainer"){let i=t.expression;if(i.type==="Literal"&&typeof i.value==="string")return i.value;if(i.type==="TemplateLiteral"&&i.expressions.length===0)return i.quasis[0]?.value.cooked??null}return null};var Ea=(e)=>{let t=SH(e.postprocess);if(!t||t.size===0)return[];let i=XH(e.code);if(!i||i.size===0)return[];return[...i].filter(([n])=>t.has(n)).sort(([n],[o])=>n.localeCompare(o)).map(([n,o])=>{let s=o===n?`path="${o}"`:`path="${o}" \u2014 a dotted path binds its top-level key "${n}"`;return{severity:"error",text:`Postprocess returns the key "${n}", but a Field component is bound to it (${s}). Every submission of this interface fails at runtime with: Postprocess cannot write key '${n}' because a component is bound to it. Fix: bind the Field to a raw key (e.g. path="raw_${n}") and derive "${n}" in postprocess, or remove "${n}" from the postprocess return.`}})},XH=(e)=>{let t=Ja("code.tsx",`(
|
|
39
|
+
${e}
|
|
40
|
+
)`,"tsx");if(!t)return null;let i=new Map;return new _u.Visitor({JSXOpeningElement(o){let s=o.name;while(s.type==="JSXMemberExpression")s=s.object;if(s.type!=="JSXIdentifier"||s.name!=="Field")return;let r=o.attributes.find((l)=>l.type==="JSXAttribute"&&l.name.type==="JSXIdentifier"&&l.name.name==="path"),g=Qu(r);if(!g)return;let a=g.split(/[.[]/u)[0];if(a&&!i.has(a))i.set(a,g)}}).visit(t),i},SH=(e)=>{let t=Ja("postprocess.ts",`(() => {
|
|
41
|
+
${e}
|
|
42
|
+
})`,"ts");if(!t)return null;let i=t.body.length===1?t.body[0]:void 0;if(i?.type!=="ExpressionStatement"||i.expression.type!=="ArrowFunctionExpression"||i.expression.body.type!=="BlockStatement")return null;let n=new Set;for(let o of JH(i.expression.body))Mt(o,n);return n},xH=new Set(["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"]),JH=(e)=>{let t=[],i=(n)=>{if(!n||typeof n!=="object")return;if(Array.isArray(n)){for(let s of n)i(s);return}let o=n;if(typeof o.type==="string"){if(xH.has(o.type))return;if(o.type==="ReturnStatement"&&o.argument)t.push(o.argument)}for(let s of Object.values(o))i(s)};return i(e.body),t},Mt=(e,t)=>{if(e.type==="ObjectExpression")Ku(e,t);else if(e.type==="ConditionalExpression")Mt(e.consequent,t),Mt(e.alternate,t);else if(e.type==="LogicalExpression")Mt(e.left,t),Mt(e.right,t);else if(e.type==="SequenceExpression"){let i=e.expressions.at(-1);if(i)Mt(i,t)}else if(e.type==="TSAsExpression"||e.type==="TSSatisfiesExpression"||e.type==="TSNonNullExpression"||e.type==="TSTypeAssertion")Mt(e.expression,t)},Ku=(e,t)=>{for(let i of e.properties){if(i.type==="SpreadElement"){if(i.argument.type==="ObjectExpression")Ku(i.argument,t);continue}if(!i.computed&&i.key.type==="Identifier")t.add(i.key.name);else if(i.key.type==="Literal"&&(typeof i.key.value==="string"||typeof i.key.value==="number"))t.add(String(i.key.value))}};var em=require("module"),tm=be(require("path"));var ms=require("oxc-parser"),De=be(require("typescript-api"));var zn={version:1,react:{url:"https://tlkfrontprod.azureedge.net/template-builder-production/static/types/react@18.2.17/index.d.ts",sha256:"40a1b33c67109be18a961127873e8ba198429eacf11a468b4a052cddc9a73f8d",source:Buffer.from("Ly8gVHlwZSBkZWZpbml0aW9ucyBmb3IgUmVhY3QgMTguMgovLyBQcm9qZWN0OiBodHRwczovL3JlYWN0LmRldi8KLy8gRGVmaW5pdGlvbnMgYnk6IEFzYW5hIDxodHRwczovL2FzYW5hLmNvbT4KLy8gICAgICAgICAgICAgICAgIEFzc3VyZVNpZ24gPGh0dHA6Ly93d3cuYXNzdXJlc2lnbi5jb20+Ci8vICAgICAgICAgICAgICAgICBNaWNyb3NvZnQgPGh0dHBzOi8vbWljcm9zb2Z0LmNvbT4KLy8gICAgICAgICAgICAgICAgIEpvaG4gUmVpbGx5IDxodHRwczovL2dpdGh1Yi5jb20vam9obm55cmVpbGx5PgovLyAgICAgICAgICAgICAgICAgQmVub2l0IEJlbmV6ZWNoIDxodHRwczovL2dpdGh1Yi5jb20vYmJlbmV6ZWNoPgovLyAgICAgICAgICAgICAgICAgUGF0cmljaW8gWmF2b2xpbnNreSA8aHR0cHM6Ly9naXRodWIuY29tL3B6YXZvbGluc2t5PgovLyAgICAgICAgICAgICAgICAgRXJpYyBBbmRlcnNvbiA8aHR0cHM6Ly9naXRodWIuY29tL2VyaWNhbmRlcnNvbj4KLy8gICAgICAgICAgICAgICAgIERvdnlkYXMgTmF2aWNrYXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9Eb3Z5ZGFzTmF2aWNrYXM+Ci8vICAgICAgICAgICAgICAgICBKb3NoIFJ1dGhlcmZvcmQgPGh0dHBzOi8vZ2l0aHViLmNvbS90aGVydXRoZXI0ZD4KLy8gICAgICAgICAgICAgICAgIEd1aWxoZXJtZSBIw7xibmVyIDxodHRwczovL2dpdGh1Yi5jb20vZ3VpbGhlcm1laHVibmVyPgovLyAgICAgICAgICAgICAgICAgRmVyZHkgQnVkaGlkaGFybWEgPGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJkYWJlcj4KLy8gICAgICAgICAgICAgICAgIEpvaGFubiBSYWtvdG9oYXJpc29hIDxodHRwczovL2dpdGh1Yi5jb20vanJha290b2hhcmlzb2E+Ci8vICAgICAgICAgICAgICAgICBPbGl2aWVyIFBhc2NhbCA8aHR0cHM6Ly9naXRodWIuY29tL3Bhc2NhbG9saXY+Ci8vICAgICAgICAgICAgICAgICBNYXJ0aW4gSG9jaGVsIDxodHRwczovL2dpdGh1Yi5jb20vaG90ZWxsPgovLyAgICAgICAgICAgICAgICAgRnJhbmsgTGkgPGh0dHBzOi8vZ2l0aHViLmNvbS9mcmFua2xpeHVlZmVpPgovLyAgICAgICAgICAgICAgICAgSmVzc2ljYSBGcmFuY28gPGh0dHBzOi8vZ2l0aHViLmNvbS9KZXNzaWRoaWE+Ci8vICAgICAgICAgICAgICAgICBTYXJhbnNoIEthdGFyaWEgPGh0dHBzOi8vZ2l0aHViLmNvbS9zYXJhbnNoa2F0YXJpYT4KLy8gICAgICAgICAgICAgICAgIEthbml0a29ybiBTdWphdXRyYSA8aHR0cHM6Ly9naXRodWIuY29tL2x1a3l0aD4KLy8gICAgICAgICAgICAgICAgIFNlYmFzdGlhbiBTaWxiZXJtYW5uIDxodHRwczovL2dpdGh1Yi5jb20vZXBzMWxvbj4KLy8gICAgICAgICAgICAgICAgIEt5bGUgU2N1bGx5IDxodHRwczovL2dpdGh1Yi5jb20vemlla2E+Ci8vICAgICAgICAgICAgICAgICBDb25nIFpoYW5nIDxodHRwczovL2dpdGh1Yi5jb20vZGFuY2VycGhpbD4KLy8gICAgICAgICAgICAgICAgIERpbWl0cmkgTWl0cm9wb3Vsb3MgPGh0dHBzOi8vZ2l0aHViLmNvbS9kaW1pdHJvcG91bG9zPgovLyAgICAgICAgICAgICAgICAgSm9uZ0NoYW4gQ2hvaSA8aHR0cHM6Ly9naXRodWIuY29tL2Rpc2p1a3I+Ci8vICAgICAgICAgICAgICAgICBWaWN0b3IgTWFnYWxow6NlcyA8aHR0cHM6Ly9naXRodWIuY29tL3ZoZm1hZz4KLy8gICAgICAgICAgICAgICAgIERhbGUgVGFuIDxodHRwczovL2dpdGh1Yi5jb20vaGVsbGF0YW4+Ci8vICAgICAgICAgICAgICAgICBQcml5YW5zaHUgUmF2IDxodHRwczovL2dpdGh1Yi5jb20vcHJpeWFuc2h1cmF2PgovLyAgICAgICAgICAgICAgICAgRG1pdHJ5IFNlbWlncmFkc2t5IDxodHRwczovL2dpdGh1Yi5jb20vU2VtaWdyYWRza3k+Ci8vIERlZmluaXRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZAovLyBUeXBlU2NyaXB0IFZlcnNpb246IDIuOAoKLy8gTk9URTogVXNlcnMgb2YgdGhlIGBleHBlcmltZW50YWxgIGJ1aWxkcyBvZiBSZWFjdCBzaG91bGQgYWRkIGEgcmVmZXJlbmNlCi8vIHRvICdyZWFjdC9leHBlcmltZW50YWwnIGluIHRoZWlyIHByb2plY3QuIFNlZSBleHBlcmltZW50YWwuZC50cydzIHRvcCBjb21tZW50Ci8vIGZvciByZWZlcmVuY2UgYW5kIGRvY3VtZW50YXRpb24gb24gaG93IGV4YWN0bHkgdG8gZG8gaXQuCgovLy8gPHJlZmVyZW5jZSBwYXRoPSJnbG9iYWwuZC50cyIgLz4KCmltcG9ydCAqIGFzIENTUyBmcm9tICdjc3N0eXBlJzsKaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOwppbXBvcnQgeyBJbnRlcmFjdGlvbiBhcyBTY2hlZHVsZXJJbnRlcmFjdGlvbiB9IGZyb20gJ3NjaGVkdWxlci90cmFjaW5nJzsKCnR5cGUgTmF0aXZlQW5pbWF0aW9uRXZlbnQgPSBBbmltYXRpb25FdmVudDsKdHlwZSBOYXRpdmVDbGlwYm9hcmRFdmVudCA9IENsaXBib2FyZEV2ZW50Owp0eXBlIE5hdGl2ZUNvbXBvc2l0aW9uRXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50Owp0eXBlIE5hdGl2ZURyYWdFdmVudCA9IERyYWdFdmVudDsKdHlwZSBOYXRpdmVGb2N1c0V2ZW50ID0gRm9jdXNFdmVudDsKdHlwZSBOYXRpdmVLZXlib2FyZEV2ZW50ID0gS2V5Ym9hcmRFdmVudDsKdHlwZSBOYXRpdmVNb3VzZUV2ZW50ID0gTW91c2VFdmVudDsKdHlwZSBOYXRpdmVUb3VjaEV2ZW50ID0gVG91Y2hFdmVudDsKdHlwZSBOYXRpdmVQb2ludGVyRXZlbnQgPSBQb2ludGVyRXZlbnQ7CnR5cGUgTmF0aXZlVHJhbnNpdGlvbkV2ZW50ID0gVHJhbnNpdGlvbkV2ZW50Owp0eXBlIE5hdGl2ZVVJRXZlbnQgPSBVSUV2ZW50Owp0eXBlIE5hdGl2ZVdoZWVsRXZlbnQgPSBXaGVlbEV2ZW50Owp0eXBlIEJvb2xlYW5pc2ggPSBib29sZWFuIHwgJ3RydWUnIHwgJ2ZhbHNlJzsKCmRlY2xhcmUgY29uc3QgVU5ERUZJTkVEX1ZPSURfT05MWTogdW5pcXVlIHN5bWJvbDsKLy8gRGVzdHJ1Y3RvcnMgYXJlIG9ubHkgYWxsb3dlZCB0byByZXR1cm4gdm9pZC4KdHlwZSBEZXN0cnVjdG9yID0gKCkgPT4gdm9pZCB8IHsgW1VOREVGSU5FRF9WT0lEX09OTFldOiBuZXZlciB9Owp0eXBlIFZvaWRPclVuZGVmaW5lZE9ubHkgPSB2b2lkIHwgeyBbVU5ERUZJTkVEX1ZPSURfT05MWV06IG5ldmVyIH07CgovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LWp1c3QtbmFtZXNwYWNlCmV4cG9ydCA9IFJlYWN0OwpleHBvcnQgYXMgbmFtZXNwYWNlIFJlYWN0OwoKZGVjbGFyZSBuYW1lc3BhY2UgUmVhY3QgewogICAgLy8KICAgIC8vIFJlYWN0IEVsZW1lbnRzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBFbGVtZW50VHlwZTxQID0gYW55PiA9CiAgICAgICAgewogICAgICAgICAgICBbSyBpbiBrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHNdOiBQIGV4dGVuZHMgSlNYLkludHJpbnNpY0VsZW1lbnRzW0tdID8gSyA6IG5ldmVyCiAgICAgICAgfVtrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHNdIHwKICAgICAgICBDb21wb25lbnRUeXBlPFA+OwogICAgdHlwZSBDb21wb25lbnRUeXBlPFAgPSB7fT4gPSBDb21wb25lbnRDbGFzczxQPiB8IEZ1bmN0aW9uQ29tcG9uZW50PFA+OwoKICAgIHR5cGUgSlNYRWxlbWVudENvbnN0cnVjdG9yPFA+ID0KICAgICAgICB8ICgoCiAgICAgICAgICAgICAgcHJvcHM6IFAsCiAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvZG9jcy9sZWdhY3ktY29udGV4dC5odG1sI3JlZmVyZW5jaW5nLWNvbnRleHQtaW4tc3RhdGVsZXNzLWZ1bmN0aW9uLWNvbXBvbmVudHMKICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICBkZXByZWNhdGVkTGVnYWN5Q29udGV4dD86IGFueSwKICAgICAgICAgICkgPT4gUmVhY3ROb2RlKQogICAgICAgIHwgKG5ldyAoCiAgICAgICAgICAgICAgcHJvcHM6IFAsCiAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvZG9jcy9sZWdhY3ktY29udGV4dC5odG1sI3JlZmVyZW5jaW5nLWNvbnRleHQtaW4tbGlmZWN5Y2xlLW1ldGhvZHMKICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICBkZXByZWNhdGVkTGVnYWN5Q29udGV4dD86IGFueSwKICAgICAgICAgICkgPT4gQ29tcG9uZW50PGFueSwgYW55Pik7CgogICAgaW50ZXJmYWNlIFJlZk9iamVjdDxUPiB7CiAgICAgICAgcmVhZG9ubHkgY3VycmVudDogVCB8IG51bGw7CiAgICB9CiAgICAvLyBCaXZhcmlhbmNlIGhhY2sgZm9yIGNvbnNpc3RlbnQgdW5zb3VuZG5lc3Mgd2l0aCBSZWZPYmplY3QKICAgIHR5cGUgUmVmQ2FsbGJhY2s8VD4gPSB7IGJpdmFyaWFuY2VIYWNrKGluc3RhbmNlOiBUIHwgbnVsbCk6IHZvaWQgfVsiYml2YXJpYW5jZUhhY2siXTsKICAgIHR5cGUgUmVmPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWZPYmplY3Q8VD4gfCBudWxsOwogICAgdHlwZSBMZWdhY3lSZWY8VD4gPSBzdHJpbmcgfCBSZWY8VD47CiAgICAvKioKICAgICAqIEdldHMgdGhlIGluc3RhbmNlIHR5cGUgZm9yIGEgUmVhY3QgZWxlbWVudC4gVGhlIGluc3RhbmNlIHdpbGwgYmUgZGlmZmVyZW50IGZvciB2YXJpb3VzIGNvbXBvbmVudCB0eXBlczoKICAgICAqCiAgICAgKiAtIFJlYWN0IGNsYXNzIGNvbXBvbmVudHMgd2lsbCBiZSB0aGUgY2xhc3MgaW5zdGFuY2UuIFNvIGlmIHlvdSBoYWQgYGNsYXNzIEZvbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDx7fT4ge31gCiAgICAgKiAgIGFuZCB1c2VkIGBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBGb28+YCB0aGVuIHRoZSB0eXBlIHdvdWxkIGJlIHRoZSBpbnN0YW5jZSBvZiBgRm9vYC4KICAgICAqIC0gUmVhY3Qgc3RhdGVsZXNzIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBkbyBub3QgaGF2ZSBhIGJhY2tpbmcgaW5zdGFuY2UgYW5kIHNvIGBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBCYXI+YAogICAgICogICAod2hlbiBgQmFyYCBpcyBgZnVuY3Rpb24gQmFyKCkge31gKSB3aWxsIGdpdmUgeW91IHRoZSBgdW5kZWZpbmVkYCB0eXBlLgogICAgICogLSBKU1ggaW50cmluc2ljcyBsaWtlIGBkaXZgIHdpbGwgZ2l2ZSB5b3UgdGhlaXIgRE9NIGluc3RhbmNlLiBGb3IgYFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+YCB0aGF0IHdvdWxkIGJlCiAgICAgKiAgIGBIVE1MRGl2RWxlbWVudGAuIEZvciBgUmVhY3QuRWxlbWVudFJlZjwnaW5wdXQnPmAgdGhhdCB3b3VsZCBiZSBgSFRNTElucHV0RWxlbWVudGAuCiAgICAgKiAtIFJlYWN0IHN0YXRlbGVzcyBmdW5jdGlvbmFsIGNvbXBvbmVudHMgdGhhdCBmb3J3YXJkIGEgYHJlZmAgd2lsbCBnaXZlIHlvdSB0aGUgYEVsZW1lbnRSZWZgIG9mIHRoZSBmb3J3YXJkZWQKICAgICAqICAgdG8gY29tcG9uZW50LgogICAgICoKICAgICAqIGBDYCBtdXN0IGJlIHRoZSB0eXBlIF9vZl8gYSBSZWFjdCBjb21wb25lbnQgc28geW91IG5lZWQgdG8gdXNlIHR5cGVvZiBhcyBpbiBgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTXlDb21wb25lbnQ+YC4KICAgICAqCiAgICAgKiBAdG9kbyBJbiBGbG93LCB0aGlzIHdvcmtzIGEgbGl0dGxlIGRpZmZlcmVudCB3aXRoIGZvcndhcmRlZCByZWZzIGFuZCB0aGUgYEFic3RyYWN0Q29tcG9uZW50YCB0aGF0CiAgICAgKiAgICAgICBgUmVhY3QuZm9yd2FyZFJlZigpYCByZXR1cm5zLgogICAgICovCiAgICB0eXBlIEVsZW1lbnRSZWY8CiAgICAgICAgQyBleHRlbmRzCiAgICAgICAgICAgIHwgRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxhbnk+CiAgICAgICAgICAgIHwgeyBuZXcgKHByb3BzOiBhbnkpOiBDb21wb25lbnQ8YW55PiB9CiAgICAgICAgICAgIHwgKChwcm9wczogYW55LCBjb250ZXh0PzogYW55KSA9PiBSZWFjdE5vZGUpCiAgICAgICAgICAgIHwga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzCiAgICA+ID0KICAgICAgICAvLyBuZWVkIHRvIGNoZWNrIGZpcnN0IGlmIGByZWZgIGlzIGEgdmFsaWQgcHJvcCBmb3IgdHNAMy4wCiAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgaW5mZXIgYHt9YCBpbnN0ZWFkIG9mIGBuZXZlcmAKICAgICAgICAicmVmIiBleHRlbmRzIGtleW9mIENvbXBvbmVudFByb3BzV2l0aFJlZjxDPgogICAgICAgICAgICA/IE5vbk51bGxhYmxlPENvbXBvbmVudFByb3BzV2l0aFJlZjxDPlsicmVmIl0+IGV4dGVuZHMgUmVmPAogICAgICAgICAgICAgICAgaW5mZXIgSW5zdGFuY2UKICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPyBJbnN0YW5jZQogICAgICAgICAgICAgICAgOiBuZXZlcgogICAgICAgICAgICA6IG5ldmVyOwoKICAgIHR5cGUgQ29tcG9uZW50U3RhdGUgPSBhbnk7CgogICAgdHlwZSBLZXkgPSBzdHJpbmcgfCBudW1iZXI7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwgWW91IHNob3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHR5cGUgc2luY2UgeW91IG5ldmVyIHNlZSB0aGVzZSBhdHRyaWJ1dGVzCiAgICAgKiBpbnNpZGUgeW91ciBjb21wb25lbnQgb3IgaGF2ZSB0byB2YWxpZGF0ZSB0aGVtLgogICAgICovCiAgICBpbnRlcmZhY2UgQXR0cmlidXRlcyB7CiAgICAgICAga2V5PzogS2V5IHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgIH0KICAgIGludGVyZmFjZSBSZWZBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgQXR0cmlidXRlcyB7CiAgICAgICAgLyoqCiAgICAgICAgICogQWxsb3dzIGdldHRpbmcgYSByZWYgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4KICAgICAgICAgKiBPbmNlIHRoZSBjb21wb25lbnQgdW5tb3VudHMsIFJlYWN0IHdpbGwgc2V0IGByZWYuY3VycmVudGAgdG8gYG51bGxgIChvciBjYWxsIHRoZSByZWYgd2l0aCBgbnVsbGAgaWYgeW91IHBhc3NlZCBhIGNhbGxiYWNrIHJlZikuCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9sZWFybi9yZWZlcmVuY2luZy12YWx1ZXMtd2l0aC1yZWZzI3JlZnMtYW5kLXRoZS1kb20KICAgICAgICAgKi8KICAgICAgICByZWY/OiBSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CiAgICBpbnRlcmZhY2UgQ2xhc3NBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgQXR0cmlidXRlcyB7CiAgICAgICAgLyoqCiAgICAgICAgICogQWxsb3dzIGdldHRpbmcgYSByZWYgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4KICAgICAgICAgKiBPbmNlIHRoZSBjb21wb25lbnQgdW5tb3VudHMsIFJlYWN0IHdpbGwgc2V0IGByZWYuY3VycmVudGAgdG8gYG51bGxgIChvciBjYWxsIHRoZSByZWYgd2l0aCBgbnVsbGAgaWYgeW91IHBhc3NlZCBhIGNhbGxiYWNrIHJlZikuCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9sZWFybi9yZWZlcmVuY2luZy12YWx1ZXMtd2l0aC1yZWZzI3JlZnMtYW5kLXRoZS1kb20KICAgICAgICAgKi8KICAgICAgICByZWY/OiBMZWdhY3lSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFJlYWN0RWxlbWVudDxQID0gYW55LCBUIGV4dGVuZHMgc3RyaW5nIHwgSlNYRWxlbWVudENvbnN0cnVjdG9yPGFueT4gPSBzdHJpbmcgfCBKU1hFbGVtZW50Q29uc3RydWN0b3I8YW55Pj4gewogICAgICAgIHR5cGU6IFQ7CiAgICAgICAgcHJvcHM6IFA7CiAgICAgICAga2V5OiBLZXkgfCBudWxsOwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdENvbXBvbmVudEVsZW1lbnQ8CiAgICAgICAgVCBleHRlbmRzIGtleW9mIEpTWC5JbnRyaW5zaWNFbGVtZW50cyB8IEpTWEVsZW1lbnRDb25zdHJ1Y3Rvcjxhbnk+LAogICAgICAgIFAgPSBQaWNrPENvbXBvbmVudFByb3BzPFQ+LCBFeGNsdWRlPGtleW9mIENvbXBvbmVudFByb3BzPFQ+LCAna2V5JyB8ICdyZWYnPj4KICAgID4gZXh0ZW5kcyBSZWFjdEVsZW1lbnQ8UCwgRXhjbHVkZTxULCBudW1iZXI+PiB7IH0KCiAgICBpbnRlcmZhY2UgRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+IGV4dGVuZHMgUmVhY3RFbGVtZW50PFAsIEZ1bmN0aW9uQ29tcG9uZW50PFA+PiB7CiAgICAgICAgcmVmPzogKCdyZWYnIGV4dGVuZHMga2V5b2YgUCA/IFAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfCB1bmRlZmluZWQgfSA/IFIgOiBuZXZlciA6IG5ldmVyKSB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIENFbGVtZW50PFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PiA9IENvbXBvbmVudEVsZW1lbnQ8UCwgVD47CiAgICBpbnRlcmZhY2UgQ29tcG9uZW50RWxlbWVudDxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gZXh0ZW5kcyBSZWFjdEVsZW1lbnQ8UCwgQ29tcG9uZW50Q2xhc3M8UD4+IHsKICAgICAgICByZWY/OiBMZWdhY3lSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgdHlwZSBDbGFzc2ljRWxlbWVudDxQPiA9IENFbGVtZW50PFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PjsKCiAgICAvLyBzdHJpbmcgZmFsbGJhY2sgZm9yIGN1c3RvbSB3ZWItY29tcG9uZW50cwogICAgaW50ZXJmYWNlIERPTUVsZW1lbnQ8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHwgU1ZHQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgUmVhY3RFbGVtZW50PFAsIHN0cmluZz4gewogICAgICAgIHJlZjogTGVnYWN5UmVmPFQ+OwogICAgfQoKICAgIC8vIFJlYWN0SFRNTCBmb3IgUmVhY3RIVE1MRWxlbWVudAogICAgaW50ZXJmYWNlIFJlYWN0SFRNTEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50PiBleHRlbmRzIERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxBbGxIVE1MQXR0cmlidXRlczxUPiwgVD4geyB9CgogICAgaW50ZXJmYWNlIERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gZXh0ZW5kcyBET01FbGVtZW50PFAsIFQ+IHsKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdEhUTUw7CiAgICB9CgogICAgLy8gUmVhY3RTVkcgZm9yIFJlYWN0U1ZHRWxlbWVudAogICAgaW50ZXJmYWNlIFJlYWN0U1ZHRWxlbWVudCBleHRlbmRzIERPTUVsZW1lbnQ8U1ZHQXR0cmlidXRlczxTVkdFbGVtZW50PiwgU1ZHRWxlbWVudD4gewogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0U1ZHOwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdFBvcnRhbCBleHRlbmRzIFJlYWN0RWxlbWVudCB7CiAgICAgICAga2V5OiBLZXkgfCBudWxsOwogICAgICAgIGNoaWxkcmVuOiBSZWFjdE5vZGU7CiAgICB9CgogICAgLy8KICAgIC8vIEZhY3RvcmllcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgRmFjdG9yeTxQPiA9IChwcm9wcz86IEF0dHJpYnV0ZXMgJiBQLCAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pID0+IFJlYWN0RWxlbWVudDxQPjsKCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEZ1bmN0aW9uQ29tcG9uZW50RmFjdG9yeWAKICAgICAqLwogICAgdHlwZSBTRkNGYWN0b3J5PFA+ID0gRnVuY3Rpb25Db21wb25lbnRGYWN0b3J5PFA+OwoKICAgIHR5cGUgRnVuY3Rpb25Db21wb25lbnRGYWN0b3J5PFA+ID0gKHByb3BzPzogQXR0cmlidXRlcyAmIFAsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+OwoKICAgIHR5cGUgQ29tcG9uZW50RmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gPQogICAgICAgIChwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gQ0VsZW1lbnQ8UCwgVD47CgogICAgdHlwZSBDRmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gPSBDb21wb25lbnRGYWN0b3J5PFAsIFQ+OwogICAgdHlwZSBDbGFzc2ljRmFjdG9yeTxQPiA9IENGYWN0b3J5PFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PjsKCiAgICB0eXBlIERPTUZhY3Rvcnk8UCBleHRlbmRzIERPTUF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBFbGVtZW50PiA9CiAgICAgICAgKHByb3BzPzogQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgUCB8IG51bGwsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gRE9NRWxlbWVudDxQLCBUPjsKCiAgICBpbnRlcmZhY2UgSFRNTEZhY3Rvcnk8VCBleHRlbmRzIEhUTUxFbGVtZW50PiBleHRlbmRzIERldGFpbGVkSFRNTEZhY3Rvcnk8QWxsSFRNTEF0dHJpYnV0ZXM8VD4sIFQ+IHt9CgogICAgaW50ZXJmYWNlIERldGFpbGVkSFRNTEZhY3Rvcnk8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+IGV4dGVuZHMgRE9NRmFjdG9yeTxQLCBUPiB7CiAgICAgICAgKHByb3BzPzogQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgUCB8IG51bGwsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIH0KCiAgICBpbnRlcmZhY2UgU1ZHRmFjdG9yeSBleHRlbmRzIERPTUZhY3Rvcnk8U1ZHQXR0cmlidXRlczxTVkdFbGVtZW50PiwgU1ZHRWxlbWVudD4gewogICAgICAgIChwcm9wcz86IENsYXNzQXR0cmlidXRlczxTVkdFbGVtZW50PiAmIFNWR0F0dHJpYnV0ZXM8U1ZHRWxlbWVudD4gfCBudWxsLCAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBSZWFjdFNWR0VsZW1lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIFRoaXMgdHlwZSBpcyBub3QgcmVsZXZhbnQgd2hlbiB1c2luZyBSZWFjdC4gSW5saW5lIHRoZSB0eXBlIGluc3RlYWQgdG8gbWFrZSB0aGUgaW50ZW50IGNsZWFyLgogICAgICovCiAgICB0eXBlIFJlYWN0VGV4dCA9IHN0cmluZyB8IG51bWJlcjsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgLSBUaGlzIHR5cGUgaXMgbm90IHJlbGV2YW50IHdoZW4gdXNpbmcgUmVhY3QuIElubGluZSB0aGUgdHlwZSBpbnN0ZWFkIHRvIG1ha2UgdGhlIGludGVudCBjbGVhci4KICAgICAqLwogICAgdHlwZSBSZWFjdENoaWxkID0gUmVhY3RFbGVtZW50IHwgc3RyaW5nIHwgbnVtYmVyOwoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgVXNlIGVpdGhlciBgUmVhY3ROb2RlW11gIGlmIHlvdSBuZWVkIGFuIGFycmF5IG9yIGBJdGVyYWJsZTxSZWFjdE5vZGU+YCBpZiBpdHMgcGFzc2VkIHRvIGEgaG9zdCBjb21wb25lbnQuCiAgICAgKi8KICAgIGludGVyZmFjZSBSZWFjdE5vZGVBcnJheSBleHRlbmRzIFJlYWRvbmx5QXJyYXk8UmVhY3ROb2RlPiB7fQogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIFRoaXMgdHlwZSBpcyBub3QgcmVsZXZhbnQgd2hlbiB1c2luZyBSZWFjdC4gSW5saW5lIHRoZSB0eXBlIGluc3RlYWQgdG8gbWFrZSB0aGUgaW50ZW50IGNsZWFyLgogICAgICovCiAgICB0eXBlIFJlYWN0RnJhZ21lbnQgPSBJdGVyYWJsZTxSZWFjdE5vZGU+OwoKICAgIC8qKgogICAgICogRm9yIGludGVybmFsIHVzYWdlIG9ubHkuCiAgICAgKiBEaWZmZXJlbnQgcmVsZWFzZSBjaGFubmVscyBkZWNsYXJlIGFkZGl0aW9uYWwgdHlwZXMgb2YgUmVhY3ROb2RlIHRoaXMgcGFydGljdWxhciByZWxlYXNlIGNoYW5uZWwgYWNjZXB0cy4KICAgICAqIEFwcCBvciBsaWJyYXJ5IHR5cGVzIHNob3VsZCBuZXZlciBhdWdtZW50IHRoaXMgaW50ZXJmYWNlLgogICAgICovCiAgICBpbnRlcmZhY2UgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfUkVBQ1RfTk9ERVMge30KICAgIHR5cGUgUmVhY3ROb2RlID0KICAgICAgICB8IFJlYWN0RWxlbWVudAogICAgICAgIHwgc3RyaW5nCiAgICAgICAgfCBudW1iZXIKICAgICAgICB8IEl0ZXJhYmxlPFJlYWN0Tm9kZT4KICAgICAgICB8IFJlYWN0UG9ydGFsCiAgICAgICAgfCBib29sZWFuCiAgICAgICAgfCBudWxsCiAgICAgICAgfCB1bmRlZmluZWQKICAgICAgICB8IERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX1JFQUNUX05PREVTW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX1JFQUNUX05PREVTXTsKCiAgICAvLwogICAgLy8gVG9wIExldmVsIEFQSQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIC8vIERPTSBFbGVtZW50cwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KAogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0SFRNTCk6IEhUTUxGYWN0b3J5PFQ+OwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeSgKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdFNWRyk6IFNWR0ZhY3Rvcnk7CiAgICBmdW5jdGlvbiBjcmVhdGVGYWN0b3J5PFAgZXh0ZW5kcyBET01BdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgRWxlbWVudD4oCiAgICAgICAgdHlwZTogc3RyaW5nKTogRE9NRmFjdG9yeTxQLCBUPjsKCiAgICAvLyBDdXN0b20gY29tcG9uZW50cwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxQPih0eXBlOiBGdW5jdGlvbkNvbXBvbmVudDxQPik6IEZ1bmN0aW9uQ29tcG9uZW50RmFjdG9yeTxQPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhY3Rvcnk8UD4oCiAgICAgICAgdHlwZTogQ2xhc3NUeXBlPFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDbGFzc2ljQ29tcG9uZW50Q2xhc3M8UD4+KTogQ0ZhY3Rvcnk8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+OwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPiwgQyBleHRlbmRzIENvbXBvbmVudENsYXNzPFA+PigKICAgICAgICB0eXBlOiBDbGFzc1R5cGU8UCwgVCwgQz4pOiBDRmFjdG9yeTxQLCBUPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhY3Rvcnk8UD4odHlwZTogQ29tcG9uZW50Q2xhc3M8UD4pOiBGYWN0b3J5PFA+OwoKICAgIC8vIERPTSBFbGVtZW50cwogICAgLy8gVE9ETzogZ2VuZXJhbGl6ZSB0aGlzIHRvIGV2ZXJ5dGhpbmcgaW4gYGtleW9mIFJlYWN0SFRNTGAsIG5vdCBqdXN0ICJpbnB1dCIKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoCiAgICAgICAgdHlwZTogImlucHV0IiwKICAgICAgICBwcm9wcz86IElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gJiBDbGFzc0F0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KAogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0SFRNTCwKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIFNWR0F0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBTVkdFbGVtZW50PigKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdFNWRywKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IFJlYWN0U1ZHRWxlbWVudDsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIERPTUF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBFbGVtZW50PigKICAgICAgICB0eXBlOiBzdHJpbmcsCiAgICAgICAgcHJvcHM/OiBDbGFzc0F0dHJpYnV0ZXM8VD4gJiBQIHwgbnVsbCwKICAgICAgICAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBET01FbGVtZW50PFAsIFQ+OwoKICAgIC8vIEN1c3RvbSBjb21wb25lbnRzCgogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30+KAogICAgICAgIHR5cGU6IEZ1bmN0aW9uQ29tcG9uZW50PFA+LAogICAgICAgIHByb3BzPzogQXR0cmlidXRlcyAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IEZ1bmN0aW9uQ29tcG9uZW50RWxlbWVudDxQPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIHt9PigKICAgICAgICB0eXBlOiBDbGFzc1R5cGU8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4sIENsYXNzaWNDb21wb25lbnRDbGFzczxQPj4sCiAgICAgICAgcHJvcHM/OiBDbGFzc0F0dHJpYnV0ZXM8Q2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+ICYgUCB8IG51bGwsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogQ0VsZW1lbnQ8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+OwogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30sIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDIGV4dGVuZHMgQ29tcG9uZW50Q2xhc3M8UD4+KAogICAgICAgIHR5cGU6IENsYXNzVHlwZTxQLCBULCBDPiwKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IENFbGVtZW50PFAsIFQ+OwogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30+KAogICAgICAgIHR5cGU6IEZ1bmN0aW9uQ29tcG9uZW50PFA+IHwgQ29tcG9uZW50Q2xhc3M8UD4gfCBzdHJpbmcsCiAgICAgICAgcHJvcHM/OiBBdHRyaWJ1dGVzICYgUCB8IG51bGwsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIERPTSBFbGVtZW50cwogICAgLy8gUmVhY3RIVE1MRWxlbWVudAogICAgZnVuY3Rpb24gY2xvbmVFbGVtZW50PFAgZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEhUTUxFbGVtZW50PigKICAgICAgICBlbGVtZW50OiBEZXRhaWxlZFJlYWN0SFRNTEVsZW1lbnQ8UCwgVD4sCiAgICAgICAgcHJvcHM/OiBQLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIC8vIFJlYWN0SFRNTEVsZW1lbnQsIGxlc3Mgc3BlY2lmaWMKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oCiAgICAgICAgZWxlbWVudDogUmVhY3RIVE1MRWxlbWVudDxUPiwKICAgICAgICBwcm9wcz86IFAsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RIVE1MRWxlbWVudDxUPjsKICAgIC8vIFNWR0VsZW1lbnQKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgU1ZHQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIFNWR0VsZW1lbnQ+KAogICAgICAgIGVsZW1lbnQ6IFJlYWN0U1ZHRWxlbWVudCwKICAgICAgICBwcm9wcz86IFAsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RTVkdFbGVtZW50OwogICAgLy8gRE9NIEVsZW1lbnQgKGhhcyB0byBiZSB0aGUgbGFzdCwgYmVjYXVzZSB0eXBlIGNoZWNraW5nIHN0b3BzIGF0IGZpcnN0IG92ZXJsb2FkIHRoYXQgZml0cykKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgRE9NQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEVsZW1lbnQ+KAogICAgICAgIGVsZW1lbnQ6IERPTUVsZW1lbnQ8UCwgVD4sCiAgICAgICAgcHJvcHM/OiBET01BdHRyaWJ1dGVzPFQ+ICYgUCwKICAgICAgICAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBET01FbGVtZW50PFAsIFQ+OwoKICAgIC8vIEN1c3RvbSBjb21wb25lbnRzCiAgICBmdW5jdGlvbiBjbG9uZUVsZW1lbnQ8UD4oCiAgICAgICAgZWxlbWVudDogRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+LAogICAgICAgIHByb3BzPzogUGFydGlhbDxQPiAmIEF0dHJpYnV0ZXMsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+OwogICAgZnVuY3Rpb24gY2xvbmVFbGVtZW50PFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PigKICAgICAgICBlbGVtZW50OiBDRWxlbWVudDxQLCBUPiwKICAgICAgICBwcm9wcz86IFBhcnRpYWw8UD4gJiBDbGFzc0F0dHJpYnV0ZXM8VD4sCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogQ0VsZW1lbnQ8UCwgVD47CiAgICBmdW5jdGlvbiBjbG9uZUVsZW1lbnQ8UD4oCiAgICAgICAgZWxlbWVudDogUmVhY3RFbGVtZW50PFA+LAogICAgICAgIHByb3BzPzogUGFydGlhbDxQPiAmIEF0dHJpYnV0ZXMsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIENvbnRleHQgdmlhIFJlbmRlclByb3BzCiAgICBpbnRlcmZhY2UgUHJvdmlkZXJQcm9wczxUPiB7CiAgICAgICAgdmFsdWU6IFQ7CiAgICAgICAgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbnN1bWVyUHJvcHM8VD4gewogICAgICAgIGNoaWxkcmVuOiAodmFsdWU6IFQpID0+IFJlYWN0Tm9kZTsKICAgIH0KCiAgICAvLyBUT0RPOiBzaW1pbGFyIHRvIGhvdyBGcmFnbWVudCBpcyBhY3R1YWxseSBhIHN5bWJvbCwgdGhlIHZhbHVlcyByZXR1cm5lZCBmcm9tIGNyZWF0ZUNvbnRleHQsCiAgICAvLyBmb3J3YXJkUmVmIGFuZCBtZW1vIGFyZSBhY3R1YWxseSBvYmplY3RzIHRoYXQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5IGJ5IHRoZSByZW5kZXJlcjsgc2VlOgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvdjE2LjYuMC9wYWNrYWdlcy9yZWFjdC9zcmMvUmVhY3RDb250ZXh0LmpzI0wzNS1MNDgKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL3YxNi42LjAvcGFja2FnZXMvcmVhY3Qvc3JjL2ZvcndhcmRSZWYuanMjTDQyLUw0NQogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvdjE2LjYuMC9wYWNrYWdlcy9yZWFjdC9zcmMvbWVtby5qcyNMMjctTDMxCiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIG5vIHdheSBvZiB0ZWxsaW5nIHRoZSBKU1ggcGFyc2VyIHRoYXQgaXQncyBhIEpTWCBlbGVtZW50IHR5cGUgb3IgaXRzIHByb3BzIG90aGVyIHRoYW4KICAgIC8vIGJ5IHByZXRlbmRpbmcgdG8gYmUgYSBub3JtYWwgY29tcG9uZW50LgogICAgLy8KICAgIC8vIFdlIGRvbid0IGp1c3QgdXNlIENvbXBvbmVudFR5cGUgb3IgRnVuY3Rpb25Db21wb25lbnQgdHlwZXMgYmVjYXVzZSB5b3UgYXJlIG5vdCBzdXBwb3NlZCB0byBhdHRhY2ggc3RhdGljcyB0byB0aGlzCiAgICAvLyBvYmplY3QsIGJ1dCByYXRoZXIgdG8gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLgogICAgaW50ZXJmYWNlIEV4b3RpY0NvbXBvbmVudDxQID0ge30+IHsKICAgICAgICAvKioKICAgICAgICAgKiAqKk5PVEUqKjogRXhvdGljIGNvbXBvbmVudHMgYXJlIG5vdCBjYWxsYWJsZS4KICAgICAgICAgKi8KICAgICAgICAocHJvcHM6IFApOiBSZWFjdE5vZGU7CiAgICAgICAgcmVhZG9ubHkgJCR0eXBlb2Y6IHN5bWJvbDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTmFtZWRFeG90aWNDb21wb25lbnQ8UCA9IHt9PiBleHRlbmRzIEV4b3RpY0NvbXBvbmVudDxQPiB7CiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFByb3ZpZGVyRXhvdGljQ29tcG9uZW50PFA+IGV4dGVuZHMgRXhvdGljQ29tcG9uZW50PFA+IHsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIENvbnRleHRUeXBlPEMgZXh0ZW5kcyBDb250ZXh0PGFueT4+ID0gQyBleHRlbmRzIENvbnRleHQ8aW5mZXIgVD4gPyBUIDogbmV2ZXI7CgogICAgLy8gTk9URTogb25seSB0aGUgQ29udGV4dCBvYmplY3QgaXRzZWxmIGNhbiBnZXQgYSBkaXNwbGF5TmFtZQogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0LWRldnRvb2xzL2Jsb2IvZTBiODU0ZTRjL2JhY2tlbmQvYXR0YWNoUmVuZGVyZXJGaWJlci5qcyNMMzEwLUwzMjUKICAgIHR5cGUgUHJvdmlkZXI8VD4gPSBQcm92aWRlckV4b3RpY0NvbXBvbmVudDxQcm92aWRlclByb3BzPFQ+PjsKICAgIHR5cGUgQ29uc3VtZXI8VD4gPSBFeG90aWNDb21wb25lbnQ8Q29uc3VtZXJQcm9wczxUPj47CiAgICBpbnRlcmZhY2UgQ29udGV4dDxUPiB7CiAgICAgICAgUHJvdmlkZXI6IFByb3ZpZGVyPFQ+OwogICAgICAgIENvbnN1bWVyOiBDb25zdW1lcjxUPjsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQ8VD4oCiAgICAgICAgLy8gSWYgeW91IHRob3VnaHQgdGhpcyBzaG91bGQgYmUgb3B0aW9uYWwsIHNlZQogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL3B1bGwvMjQ1MDkjaXNzdWVjb21tZW50LTM4MjIxMzEwNgogICAgICAgIGRlZmF1bHRWYWx1ZTogVCwKICAgICk6IENvbnRleHQ8VD47CgogICAgZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQ8UD4ob2JqZWN0OiB7fSB8IG51bGwgfCB1bmRlZmluZWQpOiBvYmplY3QgaXMgUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIFN5bmMgd2l0aCBgUmVhY3RDaGlsZHJlbmAgdW50aWwgYFJlYWN0Q2hpbGRyZW5gIGlzIHJlbW92ZWQuCiAgICBjb25zdCBDaGlsZHJlbjogewogICAgICAgIG1hcDxULCBDPihjaGlsZHJlbjogQyB8IFJlYWRvbmx5QXJyYXk8Qz4sIGZuOiAoY2hpbGQ6IEMsIGluZGV4OiBudW1iZXIpID0+IFQpOgogICAgICAgICAgICBDIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IEMgOiBBcnJheTxFeGNsdWRlPFQsIGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPj47CiAgICAgICAgZm9yRWFjaDxDPihjaGlsZHJlbjogQyB8IFJlYWRvbmx5QXJyYXk8Qz4sIGZuOiAoY2hpbGQ6IEMsIGluZGV4OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkOwogICAgICAgIGNvdW50KGNoaWxkcmVuOiBhbnkpOiBudW1iZXI7CiAgICAgICAgb25seTxDPihjaGlsZHJlbjogQyk6IEMgZXh0ZW5kcyBhbnlbXSA/IG5ldmVyIDogQzsKICAgICAgICB0b0FycmF5KGNoaWxkcmVuOiBSZWFjdE5vZGUgfCBSZWFjdE5vZGVbXSk6IEFycmF5PEV4Y2x1ZGU8UmVhY3ROb2RlLCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZD4+OwogICAgfTsKICAgIGNvbnN0IEZyYWdtZW50OiBFeG90aWNDb21wb25lbnQ8eyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZCB9PjsKICAgIGNvbnN0IFN0cmljdE1vZGU6IEV4b3RpY0NvbXBvbmVudDx7IGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgdW5kZWZpbmVkIH0+OwoKICAgIGludGVyZmFjZSBTdXNwZW5zZVByb3BzIHsKICAgICAgICBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZDsKCiAgICAgICAgLyoqIEEgZmFsbGJhY2sgcmVhY3QgdHJlZSB0byBzaG93IHdoZW4gYSBTdXNwZW5zZSBjaGlsZCAobGlrZSBSZWFjdC5sYXp5KSBzdXNwZW5kcyAqLwogICAgICAgIGZhbGxiYWNrPzogUmVhY3ROb2RlOwogICAgfQoKICAgIGNvbnN0IFN1c3BlbnNlOiBFeG90aWNDb21wb25lbnQ8U3VzcGVuc2VQcm9wcz47CiAgICBjb25zdCB2ZXJzaW9uOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiB7QGxpbmsgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L1Byb2ZpbGVyI29ucmVuZGVyLWNhbGxiYWNrIFByb2ZpbGVyIEFQSX0KICAgICAqLwogICAgdHlwZSBQcm9maWxlck9uUmVuZGVyQ2FsbGJhY2sgPSAoCiAgICAgICAgaWQ6IHN0cmluZywKICAgICAgICBwaGFzZTogIm1vdW50IiB8ICJ1cGRhdGUiLAogICAgICAgIGFjdHVhbER1cmF0aW9uOiBudW1iZXIsCiAgICAgICAgYmFzZUR1cmF0aW9uOiBudW1iZXIsCiAgICAgICAgc3RhcnRUaW1lOiBudW1iZXIsCiAgICAgICAgY29tbWl0VGltZTogbnVtYmVyLAogICAgICAgIGludGVyYWN0aW9uczogU2V0PFNjaGVkdWxlckludGVyYWN0aW9uPiwKICAgICkgPT4gdm9pZDsKICAgIGludGVyZmFjZSBQcm9maWxlclByb3BzIHsKICAgICAgICBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZDsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIG9uUmVuZGVyOiBQcm9maWxlck9uUmVuZGVyQ2FsbGJhY2s7CiAgICB9CgogICAgY29uc3QgUHJvZmlsZXI6IEV4b3RpY0NvbXBvbmVudDxQcm9maWxlclByb3BzPjsKCiAgICAvLwogICAgLy8gQ29tcG9uZW50IEFQSQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgUmVhY3RJbnN0YW5jZSA9IENvbXBvbmVudDxhbnk+IHwgRWxlbWVudDsKCiAgICAvLyBCYXNlIGNvbXBvbmVudCBmb3IgcGxhaW4gSlMgY2xhc3NlcwogICAgaW50ZXJmYWNlIENvbXBvbmVudDxQID0ge30sIFMgPSB7fSwgU1MgPSBhbnk+IGV4dGVuZHMgQ29tcG9uZW50TGlmZWN5Y2xlPFAsIFMsIFNTPiB7IH0KICAgIGNsYXNzIENvbXBvbmVudDxQLCBTPiB7CiAgICAgICAgLy8gdHNsaW50IHdvbid0IGxldCBtZSBmb3JtYXQgdGhlIHNhbXBsZSBjb2RlIGluIGEgd2F5IHRoYXQgdnNjb2RlIGxpa2VzIGl0IDooCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgc2V0LCBgdGhpcy5jb250ZXh0YCB3aWxsIGJlIHNldCBhdCBydW50aW1lIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBnaXZlbiBDb250ZXh0LgogICAgICAgICAqCiAgICAgICAgICogVXNhZ2U6CiAgICAgICAgICoKICAgICAgICAgKiBgYGB0cwogICAgICAgICAqIHR5cGUgTXlDb250ZXh0ID0gbnVtYmVyCiAgICAgICAgICogY29uc3QgQ3R4ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxNeUNvbnRleHQ+KDApCiAgICAgICAgICoKICAgICAgICAgKiBjbGFzcyBGb28gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgICAqICAgc3RhdGljIGNvbnRleHRUeXBlID0gQ3R4CiAgICAgICAgICogICBjb250ZXh0ITogUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIEN0eD4KICAgICAgICAgKiAgIHJlbmRlciAoKSB7CiAgICAgICAgICogICAgIHJldHVybiA8Pk15IGNvbnRleHQncyB2YWx1ZToge3RoaXMuY29udGV4dH08Lz47CiAgICAgICAgICogICB9CiAgICAgICAgICogfQogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvQ29tcG9uZW50I3N0YXRpYy1jb250ZXh0dHlwZQogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBjb250ZXh0VHlwZT86IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgdXNpbmcgdGhlIG5ldyBzdHlsZSBjb250ZXh0LCByZS1kZWNsYXJlIHRoaXMgaW4geW91ciBjbGFzcyB0byBiZSB0aGUKICAgICAgICAgKiBgUmVhY3QuQ29udGV4dFR5cGVgIG9mIHlvdXIgYHN0YXRpYyBjb250ZXh0VHlwZWAuCiAgICAgICAgICogU2hvdWxkIGJlIHVzZWQgd2l0aCB0eXBlIGFubm90YXRpb24gb3Igc3RhdGljIGNvbnRleHRUeXBlLgogICAgICAgICAqCiAgICAgICAgICogYGBgdHMKICAgICAgICAgKiBzdGF0aWMgY29udGV4dFR5cGUgPSBNeUNvbnRleHQKICAgICAgICAgKiAvLyBGb3IgVFMgcHJlLTMuNzoKICAgICAgICAgKiBjb250ZXh0ITogUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIE15Q29udGV4dD4KICAgICAgICAgKiAvLyBGb3IgVFMgMy43IGFuZCBhYm92ZToKICAgICAgICAgKiBkZWNsYXJlIGNvbnRleHQ6IFJlYWN0LkNvbnRleHRUeXBlPHR5cGVvZiBNeUNvbnRleHQ+CiAgICAgICAgICogYGBgCiAgICAgICAgICoKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC9Db21wb25lbnQjY29udGV4dAogICAgICAgICAqLwogICAgICAgIGNvbnRleHQ6IHVua25vd247CgogICAgICAgIGNvbnN0cnVjdG9yKHByb3BzOiBSZWFkb25seTxQPiB8IFApOwogICAgICAgIC8qKgogICAgICAgICAqIEBkZXByZWNhdGVkCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9kb2NzL2xlZ2FjeS1jb250ZXh0Lmh0bWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwcm9wczogUCwgY29udGV4dDogYW55KTsKCiAgICAgICAgLy8gV2UgTVVTVCBrZWVwIHNldFN0YXRlKCkgYXMgYSB1bmlmaWVkIHNpZ25hdHVyZSBiZWNhdXNlIGl0IGFsbG93cyBwcm9wZXIgY2hlY2tpbmcgb2YgdGhlIG1ldGhvZCByZXR1cm4gdHlwZS4KICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2lzc3Vlcy8xODM2NSNpc3N1ZWNvbW1lbnQtMzUxMDEzMjU3CiAgICAgICAgLy8gQWxzbywgdGhlIGAgfCBTYCBhbGxvd3MgaW50ZWxsaXNlbnNlIHRvIG5vdCBiZSBkdW1iaXNlbnNlCiAgICAgICAgc2V0U3RhdGU8SyBleHRlbmRzIGtleW9mIFM+KAogICAgICAgICAgICBzdGF0ZTogKChwcmV2U3RhdGU6IFJlYWRvbmx5PFM+LCBwcm9wczogUmVhZG9ubHk8UD4pID0+IChQaWNrPFMsIEs+IHwgUyB8IG51bGwpKSB8IChQaWNrPFMsIEs+IHwgUyB8IG51bGwpLAogICAgICAgICAgICBjYWxsYmFjaz86ICgpID0+IHZvaWQKICAgICAgICApOiB2b2lkOwoKICAgICAgICBmb3JjZVVwZGF0ZShjYWxsYmFjaz86ICgpID0+IHZvaWQpOiB2b2lkOwogICAgICAgIHJlbmRlcigpOiBSZWFjdE5vZGU7CgogICAgICAgIHJlYWRvbmx5IHByb3BzOiBSZWFkb25seTxQPjsKICAgICAgICBzdGF0ZTogUmVhZG9ubHk8Uz47CiAgICAgICAgLyoqCiAgICAgICAgICogQGRlcHJlY2F0ZWQKICAgICAgICAgKiBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9kb2NzL3JlZnMtYW5kLXRoZS1kb20uaHRtbCNsZWdhY3ktYXBpLXN0cmluZy1yZWZzCiAgICAgICAgICovCiAgICAgICAgcmVmczogewogICAgICAgICAgICBba2V5OiBzdHJpbmddOiBSZWFjdEluc3RhbmNlCiAgICAgICAgfTsKICAgIH0KCiAgICBjbGFzcyBQdXJlQ29tcG9uZW50PFAgPSB7fSwgUyA9IHt9LCBTUyA9IGFueT4gZXh0ZW5kcyBDb21wb25lbnQ8UCwgUywgU1M+IHsgfQoKICAgIGludGVyZmFjZSBDbGFzc2ljQ29tcG9uZW50PFAgPSB7fSwgUyA9IHt9PiBleHRlbmRzIENvbXBvbmVudDxQLCBTPiB7CiAgICAgICAgcmVwbGFjZVN0YXRlKG5leHRTdGF0ZTogUywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZDsKICAgICAgICBpc01vdW50ZWQoKTogYm9vbGVhbjsKICAgICAgICBnZXRJbml0aWFsU3RhdGU/KCk6IFM7CiAgICB9CgogICAgaW50ZXJmYWNlIENoaWxkQ29udGV4dFByb3ZpZGVyPENDPiB7CiAgICAgICAgZ2V0Q2hpbGRDb250ZXh0KCk6IENDOwogICAgfQoKICAgIC8vCiAgICAvLyBDbGFzcyBJbnRlcmZhY2VzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBGQzxQID0ge30+ID0gRnVuY3Rpb25Db21wb25lbnQ8UD47CgogICAgaW50ZXJmYWNlIEZ1bmN0aW9uQ29tcG9uZW50PFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgY29udGV4dD86IGFueSk6IFJlYWN0Tm9kZTsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIC0gRXF1aXZhbGVudCB3aXRoIGBSZWFjdC5GQ2AuCiAgICAgKi8KICAgIHR5cGUgVkZDPFAgPSB7fT4gPSBWb2lkRnVuY3Rpb25Db21wb25lbnQ8UD47CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIEVxdWl2YWxlbnQgd2l0aCBgUmVhY3QuRnVuY3Rpb25Db21wb25lbnRgLgogICAgICovCiAgICBpbnRlcmZhY2UgVm9pZEZ1bmN0aW9uQ29tcG9uZW50PFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgY29udGV4dD86IGFueSk6IFJlYWN0Tm9kZTsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEZvcndhcmRlZFJlZjxUPiA9ICgoaW5zdGFuY2U6IFQgfCBudWxsKSA9PiB2b2lkKSB8IE11dGFibGVSZWZPYmplY3Q8VCB8IG51bGw+IHwgbnVsbDsKCiAgICBpbnRlcmZhY2UgRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFQsIFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgcmVmOiBGb3J3YXJkZWRSZWY8VD4pOiBSZWFjdE5vZGU7CiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLy8gZXhwbGljaXQgcmVqZWN0ZWQgd2l0aCBgbmV2ZXJgIHJlcXVpcmVkIGR1ZSB0bwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzY4MjYKICAgICAgICAvKioKICAgICAgICAgKiBkZWZhdWx0UHJvcHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gcmVuZGVyIGZ1bmN0aW9ucwogICAgICAgICAqLwogICAgICAgIGRlZmF1bHRQcm9wcz86IG5ldmVyIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIHByb3BUeXBlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiByZW5kZXIgZnVuY3Rpb25zCiAgICAgICAgICovCiAgICAgICAgcHJvcFR5cGVzPzogbmV2ZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbXBvbmVudENsYXNzPFAgPSB7fSwgUyA9IENvbXBvbmVudFN0YXRlPiBleHRlbmRzIFN0YXRpY0xpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgbmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSk6IENvbXBvbmVudDxQLCBTPjsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZT86IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgY2hpbGRDb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgQ2xhc3NpY0NvbXBvbmVudENsYXNzPFAgPSB7fT4gZXh0ZW5kcyBDb21wb25lbnRDbGFzczxQPiB7CiAgICAgICAgbmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSk6IENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+OwogICAgICAgIGdldERlZmF1bHRQcm9wcz8oKTogUDsKICAgIH0KCiAgICAvKioKICAgICAqIFdlIHVzZSBhbiBpbnRlcnNlY3Rpb24gdHlwZSB0byBpbmZlciBtdWx0aXBsZSB0eXBlIHBhcmFtZXRlcnMgZnJvbQogICAgICogYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgbWFueSB0b3AtbGV2ZWwgQVBJIGRlZnMuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MjM0IGZvciBtb3JlIGluZm8uCiAgICAgKi8KICAgIHR5cGUgQ2xhc3NUeXBlPFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDIGV4dGVuZHMgQ29tcG9uZW50Q2xhc3M8UD4+ID0KICAgICAgICBDICYKICAgICAgICAobmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSkgPT4gVCk7CgogICAgLy8KICAgIC8vIENvbXBvbmVudCBTcGVjcyBhbmQgTGlmZWN5Y2xlCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgLy8gVGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgc29tZXRoaW5nIGxpa2UgYExpZmVjeWNsZTxQLCBTPiB8IERlcHJlY2F0ZWRMaWZlY3ljbGU8UCwgUz5gLAogICAgLy8gYXMgUmVhY3Qgd2lsbCBfbm90XyBjYWxsIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGlmIGFueSBvZiB0aGUgbmV3IGxpZmVjeWNsZQogICAgLy8gbWV0aG9kcyBhcmUgcHJlc2VudC4KICAgIGludGVyZmFjZSBDb21wb25lbnRMaWZlY3ljbGU8UCwgUywgU1MgPSBhbnk+IGV4dGVuZHMgTmV3TGlmZWN5Y2xlPFAsIFMsIFNTPiwgRGVwcmVjYXRlZExpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgY29tcG9uZW50IGlzIG1vdW50ZWQuIFNldHRpbmcgc3RhdGUgaGVyZSB3aWxsIHRyaWdnZXIgcmUtcmVuZGVyaW5nLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudERpZE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hhbmdlIGluIHByb3BzIGFuZCBzdGF0ZSBzaG91bGQgdHJpZ2dlciBhIHJlLXJlbmRlci4KICAgICAgICAgKgogICAgICAgICAqIGBDb21wb25lbnRgIGFsd2F5cyByZXR1cm5zIHRydWUuCiAgICAgICAgICogYFB1cmVDb21wb25lbnRgIGltcGxlbWVudHMgYSBzaGFsbG93IGNvbXBhcmlzb24gb24gcHJvcHMgYW5kIHN0YXRlIGFuZCByZXR1cm5zIHRydWUgaWYgYW55CiAgICAgICAgICogcHJvcHMgb3Igc3RhdGVzIGhhdmUgY2hhbmdlZC4KICAgICAgICAgKgogICAgICAgICAqIElmIGZhbHNlIGlzIHJldHVybmVkLCBgQ29tcG9uZW50I3JlbmRlcmAsIGBjb21wb25lbnRXaWxsVXBkYXRlYAogICAgICAgICAqIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYCB3aWxsIG5vdCBiZSBjYWxsZWQuCiAgICAgICAgICovCiAgICAgICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogYm9vbGVhbjsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZC4gUGVyZm9ybSBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgaW4gdGhpcyBtZXRob2QsIHN1Y2ggYXMKICAgICAgICAgKiBjYW5jZWxsZWQgbmV0d29yayByZXF1ZXN0cywgb3IgY2xlYW5pbmcgdXAgYW55IERPTSBlbGVtZW50cyBjcmVhdGVkIGluIGBjb21wb25lbnREaWRNb3VudGAuCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbFVubW91bnQ/KCk6IHZvaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2F0Y2hlcyBleGNlcHRpb25zIGdlbmVyYXRlZCBpbiBkZXNjZW5kYW50IGNvbXBvbmVudHMuIFVuaGFuZGxlZCBleGNlcHRpb25zIHdpbGwgY2F1c2UKICAgICAgICAgKiB0aGUgZW50aXJlIGNvbXBvbmVudCB0cmVlIHRvIHVubW91bnQuCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50RGlkQ2F0Y2g/KGVycm9yOiBFcnJvciwgZXJyb3JJbmZvOiBFcnJvckluZm8pOiB2b2lkOwogICAgfQoKICAgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gd2F5IG9mIGRlY2xhcmluZyB0aGF0IHRoZSBjb21wb25lbnQgY29uc3RydWN0b3IgbXVzdCBpbXBsZW1lbnQgdGhpcwogICAgaW50ZXJmYWNlIFN0YXRpY0xpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPzogR2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPFAsIFM+IHwgdW5kZWZpbmVkOwogICAgICAgIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj86IEdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjxQLCBTPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczxQLCBTPiA9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiB1cGRhdGUgdG8gYSBjb21wb25lbnQncyBzdGF0ZSBiYXNlZCBvbiBpdHMgbmV3IHByb3BzIGFuZCBvbGQgc3RhdGUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiBpdHMgcHJlc2VuY2UgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGZyb20gYmVpbmcgaW52b2tlZAogICAgICAgICAqLwogICAgICAgIChuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBwcmV2U3RhdGU6IFMpID0+IFBhcnRpYWw8Uz4gfCBudWxsOwoKICAgIHR5cGUgR2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPFAsIFM+ID0KICAgICAgICAvKioKICAgICAgICAgKiBUaGlzIGxpZmVjeWNsZSBpcyBpbnZva2VkIGFmdGVyIGFuIGVycm9yIGhhcyBiZWVuIHRocm93biBieSBhIGRlc2NlbmRhbnQgY29tcG9uZW50LgogICAgICAgICAqIEl0IHJlY2VpdmVzIHRoZSBlcnJvciB0aGF0IHdhcyB0aHJvd24gYXMgYSBwYXJhbWV0ZXIgYW5kIHNob3VsZCByZXR1cm4gYSB2YWx1ZSB0byB1cGRhdGUgc3RhdGUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiBpdHMgcHJlc2VuY2UgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGZyb20gYmVpbmcgaW52b2tlZAogICAgICAgICAqLwogICAgICAgIChlcnJvcjogYW55KSA9PiBQYXJ0aWFsPFM+IHwgbnVsbDsKCiAgICAvLyBUaGlzIHNob3VsZCBiZSAiaW5mZXIgU1MiIGJ1dCBjYW4ndCB1c2UgaXQgeWV0CiAgICBpbnRlcmZhY2UgTmV3TGlmZWN5Y2xlPFAsIFMsIFNTPiB7CiAgICAgICAgLyoqCiAgICAgICAgICogUnVucyBiZWZvcmUgUmVhY3QgYXBwbGllcyB0aGUgcmVzdWx0IG9mIGByZW5kZXJgIHRvIHRoZSBkb2N1bWVudCwgYW5kCiAgICAgICAgICogcmV0dXJucyBhbiBvYmplY3QgdG8gYmUgZ2l2ZW4gdG8gY29tcG9uZW50RGlkVXBkYXRlLiBVc2VmdWwgZm9yIHNhdmluZwogICAgICAgICAqIHRoaW5ncyBzdWNoIGFzIHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgYHJlbmRlcmAgY2F1c2VzIGNoYW5nZXMgdG8gaXQuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkCiAgICAgICAgICogbGlmZWN5Y2xlIGV2ZW50cyBmcm9tIHJ1bm5pbmcuCiAgICAgICAgICovCiAgICAgICAgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU/KHByZXZQcm9wczogUmVhZG9ubHk8UD4sIHByZXZTdGF0ZTogUmVhZG9ubHk8Uz4pOiBTUyB8IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIG9jY3Vycy4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogVGhlIHNuYXBzaG90IGlzIG9ubHkgcHJlc2VudCBpZiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSBpcyBwcmVzZW50IGFuZCByZXR1cm5zIG5vbi1udWxsLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudERpZFVwZGF0ZT8ocHJldlByb3BzOiBSZWFkb25seTxQPiwgcHJldlN0YXRlOiBSZWFkb25seTxTPiwgc25hcHNob3Q/OiBTUyk6IHZvaWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIERlcHJlY2F0ZWRMaWZlY3ljbGU8UCwgUz4gewogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgbW91bnRpbmcgb2NjdXJzLCBhbmQgYmVmb3JlIGBDb21wb25lbnQjcmVuZGVyYC4KICAgICAgICAgKiBBdm9pZCBpbnRyb2R1Y2luZyBhbnkgc2lkZS1lZmZlY3RzIG9yIHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgY29tcG9uZW50RGlkTW91bnQgb3IgdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQ7IHdpbGwgc3RvcCB3b3JraW5nIGluIFJlYWN0IDE3CiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2luaXRpYWxpemluZy1zdGF0ZQogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNncmFkdWFsLW1pZ3JhdGlvbi1wYXRoCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgbW91bnRpbmcgb2NjdXJzLCBhbmQgYmVmb3JlIGBDb21wb25lbnQjcmVuZGVyYC4KICAgICAgICAgKiBBdm9pZCBpbnRyb2R1Y2luZyBhbnkgc2lkZS1lZmZlY3RzIG9yIHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIG5vdCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgY29tcG9uZW50RGlkTW91bnQgb3IgdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjaW5pdGlhbGl6aW5nLXN0YXRlCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2dyYWR1YWwtbWlncmF0aW9uLXBhdGgKICAgICAgICAgKi8KICAgICAgICBVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgbWF5IGJlIHJlY2VpdmluZyBuZXcgcHJvcHMuCiAgICAgICAgICogUmVhY3QgbWF5IGNhbGwgdGhpcyBldmVuIGlmIHByb3BzIGhhdmUgbm90IGNoYW5nZWQsIHNvIGJlIHN1cmUgdG8gY29tcGFyZSBuZXcgYW5kIGV4aXN0aW5nCiAgICAgICAgICogcHJvcHMgaWYgeW91IG9ubHkgd2FudCB0byBoYW5kbGUgY2hhbmdlcy4KICAgICAgICAgKgogICAgICAgICAqIENhbGxpbmcgYENvbXBvbmVudCNzZXRTdGF0ZWAgZ2VuZXJhbGx5IGRvZXMgbm90IHRyaWdnZXIgdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2Ugc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyBpbnN0ZWFkOyB3aWxsIHN0b3Agd29ya2luZyBpbiBSZWFjdCAxNwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCN1cGRhdGluZy1zdGF0ZS1iYXNlZC1vbi1wcm9wcwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNncmFkdWFsLW1pZ3JhdGlvbi1wYXRoCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz8obmV4dFByb3BzOiBSZWFkb25seTxQPiwgbmV4dENvbnRleHQ6IGFueSk6IHZvaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBtYXkgYmUgcmVjZWl2aW5nIG5ldyBwcm9wcy4KICAgICAgICAgKiBSZWFjdCBtYXkgY2FsbCB0aGlzIGV2ZW4gaWYgcHJvcHMgaGF2ZSBub3QgY2hhbmdlZCwgc28gYmUgc3VyZSB0byBjb21wYXJlIG5ldyBhbmQgZXhpc3RpbmcKICAgICAgICAgKiBwcm9wcyBpZiB5b3Ugb25seSB3YW50IHRvIGhhbmRsZSBjaGFuZ2VzLgogICAgICAgICAqCiAgICAgICAgICogQ2FsbGluZyBgQ29tcG9uZW50I3NldFN0YXRlYCBnZW5lcmFsbHkgZG9lcyBub3QgdHJpZ2dlciB0aGlzIG1ldGhvZC4KICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgbm90IHN0b3Agd29ya2luZyBpbiBSZWFjdCAxNy4KICAgICAgICAgKgogICAgICAgICAqIE5vdGU6IHRoZSBwcmVzZW5jZSBvZiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSBvciBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMKICAgICAgICAgKiBwcmV2ZW50cyB0aGlzIGZyb20gYmVpbmcgaW52b2tlZC4KICAgICAgICAgKgogICAgICAgICAqIEBkZXByZWNhdGVkIDE2LjMsIHVzZSBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIGluc3RlYWQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjdXBkYXRpbmctc3RhdGUtYmFzZWQtb24tcHJvcHMKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjZ3JhZHVhbC1taWdyYXRpb24tcGF0aAogICAgICAgICAqLwogICAgICAgIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHJlbmRlcmluZyB3aGVuIG5ldyBwcm9wcyBvciBzdGF0ZSBpcyByZWNlaXZlZC4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogTm90ZTogWW91IGNhbm5vdCBjYWxsIGBDb21wb25lbnQjc2V0U3RhdGVgIGhlcmUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgaW5zdGVhZDsgd2lsbCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjcmVhZGluZy1kb20tcHJvcGVydGllcy1iZWZvcmUtYW4tdXBkYXRlCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2dyYWR1YWwtbWlncmF0aW9uLXBhdGgKICAgICAgICAgKi8KICAgICAgICBjb21wb25lbnRXaWxsVXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHJlbmRlcmluZyB3aGVuIG5ldyBwcm9wcyBvciBzdGF0ZSBpcyByZWNlaXZlZC4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogTm90ZTogWW91IGNhbm5vdCBjYWxsIGBDb21wb25lbnQjc2V0U3RhdGVgIGhlcmUuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIG5vdCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgaW5zdGVhZAogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNyZWFkaW5nLWRvbS1wcm9wZXJ0aWVzLWJlZm9yZS1hbi11cGRhdGUKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjZ3JhZHVhbC1taWdyYXRpb24tcGF0aAogICAgICAgICAqLwogICAgICAgIFVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWl4aW48UCwgUz4gZXh0ZW5kcyBDb21wb25lbnRMaWZlY3ljbGU8UCwgUz4gewogICAgICAgIG1peGlucz86IEFycmF5PE1peGluPFAsIFM+PiB8IHVuZGVmaW5lZDsKICAgICAgICBzdGF0aWNzPzogewogICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKCiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcHJvcFR5cGVzPzogVmFsaWRhdGlvbk1hcDxhbnk+IHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHRUeXBlcz86IFZhbGlkYXRpb25NYXA8YW55PiB8IHVuZGVmaW5lZDsKICAgICAgICBjaGlsZENvbnRleHRUeXBlcz86IFZhbGlkYXRpb25NYXA8YW55PiB8IHVuZGVmaW5lZDsKCiAgICAgICAgZ2V0RGVmYXVsdFByb3BzPygpOiBQOwogICAgICAgIGdldEluaXRpYWxTdGF0ZT8oKTogUzsKICAgIH0KCiAgICBpbnRlcmZhY2UgQ29tcG9uZW50U3BlYzxQLCBTPiBleHRlbmRzIE1peGluPFAsIFM+IHsKICAgICAgICByZW5kZXIoKTogUmVhY3ROb2RlOwoKICAgICAgICBbcHJvcGVydHlOYW1lOiBzdHJpbmddOiBhbnk7CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlUmVmPFQ+KCk6IFJlZk9iamVjdDxUPjsKCiAgICAvLyB3aWxsIHNob3cgYEZvcndhcmRSZWYoJHtDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWV9KWAgaW4gZGV2dG9vbHMgYnkgZGVmYXVsdCwKICAgIC8vIGJ1dCBjYW4gYmUgZ2l2ZW4gaXRzIG93biBzcGVjaWZpYyBuYW1lCiAgICBpbnRlcmZhY2UgRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxQPiBleHRlbmRzIE5hbWVkRXhvdGljQ29tcG9uZW50PFA+IHsKICAgICAgICBkZWZhdWx0UHJvcHM/OiBQYXJ0aWFsPFA+IHwgdW5kZWZpbmVkOwogICAgICAgIHByb3BUeXBlcz86IFdlYWtWYWxpZGF0aW9uTWFwPFA+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIGZvcndhcmRSZWY8VCwgUCA9IHt9PihyZW5kZXI6IEZvcndhcmRSZWZSZW5kZXJGdW5jdGlvbjxULCBQPik6IEZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8UHJvcHNXaXRob3V0UmVmPFA+ICYgUmVmQXR0cmlidXRlczxUPj47CgogICAgLyoqIEVuc3VyZXMgdGhhdCB0aGUgcHJvcHMgZG8gbm90IGluY2x1ZGUgcmVmIGF0IGFsbCAqLwogICAgdHlwZSBQcm9wc1dpdGhvdXRSZWY8UD4gPQogICAgICAgIC8vIE9taXQgd291bGQgbm90IGJlIHN1ZmZpY2llbnQgZm9yIHRoaXMuIFdlJ2QgbGlrZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBtYXBwaW5nIGFuZCBuZWVkIGEgZGlzdHJpYnV0aXZlIGNvbmRpdGlvbmFsIHRvIHN1cHBvcnQgdW5pb25zLgogICAgICAgIC8vIHNlZTogaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9jb25kaXRpb25hbC10eXBlcy5odG1sI2Rpc3RyaWJ1dGl2ZS1jb25kaXRpb25hbC10eXBlcwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjgzMzkKICAgICAgICBQIGV4dGVuZHMgYW55ID8gKCdyZWYnIGV4dGVuZHMga2V5b2YgUCA/IE9taXQ8UCwgJ3JlZic+IDogUCkgOiBQOwogICAgLyoqIEVuc3VyZXMgdGhhdCB0aGUgcHJvcHMgZG8gbm90IGluY2x1ZGUgc3RyaW5nIHJlZiwgd2hpY2ggY2Fubm90IGJlIGZvcndhcmRlZCAqLwogICAgdHlwZSBQcm9wc1dpdGhSZWY8UD4gPQogICAgICAgIC8vIEp1c3QgIlAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfSIgbG9va3Mgc3VmZmljaWVudCwgYnV0IFIgd2lsbCBpbmZlciBhcyB7fSBpZiBQIGlzIHt9LgogICAgICAgICdyZWYnIGV4dGVuZHMga2V5b2YgUAogICAgICAgICAgICA/IFAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfCB1bmRlZmluZWQgfQogICAgICAgICAgICAgICAgPyBzdHJpbmcgZXh0ZW5kcyBSCiAgICAgICAgICAgICAgICAgICAgPyBQcm9wc1dpdGhvdXRSZWY8UD4gJiB7IHJlZj86IEV4Y2x1ZGU8Uiwgc3RyaW5nPiB8IHVuZGVmaW5lZCB9CiAgICAgICAgICAgICAgICAgICAgOiBQCiAgICAgICAgICAgICAgICA6IFAKICAgICAgICAgICAgOiBQOwoKICAgIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW48UCA9IHVua25vd24+ID0gUCAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfCB1bmRlZmluZWQgfTsKCiAgICAvKioKICAgICAqIE5PVEU6IHByZWZlciBDb21wb25lbnRQcm9wc1dpdGhSZWYsIGlmIHRoZSByZWYgaXMgZm9yd2FyZGVkLAogICAgICogb3IgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmIHdoZW4gcmVmcyBhcmUgbm90IHN1cHBvcnRlZC4KICAgICAqLwogICAgdHlwZSBDb21wb25lbnRQcm9wczxUIGV4dGVuZHMga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzIHwgSlNYRWxlbWVudENvbnN0cnVjdG9yPGFueT4+ID0KICAgICAgICBUIGV4dGVuZHMgSlNYRWxlbWVudENvbnN0cnVjdG9yPGluZmVyIFA+CiAgICAgICAgICAgID8gUAogICAgICAgICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHMKICAgICAgICAgICAgICAgID8gSlNYLkludHJpbnNpY0VsZW1lbnRzW1RdCiAgICAgICAgICAgICAgICA6IHt9OwogICAgdHlwZSBDb21wb25lbnRQcm9wc1dpdGhSZWY8VCBleHRlbmRzIEVsZW1lbnRUeXBlPiA9CiAgICAgICAgVCBleHRlbmRzIChuZXcgKHByb3BzOiBpbmZlciBQKSA9PiBDb21wb25lbnQ8YW55LCBhbnk+KQogICAgICAgICAgICA/IFByb3BzV2l0aG91dFJlZjxQPiAmIFJlZkF0dHJpYnV0ZXM8SW5zdGFuY2VUeXBlPFQ+PgogICAgICAgICAgICA6IFByb3BzV2l0aFJlZjxDb21wb25lbnRQcm9wczxUPj47CiAgICB0eXBlIENvbXBvbmVudFByb3BzV2l0aG91dFJlZjxUIGV4dGVuZHMgRWxlbWVudFR5cGU+ID0KICAgICAgICBQcm9wc1dpdGhvdXRSZWY8Q29tcG9uZW50UHJvcHM8VD4+OwoKICAgIHR5cGUgQ29tcG9uZW50UmVmPFQgZXh0ZW5kcyBFbGVtZW50VHlwZT4gPSBUIGV4dGVuZHMgTmFtZWRFeG90aWNDb21wb25lbnQ8CiAgICAgICAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPFQ+ICYgUmVmQXR0cmlidXRlczxpbmZlciBNZXRob2Q+CiAgICA+CiAgICAgICAgPyBNZXRob2QKICAgICAgICA6IENvbXBvbmVudFByb3BzV2l0aFJlZjxUPiBleHRlbmRzIFJlZkF0dHJpYnV0ZXM8aW5mZXIgTWV0aG9kPgogICAgICAgICAgICA/IE1ldGhvZAogICAgICAgICAgICA6IG5ldmVyOwoKICAgIC8vIHdpbGwgc2hvdyBgTWVtbygke0NvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZX0pYCBpbiBkZXZ0b29scyBieSBkZWZhdWx0LAogICAgLy8gYnV0IGNhbiBiZSBnaXZlbiBpdHMgb3duIHNwZWNpZmljIG5hbWUKICAgIHR5cGUgTWVtb0V4b3RpY0NvbXBvbmVudDxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZTxhbnk+PiA9IE5hbWVkRXhvdGljQ29tcG9uZW50PENvbXBvbmVudFByb3BzV2l0aFJlZjxUPj4gJiB7CiAgICAgICAgcmVhZG9ubHkgdHlwZTogVDsKICAgIH07CgogICAgZnVuY3Rpb24gbWVtbzxQIGV4dGVuZHMgb2JqZWN0PigKICAgICAgICBDb21wb25lbnQ6IEZ1bmN0aW9uQ29tcG9uZW50PFA+LAogICAgICAgIHByb3BzQXJlRXF1YWw/OiAocHJldlByb3BzOiBSZWFkb25seTxQPiwgbmV4dFByb3BzOiBSZWFkb25seTxQPikgPT4gYm9vbGVhbgogICAgKTogTmFtZWRFeG90aWNDb21wb25lbnQ8UD47CiAgICBmdW5jdGlvbiBtZW1vPFQgZXh0ZW5kcyBDb21wb25lbnRUeXBlPGFueT4+KAogICAgICAgIENvbXBvbmVudDogVCwKICAgICAgICBwcm9wc0FyZUVxdWFsPzogKHByZXZQcm9wczogUmVhZG9ubHk8Q29tcG9uZW50UHJvcHM8VD4+LCBuZXh0UHJvcHM6IFJlYWRvbmx5PENvbXBvbmVudFByb3BzPFQ+PikgPT4gYm9vbGVhbgogICAgKTogTWVtb0V4b3RpY0NvbXBvbmVudDxUPjsKCiAgICB0eXBlIExhenlFeG90aWNDb21wb25lbnQ8VCBleHRlbmRzIENvbXBvbmVudFR5cGU8YW55Pj4gPSBFeG90aWNDb21wb25lbnQ8Q29tcG9uZW50UHJvcHNXaXRoUmVmPFQ+PiAmIHsKICAgICAgICByZWFkb25seSBfcmVzdWx0OiBUOwogICAgfTsKCiAgICBmdW5jdGlvbiBsYXp5PFQgZXh0ZW5kcyBDb21wb25lbnRUeXBlPGFueT4+KAogICAgICAgIGZhY3Rvcnk6ICgpID0+IFByb21pc2U8eyBkZWZhdWx0OiBUIH0+CiAgICApOiBMYXp5RXhvdGljQ29tcG9uZW50PFQ+OwoKICAgIC8vCiAgICAvLyBSZWFjdCBIb29rcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIC8vIGJhc2VkIG9uIHRoZSBjb2RlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzEzOTY4CgogICAgLy8gVW5saWtlIHRoZSBjbGFzcyBjb21wb25lbnQgc2V0U3RhdGUsIHRoZSB1cGRhdGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBwYXJ0aWFsCiAgICB0eXBlIFNldFN0YXRlQWN0aW9uPFM+ID0gUyB8ICgocHJldlN0YXRlOiBTKSA9PiBTKTsKICAgIC8vIHRoaXMgdGVjaG5pY2FsbHkgZG9lcyBhY2NlcHQgYSBzZWNvbmQgYXJndW1lbnQsIGJ1dCBpdCdzIGFscmVhZHkgdW5kZXIgYSBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAvLyBhbmQgaXQncyBub3QgZXZlbiByZWxlYXNlZCBzbyBwcm9iYWJseSBiZXR0ZXIgdG8gbm90IGRlZmluZSBpdC4KICAgIHR5cGUgRGlzcGF0Y2g8QT4gPSAodmFsdWU6IEEpID0+IHZvaWQ7CiAgICAvLyBTaW5jZSBhY3Rpb24gX2Nhbl8gYmUgdW5kZWZpbmVkLCBkaXNwYXRjaCBtYXkgYmUgY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMuCiAgICB0eXBlIERpc3BhdGNoV2l0aG91dEFjdGlvbiA9ICgpID0+IHZvaWQ7CiAgICAvLyBVbmxpa2UgcmVkdXgsIHRoZSBhY3Rpb25zIF9jYW5fIGJlIGFueXRoaW5nCiAgICB0eXBlIFJlZHVjZXI8UywgQT4gPSAocHJldlN0YXRlOiBTLCBhY3Rpb246IEEpID0+IFM7CiAgICAvLyBJZiB1c2VSZWR1Y2VyIGFjY2VwdHMgYSByZWR1Y2VyIHdpdGhvdXQgYWN0aW9uLCBkaXNwYXRjaCBtYXkgYmUgY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMuCiAgICB0eXBlIFJlZHVjZXJXaXRob3V0QWN0aW9uPFM+ID0gKHByZXZTdGF0ZTogUykgPT4gUzsKICAgIC8vIHR5cGVzIHVzZWQgdG8gdHJ5IGFuZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIHJlZHVjaW5nIFMKICAgIC8vIHRvIGEgc3VwZXJ0eXBlIGNvbW1vbiB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdXNlUmVkdWNlcigpCiAgICB0eXBlIFJlZHVjZXJTdGF0ZTxSIGV4dGVuZHMgUmVkdWNlcjxhbnksIGFueT4+ID0gUiBleHRlbmRzIFJlZHVjZXI8aW5mZXIgUywgYW55PiA/IFMgOiBuZXZlcjsKICAgIHR5cGUgUmVkdWNlckFjdGlvbjxSIGV4dGVuZHMgUmVkdWNlcjxhbnksIGFueT4+ID0gUiBleHRlbmRzIFJlZHVjZXI8YW55LCBpbmZlciBBPiA/IEEgOiBuZXZlcjsKICAgIC8vIFRoZSBpZGVudGl0eSBjaGVjayBpcyBkb25lIHdpdGggdGhlIFNhbWVWYWx1ZSBhbGdvcml0aG0gKE9iamVjdC5pcyksIHdoaWNoIGlzIHN0cmljdGVyIHRoYW4gPT09CiAgICB0eXBlIFJlZHVjZXJTdGF0ZVdpdGhvdXRBY3Rpb248UiBleHRlbmRzIFJlZHVjZXJXaXRob3V0QWN0aW9uPGFueT4+ID0KICAgICAgICBSIGV4dGVuZHMgUmVkdWNlcldpdGhvdXRBY3Rpb248aW5mZXIgUz4gPyBTIDogbmV2ZXI7CiAgICB0eXBlIERlcGVuZGVuY3lMaXN0ID0gUmVhZG9ubHlBcnJheTx1bmtub3duPjsKCiAgICAvLyBOT1RFOiBjYWxsYmFja3MgYXJlIF9vbmx5XyBhbGxvd2VkIHRvIHJldHVybiBlaXRoZXIgdm9pZCwgb3IgYSBkZXN0cnVjdG9yLgogICAgdHlwZSBFZmZlY3RDYWxsYmFjayA9ICgpID0+ICh2b2lkIHwgRGVzdHJ1Y3Rvcik7CgogICAgaW50ZXJmYWNlIE11dGFibGVSZWZPYmplY3Q8VD4gewogICAgICAgIGN1cnJlbnQ6IFQ7CiAgICB9CgogICAgLy8gVGhpcyB3aWxsIHRlY2huaWNhbGx5IHdvcmsgaWYgeW91IGdpdmUgYSBDb25zdW1lcjxUPiBvciBQcm92aWRlcjxUPiBidXQgaXQncyBkZXByZWNhdGVkIGFuZCB3YXJucwogICAgLyoqCiAgICAgKiBBY2NlcHRzIGEgY29udGV4dCBvYmplY3QgKHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGBSZWFjdC5jcmVhdGVDb250ZXh0YCkgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQKICAgICAqIGNvbnRleHQgdmFsdWUsIGFzIGdpdmVuIGJ5IHRoZSBuZWFyZXN0IGNvbnRleHQgcHJvdmlkZXIgZm9yIHRoZSBnaXZlbiBjb250ZXh0LgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlQ29udGV4dAogICAgICovCiAgICBmdW5jdGlvbiB1c2VDb250ZXh0PFQ+KGNvbnRleHQ6IENvbnRleHQ8VD4vKiwgKG5vdCBwdWJsaWMgQVBJKSBvYnNlcnZlZEJpdHM/OiBudW1iZXJ8Ym9vbGVhbiAqLyk6IFQ7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdGF0ZWZ1bCB2YWx1ZSwgYW5kIGEgZnVuY3Rpb24gdG8gdXBkYXRlIGl0LgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlU3RhdGUKICAgICAqLwogICAgZnVuY3Rpb24gdXNlU3RhdGU8Uz4oaW5pdGlhbFN0YXRlOiBTIHwgKCgpID0+IFMpKTogW1MsIERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFM+Pl07CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCB3aGVuIGZpcnN0IGFyZ3VtZW50IGlzIG9taXR0ZWQKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0YXRlZnVsIHZhbHVlLCBhbmQgYSBmdW5jdGlvbiB0byB1cGRhdGUgaXQuCiAgICAgKgogICAgICogQHZlcnNpb24gMTYuOC4wCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZQogICAgICovCiAgICBmdW5jdGlvbiB1c2VTdGF0ZTxTID0gdW5kZWZpbmVkPigpOiBbUyB8IHVuZGVmaW5lZCwgRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UyB8IHVuZGVmaW5lZD4+XTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSBkaXNwYXRjaCBjb3VsZCBhY2NlcHQgMCBhcmd1bWVudHMuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyV2l0aG91dEFjdGlvbjxhbnk+LCBJPigKICAgICAgICByZWR1Y2VyOiBSLAogICAgICAgIGluaXRpYWxpemVyQXJnOiBJLAogICAgICAgIGluaXRpYWxpemVyOiAoYXJnOiBJKSA9PiBSZWR1Y2VyU3RhdGVXaXRob3V0QWN0aW9uPFI+CiAgICApOiBbUmVkdWNlclN0YXRlV2l0aG91dEFjdGlvbjxSPiwgRGlzcGF0Y2hXaXRob3V0QWN0aW9uXTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSBkaXNwYXRjaCBjb3VsZCBhY2NlcHQgMCBhcmd1bWVudHMuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyV2l0aG91dEFjdGlvbjxhbnk+PigKICAgICAgICByZWR1Y2VyOiBSLAogICAgICAgIGluaXRpYWxpemVyQXJnOiBSZWR1Y2VyU3RhdGVXaXRob3V0QWN0aW9uPFI+LAogICAgICAgIGluaXRpYWxpemVyPzogdW5kZWZpbmVkCiAgICApOiBbUmVkdWNlclN0YXRlV2l0aG91dEFjdGlvbjxSPiwgRGlzcGF0Y2hXaXRob3V0QWN0aW9uXTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSAiSSIgbWF5IGJlIGEgc3Vic2V0IG9mIFJlZHVjZXJTdGF0ZTxSPjsgdXNlZCB0byBwcm92aWRlIGF1dG9jb21wbGV0aW9uLgogICAgLy8gSWYgIkkiIG1hdGNoZXMgUmVkdWNlclN0YXRlPFI+IGV4YWN0bHkgdGhlbiB0aGUgbGFzdCBvdmVybG9hZCB3aWxsIGFsbG93IGluaXRpYWxpemVyIHRvIGJlIG9taXR0ZWQuCiAgICAvLyB0aGUgbGFzdCBvdmVybG9hZCBlZmZlY3RpdmVseSBiZWhhdmVzIGFzIGlmIHRoZSBpZGVudGl0eSBmdW5jdGlvbiAoeCA9PiB4KSBpcyB0aGUgaW5pdGlhbGl6ZXIuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55PiwgST4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsaXplckFyZzogSSAmIFJlZHVjZXJTdGF0ZTxSPiwKICAgICAgICBpbml0aWFsaXplcjogKGFyZzogSSAmIFJlZHVjZXJTdGF0ZTxSPikgPT4gUmVkdWNlclN0YXRlPFI+CiAgICApOiBbUmVkdWNlclN0YXRlPFI+LCBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9uPFI+Pl07CiAgICAvKioKICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGB1c2VTdGF0ZWAuCiAgICAgKgogICAgICogYHVzZVJlZHVjZXJgIGlzIHVzdWFsbHkgcHJlZmVyYWJsZSB0byBgdXNlU3RhdGVgIHdoZW4geW91IGhhdmUgY29tcGxleCBzdGF0ZSBsb2dpYyB0aGF0IGludm9sdmVzCiAgICAgKiBtdWx0aXBsZSBzdWItdmFsdWVzLiBJdCBhbHNvIGxldHMgeW91IG9wdGltaXplIHBlcmZvcm1hbmNlIGZvciBjb21wb25lbnRzIHRoYXQgdHJpZ2dlciBkZWVwCiAgICAgKiB1cGRhdGVzIGJlY2F1c2UgeW91IGNhbiBwYXNzIGBkaXNwYXRjaGAgZG93biBpbnN0ZWFkIG9mIGNhbGxiYWNrcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZHVjZXIKICAgICAqLwogICAgLy8gb3ZlcmxvYWQgZm9yIGZyZWUgIkkiOyBhbGwgZ29lcyBhcyBsb25nIGFzIGluaXRpYWxpemVyIGNvbnZlcnRzIGl0IGludG8gIlJlZHVjZXJTdGF0ZTxSPiIuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55PiwgST4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsaXplckFyZzogSSwKICAgICAgICBpbml0aWFsaXplcjogKGFyZzogSSkgPT4gUmVkdWNlclN0YXRlPFI+CiAgICApOiBbUmVkdWNlclN0YXRlPFI+LCBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9uPFI+Pl07CiAgICAvKioKICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGB1c2VTdGF0ZWAuCiAgICAgKgogICAgICogYHVzZVJlZHVjZXJgIGlzIHVzdWFsbHkgcHJlZmVyYWJsZSB0byBgdXNlU3RhdGVgIHdoZW4geW91IGhhdmUgY29tcGxleCBzdGF0ZSBsb2dpYyB0aGF0IGludm9sdmVzCiAgICAgKiBtdWx0aXBsZSBzdWItdmFsdWVzLiBJdCBhbHNvIGxldHMgeW91IG9wdGltaXplIHBlcmZvcm1hbmNlIGZvciBjb21wb25lbnRzIHRoYXQgdHJpZ2dlciBkZWVwCiAgICAgKiB1cGRhdGVzIGJlY2F1c2UgeW91IGNhbiBwYXNzIGBkaXNwYXRjaGAgZG93biBpbnN0ZWFkIG9mIGNhbGxiYWNrcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZHVjZXIKICAgICAqLwoKICAgIC8vIEknbSBub3Qgc3VyZSBpZiBJIGtlZXAgdGhpcyAyLWFyeSBvciBpZiBJIG1ha2UgaXQgKDIsMyktYXJ5OyBpdCdzIGN1cnJlbnRseSAoMiwzKS1hcnkuCiAgICAvLyBUaGUgRmxvdyB0eXBlcyBkbyBoYXZlIGFuIG92ZXJsb2FkIGZvciAzLWFyeSBpbnZvY2F0aW9uIHdpdGggdW5kZWZpbmVkIGluaXRpYWxpemVyLgoKICAgIC8vIE5PVEU6IHdpdGhvdXQgdGhlIFJlZHVjZXJTdGF0ZSBpbmRpcmVjdGlvbiwgVHlwZVNjcmlwdCB3b3VsZCByZWR1Y2UgUyB0byBiZSB0aGUgbW9zdCBjb21tb24KICAgIC8vIHN1cGVydHlwZSBiZXR3ZWVuIHRoZSByZWR1Y2VyJ3MgcmV0dXJuIHR5cGUgYW5kIHRoZSBpbml0aWFsU3RhdGUgKG9yIHRoZSBpbml0aWFsaXplcidzIHJldHVybiB0eXBlKSwKICAgIC8vIHdoaWNoIHdvdWxkIHByZXZlbnQgYXV0b2NvbXBsZXRpb24gZnJvbSBldmVyIHdvcmtpbmcuCgogICAgLy8gVE9ETzogZG91YmxlLWNoZWNrIGlmIHRoaXMgd2VpcmQgb3ZlcmxvYWQgbG9naWMgaXMgbmVjZXNzYXJ5LiBJdCBpcyBwb3NzaWJsZSBpdCdzIGVpdGhlciBhIGJ1ZwogICAgLy8gaW4gb2xkZXIgdmVyc2lvbnMsIG9yIGEgcmVncmVzc2lvbiBpbiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgdHlwZXNjcmlwdCBjb21wbGV0aW9uIHNlcnZpY2UuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55Pj4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsU3RhdGU6IFJlZHVjZXJTdGF0ZTxSPiwKICAgICAgICBpbml0aWFsaXplcj86IHVuZGVmaW5lZAogICAgKTogW1JlZHVjZXJTdGF0ZTxSPiwgRGlzcGF0Y2g8UmVkdWNlckFjdGlvbjxSPj5dOwogICAgLyoqCiAgICAgKiBgdXNlUmVmYCByZXR1cm5zIGEgbXV0YWJsZSByZWYgb2JqZWN0IHdob3NlIGAuY3VycmVudGAgcHJvcGVydHkgaXMgaW5pdGlhbGl6ZWQgdG8gdGhlIHBhc3NlZCBhcmd1bWVudAogICAgICogKGBpbml0aWFsVmFsdWVgKS4gVGhlIHJldHVybmVkIG9iamVjdCB3aWxsIHBlcnNpc3QgZm9yIHRoZSBmdWxsIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuCiAgICAgKgogICAgICogTm90ZSB0aGF0IGB1c2VSZWYoKWAgaXMgdXNlZnVsIGZvciBtb3JlIHRoYW4gdGhlIGByZWZgIGF0dHJpYnV0ZS4gSXTigJlzIGhhbmR5IGZvciBrZWVwaW5nIGFueSBtdXRhYmxlCiAgICAgKiB2YWx1ZSBhcm91bmQgc2ltaWxhciB0byBob3cgeW914oCZZCB1c2UgaW5zdGFuY2UgZmllbGRzIGluIGNsYXNzZXMuCiAgICAgKgogICAgICogQHZlcnNpb24gMTYuOC4wCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VSZWYKICAgICAqLwogICAgZnVuY3Rpb24gdXNlUmVmPFQ+KGluaXRpYWxWYWx1ZTogVCk6IE11dGFibGVSZWZPYmplY3Q8VD47CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCBmb3IgcmVmcyBnaXZlbiBhcyBhIHJlZiBwcm9wIGFzIHRoZXkgdHlwaWNhbGx5IHN0YXJ0IHdpdGggYSBudWxsIHZhbHVlCiAgICAvKioKICAgICAqIGB1c2VSZWZgIHJldHVybnMgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hvc2UgYC5jdXJyZW50YCBwcm9wZXJ0eSBpcyBpbml0aWFsaXplZCB0byB0aGUgcGFzc2VkIGFyZ3VtZW50CiAgICAgKiAoYGluaXRpYWxWYWx1ZWApLiBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgcGVyc2lzdCBmb3IgdGhlIGZ1bGwgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgYHVzZVJlZigpYCBpcyB1c2VmdWwgZm9yIG1vcmUgdGhhbiB0aGUgYHJlZmAgYXR0cmlidXRlLiBJdOKAmXMgaGFuZHkgZm9yIGtlZXBpbmcgYW55IG11dGFibGUKICAgICAqIHZhbHVlIGFyb3VuZCBzaW1pbGFyIHRvIGhvdyB5b3XigJlkIHVzZSBpbnN0YW5jZSBmaWVsZHMgaW4gY2xhc3Nlcy4KICAgICAqCiAgICAgKiBVc2FnZSBub3RlOiBpZiB5b3UgbmVlZCB0aGUgcmVzdWx0IG9mIHVzZVJlZiB0byBiZSBkaXJlY3RseSBtdXRhYmxlLCBpbmNsdWRlIGB8IG51bGxgIGluIHRoZSB0eXBlCiAgICAgKiBvZiB0aGUgZ2VuZXJpYyBhcmd1bWVudC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZgogICAgICovCiAgICBmdW5jdGlvbiB1c2VSZWY8VD4oaW5pdGlhbFZhbHVlOiBUfG51bGwpOiBSZWZPYmplY3Q8VD47CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCBmb3IgcG90ZW50aWFsbHkgdW5kZWZpbmVkIGluaXRpYWxWYWx1ZSAvIGNhbGwgd2l0aCAwIGFyZ3VtZW50cwogICAgLy8gaGFzIGEgZGVmYXVsdCB0byBzdG9wIGl0IGZyb20gZGVmYXVsdGluZyB0byB7fSBpbnN0ZWFkCiAgICAvKioKICAgICAqIGB1c2VSZWZgIHJldHVybnMgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hvc2UgYC5jdXJyZW50YCBwcm9wZXJ0eSBpcyBpbml0aWFsaXplZCB0byB0aGUgcGFzc2VkIGFyZ3VtZW50CiAgICAgKiAoYGluaXRpYWxWYWx1ZWApLiBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgcGVyc2lzdCBmb3IgdGhlIGZ1bGwgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgYHVzZVJlZigpYCBpcyB1c2VmdWwgZm9yIG1vcmUgdGhhbiB0aGUgYHJlZmAgYXR0cmlidXRlLiBJdOKAmXMgaGFuZHkgZm9yIGtlZXBpbmcgYW55IG11dGFibGUKICAgICAqIHZhbHVlIGFyb3VuZCBzaW1pbGFyIHRvIGhvdyB5b3XigJlkIHVzZSBpbnN0YW5jZSBmaWVsZHMgaW4gY2xhc3Nlcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZgogICAgICovCiAgICBmdW5jdGlvbiB1c2VSZWY8VCA9IHVuZGVmaW5lZD4oKTogTXV0YWJsZVJlZk9iamVjdDxUIHwgdW5kZWZpbmVkPjsKICAgIC8qKgogICAgICogVGhlIHNpZ25hdHVyZSBpcyBpZGVudGljYWwgdG8gYHVzZUVmZmVjdGAsIGJ1dCBpdCBmaXJlcyBzeW5jaHJvbm91c2x5IGFmdGVyIGFsbCBET00gbXV0YXRpb25zLgogICAgICogVXNlIHRoaXMgdG8gcmVhZCBsYXlvdXQgZnJvbSB0aGUgRE9NIGFuZCBzeW5jaHJvbm91c2x5IHJlLXJlbmRlci4gVXBkYXRlcyBzY2hlZHVsZWQgaW5zaWRlCiAgICAgKiBgdXNlTGF5b3V0RWZmZWN0YCB3aWxsIGJlIGZsdXNoZWQgc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludC4KICAgICAqCiAgICAgKiBQcmVmZXIgdGhlIHN0YW5kYXJkIGB1c2VFZmZlY3RgIHdoZW4gcG9zc2libGUgdG8gYXZvaWQgYmxvY2tpbmcgdmlzdWFsIHVwZGF0ZXMuCiAgICAgKgogICAgICogSWYgeW914oCZcmUgbWlncmF0aW5nIGNvZGUgZnJvbSBhIGNsYXNzIGNvbXBvbmVudCwgYHVzZUxheW91dEVmZmVjdGAgZmlyZXMgaW4gdGhlIHNhbWUgcGhhc2UgYXMKICAgICAqIGBjb21wb25lbnREaWRNb3VudGAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlTGF5b3V0RWZmZWN0CiAgICAgKi8KICAgIGZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChlZmZlY3Q6IEVmZmVjdENhbGxiYWNrLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwogICAgLyoqCiAgICAgKiBBY2NlcHRzIGEgZnVuY3Rpb24gdGhhdCBjb250YWlucyBpbXBlcmF0aXZlLCBwb3NzaWJseSBlZmZlY3RmdWwgY29kZS4KICAgICAqCiAgICAgKiBAcGFyYW0gZWZmZWN0IEltcGVyYXRpdmUgZnVuY3Rpb24gdGhhdCBjYW4gcmV0dXJuIGEgY2xlYW51cCBmdW5jdGlvbgogICAgICogQHBhcmFtIGRlcHMgSWYgcHJlc2VudCwgZWZmZWN0IHdpbGwgb25seSBhY3RpdmF0ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGNoYW5nZS4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUVmZmVjdAogICAgICovCiAgICBmdW5jdGlvbiB1c2VFZmZlY3QoZWZmZWN0OiBFZmZlY3RDYWxsYmFjaywgZGVwcz86IERlcGVuZGVuY3lMaXN0KTogdm9pZDsKICAgIC8vIE5PVEU6IHRoaXMgZG9lcyBub3QgYWNjZXB0IHN0cmluZ3MsIGJ1dCB0aGlzIHdpbGwgaGF2ZSB0byBiZSBmaXhlZCBieSByZW1vdmluZyBzdHJpbmdzIGZyb20gdHlwZSBSZWY8VD4KICAgIC8qKgogICAgICogYHVzZUltcGVyYXRpdmVIYW5kbGVgIGN1c3RvbWl6ZXMgdGhlIGluc3RhbmNlIHZhbHVlIHRoYXQgaXMgZXhwb3NlZCB0byBwYXJlbnQgY29tcG9uZW50cyB3aGVuIHVzaW5nCiAgICAgKiBgcmVmYC4gQXMgYWx3YXlzLCBpbXBlcmF0aXZlIGNvZGUgdXNpbmcgcmVmcyBzaG91bGQgYmUgYXZvaWRlZCBpbiBtb3N0IGNhc2VzLgogICAgICoKICAgICAqIGB1c2VJbXBlcmF0aXZlSGFuZGxlYCBzaG91bGQgYmUgdXNlZCB3aXRoIGBSZWFjdC5mb3J3YXJkUmVmYC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUltcGVyYXRpdmVIYW5kbGUKICAgICAqLwogICAgZnVuY3Rpb24gdXNlSW1wZXJhdGl2ZUhhbmRsZTxULCBSIGV4dGVuZHMgVD4ocmVmOiBSZWY8VD58dW5kZWZpbmVkLCBpbml0OiAoKSA9PiBSLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwogICAgLy8gSSBtYWRlICdpbnB1dHMnIHJlcXVpcmVkIGhlcmUgYW5kIGluIHVzZU1lbW8gYXMgdGhlcmUncyBubyBwb2ludCB0byBtZW1vaXppbmcgd2l0aG91dCB0aGUgbWVtb2l6YXRpb24ga2V5CiAgICAvLyB1c2VDYWxsYmFjayhYKSBpcyBpZGVudGljYWwgdG8ganVzdCB1c2luZyBYLCB1c2VNZW1vKCgpID0+IFkpIGlzIGlkZW50aWNhbCB0byBqdXN0IHVzaW5nIFkuCiAgICAvKioKICAgICAqIGB1c2VDYWxsYmFja2Agd2lsbCByZXR1cm4gYSBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBjYWxsYmFjayB0aGF0IG9ubHkgY2hhbmdlcyBpZiBvbmUgb2YgdGhlIGBpbnB1dHNgCiAgICAgKiBoYXMgY2hhbmdlZC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUNhbGxiYWNrCiAgICAgKi8KICAgIC8vIEEgc3BlY2lmaWMgZnVuY3Rpb24gdHlwZSB3b3VsZCBub3QgdHJpZ2dlciBpbXBsaWNpdCBhbnkuCiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvaXNzdWVzLzUyODczI2lzc3VlY29tbWVudC04NDU4MDY0MzUgZm9yIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGBGdW5jdGlvbmAgYW5kIG1vcmUgc3BlY2lmaWMgdHlwZXMuCiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgYmFuLXR5cGVzCiAgICBmdW5jdGlvbiB1c2VDYWxsYmFjazxUIGV4dGVuZHMgRnVuY3Rpb24+KGNhbGxiYWNrOiBULCBkZXBzOiBEZXBlbmRlbmN5TGlzdCk6IFQ7CiAgICAvKioKICAgICAqIGB1c2VNZW1vYCB3aWxsIG9ubHkgcmVjb21wdXRlIHRoZSBtZW1vaXplZCB2YWx1ZSB3aGVuIG9uZSBvZiB0aGUgYGRlcHNgIGhhcyBjaGFuZ2VkLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlTWVtbwogICAgICovCiAgICAvLyBhbGxvdyB1bmRlZmluZWQsIGJ1dCBkb24ndCBtYWtlIGl0IG9wdGlvbmFsIGFzIHRoYXQgaXMgdmVyeSBsaWtlbHkgYSBtaXN0YWtlCiAgICBmdW5jdGlvbiB1c2VNZW1vPFQ+KGZhY3Rvcnk6ICgpID0+IFQsIGRlcHM6IERlcGVuZGVuY3lMaXN0IHwgdW5kZWZpbmVkKTogVDsKICAgIC8qKgogICAgICogYHVzZURlYnVnVmFsdWVgIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYSBsYWJlbCBmb3IgY3VzdG9tIGhvb2tzIGluIFJlYWN0IERldlRvb2xzLgogICAgICoKICAgICAqIE5PVEU6IFdlIGRvbuKAmXQgcmVjb21tZW5kIGFkZGluZyBkZWJ1ZyB2YWx1ZXMgdG8gZXZlcnkgY3VzdG9tIGhvb2suCiAgICAgKiBJdOKAmXMgbW9zdCB2YWx1YWJsZSBmb3IgY3VzdG9tIGhvb2tzIHRoYXQgYXJlIHBhcnQgb2Ygc2hhcmVkIGxpYnJhcmllcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZURlYnVnVmFsdWUKICAgICAqLwogICAgLy8gdGhlIG5hbWUgb2YgdGhlIGN1c3RvbSBob29rIGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGhlIGZ1bmN0aW9uIG5hbWUgYXQgcnVudGltZToKICAgIC8vIGl0J3MganVzdCB0aGUgZnVuY3Rpb24gbmFtZSB3aXRob3V0IHRoZSAidXNlIiBwcmVmaXguCiAgICBmdW5jdGlvbiB1c2VEZWJ1Z1ZhbHVlPFQ+KHZhbHVlOiBULCBmb3JtYXQ/OiAodmFsdWU6IFQpID0+IGFueSk6IHZvaWQ7CgogICAgLy8gbXVzdCBiZSBzeW5jaHJvbm91cwogICAgZXhwb3J0IHR5cGUgVHJhbnNpdGlvbkZ1bmN0aW9uID0gKCkgPT4gVm9pZE9yVW5kZWZpbmVkT25seTsKICAgIC8vIHN0cmFuZ2UgZGVmaW5pdGlvbiB0byBhbGxvdyB2c2NvZGUgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbnZvY2F0aW9uCiAgICBleHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb25TdGFydEZ1bmN0aW9uIHsKICAgICAgICAvKioKICAgICAgICAgKiBTdGF0ZSB1cGRhdGVzIGNhdXNlZCBpbnNpZGUgdGhlIGNhbGxiYWNrIGFyZSBhbGxvd2VkIHRvIGJlIGRlZmVycmVkLgogICAgICAgICAqCiAgICAgICAgICogKipJZiBzb21lIHN0YXRlIHVwZGF0ZSBjYXVzZXMgYSBjb21wb25lbnQgdG8gc3VzcGVuZCwgdGhhdCBzdGF0ZSB1cGRhdGUgc2hvdWxkIGJlIHdyYXBwZWQgaW4gYSB0cmFuc2l0aW9uLioqCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBfc3luY2hyb25vdXNfIGZ1bmN0aW9uIHdoaWNoIGNhdXNlcyBzdGF0ZSB1cGRhdGVzIHRoYXQgY2FuIGJlIGRlZmVycmVkLgogICAgICAgICAqLwogICAgICAgIChjYWxsYmFjazogVHJhbnNpdGlvbkZ1bmN0aW9uKTogdm9pZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBkZWZlcnJlZCB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSB0aGF0IG1heSDigJxsYWcgYmVoaW5k4oCdIGl0LgogICAgICoKICAgICAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCB0byBrZWVwIHRoZSBpbnRlcmZhY2UgcmVzcG9uc2l2ZSB3aGVuIHlvdSBoYXZlIHNvbWV0aGluZyB0aGF0IHJlbmRlcnMgaW1tZWRpYXRlbHkKICAgICAqIGJhc2VkIG9uIHVzZXIgaW5wdXQgYW5kIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIHdhaXQgZm9yIGEgZGF0YSBmZXRjaC4KICAgICAqCiAgICAgKiBBIGdvb2QgZXhhbXBsZSBvZiB0aGlzIGlzIGEgdGV4dCBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRoYXQgaXMgZ29pbmcgdG8gYmUgZGVmZXJyZWQKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VEZWZlcnJlZFZhbHVlCiAgICAgKi8KICAgIGV4cG9ydCBmdW5jdGlvbiB1c2VEZWZlcnJlZFZhbHVlPFQ+KHZhbHVlOiBUKTogVDsKCiAgICAvKioKICAgICAqIEFsbG93cyBjb21wb25lbnRzIHRvIGF2b2lkIHVuZGVzaXJhYmxlIGxvYWRpbmcgc3RhdGVzIGJ5IHdhaXRpbmcgZm9yIGNvbnRlbnQgdG8gbG9hZAogICAgICogYmVmb3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIG5leHQgc2NyZWVuLiBJdCBhbHNvIGFsbG93cyBjb21wb25lbnRzIHRvIGRlZmVyIHNsb3dlciwKICAgICAqIGRhdGEgZmV0Y2hpbmcgdXBkYXRlcyB1bnRpbCBzdWJzZXF1ZW50IHJlbmRlcnMgc28gdGhhdCBtb3JlIGNydWNpYWwgdXBkYXRlcyBjYW4gYmUKICAgICAqIHJlbmRlcmVkIGltbWVkaWF0ZWx5LgogICAgICoKICAgICAqIFRoZSBgdXNlVHJhbnNpdGlvbmAgaG9vayByZXR1cm5zIHR3byB2YWx1ZXMgaW4gYW4gYXJyYXkuCiAgICAgKgogICAgICogVGhlIGZpcnN0IGlzIGEgYm9vbGVhbiwgUmVhY3TigJlzIHdheSBvZiBpbmZvcm1pbmcgdXMgd2hldGhlciB3ZeKAmXJlIHdhaXRpbmcgZm9yIHRoZSB0cmFuc2l0aW9uIHRvIGZpbmlzaC4KICAgICAqIFRoZSBzZWNvbmQgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgY2FsbGJhY2suIFdlIGNhbiB1c2UgaXQgdG8gdGVsbCBSZWFjdCB3aGljaCBzdGF0ZSB3ZSB3YW50IHRvIGRlZmVyLgogICAgICoKICAgICAqICoqSWYgc29tZSBzdGF0ZSB1cGRhdGUgY2F1c2VzIGEgY29tcG9uZW50IHRvIHN1c3BlbmQsIHRoYXQgc3RhdGUgdXBkYXRlIHNob3VsZCBiZSB3cmFwcGVkIGluIGEgdHJhbnNpdGlvbi4qKmAKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VUcmFuc2l0aW9uCiAgICAgKi8KICAgIGV4cG9ydCBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCk6IFtib29sZWFuLCBUcmFuc2l0aW9uU3RhcnRGdW5jdGlvbl07CgogICAgLyoqCiAgICAgKiBTaW1pbGFyIHRvIGB1c2VUcmFuc2l0aW9uYCBidXQgYWxsb3dzIHVzZXMgd2hlcmUgaG9va3MgYXJlIG5vdCBhdmFpbGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxiYWNrIEEgX3N5bmNocm9ub3VzXyBmdW5jdGlvbiB3aGljaCBjYXVzZXMgc3RhdGUgdXBkYXRlcyB0aGF0IGNhbiBiZSBkZWZlcnJlZC4KICAgICAqLwogICAgZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbihzY29wZTogVHJhbnNpdGlvbkZ1bmN0aW9uKTogdm9pZDsKCiAgICBleHBvcnQgZnVuY3Rpb24gdXNlSWQoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogQHBhcmFtIGVmZmVjdCBJbXBlcmF0aXZlIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVybiBhIGNsZWFudXAgZnVuY3Rpb24KICAgICAqIEBwYXJhbSBkZXBzIElmIHByZXNlbnQsIGVmZmVjdCB3aWxsIG9ubHkgYWN0aXZhdGUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBjaGFuZ2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMTkxMwogICAgICovCiAgICAgZXhwb3J0IGZ1bmN0aW9uIHVzZUluc2VydGlvbkVmZmVjdChlZmZlY3Q6IEVmZmVjdENhbGxiYWNrLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN1YnNjcmliZQogICAgICogQHBhcmFtIGdldFNuYXBzaG90CiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVhY3R3Zy9yZWFjdC0xOC9kaXNjdXNzaW9ucy84NgogICAgICovCiAgICAvLyBrZWVwIGluIHN5bmMgd2l0aCBgdXNlU3luY0V4dGVybmFsU3RvcmVgIGZyb20gYHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlYAogICAgZXhwb3J0IGZ1bmN0aW9uIHVzZVN5bmNFeHRlcm5hbFN0b3JlPFNuYXBzaG90PigKICAgICAgICBzdWJzY3JpYmU6IChvblN0b3JlQ2hhbmdlOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkLAogICAgICAgIGdldFNuYXBzaG90OiAoKSA9PiBTbmFwc2hvdCwKICAgICAgICBnZXRTZXJ2ZXJTbmFwc2hvdD86ICgpID0+IFNuYXBzaG90LAogICAgKTogU25hcHNob3Q7CgogICAgLy8KICAgIC8vIEV2ZW50IFN5c3RlbQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gVE9ETzogY2hhbmdlIGFueSB0byB1bmtub3duIHdoZW4gbW92aW5nIHRvIFRTIHYzCiAgICBpbnRlcmZhY2UgQmFzZVN5bnRoZXRpY0V2ZW50PEUgPSBvYmplY3QsIEMgPSBhbnksIFQgPSBhbnk+IHsKICAgICAgICBuYXRpdmVFdmVudDogRTsKICAgICAgICBjdXJyZW50VGFyZ2V0OiBDOwogICAgICAgIHRhcmdldDogVDsKICAgICAgICBidWJibGVzOiBib29sZWFuOwogICAgICAgIGNhbmNlbGFibGU6IGJvb2xlYW47CiAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogYm9vbGVhbjsKICAgICAgICBldmVudFBoYXNlOiBudW1iZXI7CiAgICAgICAgaXNUcnVzdGVkOiBib29sZWFuOwogICAgICAgIHByZXZlbnREZWZhdWx0KCk6IHZvaWQ7CiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkKCk6IGJvb2xlYW47CiAgICAgICAgc3RvcFByb3BhZ2F0aW9uKCk6IHZvaWQ7CiAgICAgICAgaXNQcm9wYWdhdGlvblN0b3BwZWQoKTogYm9vbGVhbjsKICAgICAgICBwZXJzaXN0KCk6IHZvaWQ7CiAgICAgICAgdGltZVN0YW1wOiBudW1iZXI7CiAgICAgICAgdHlwZTogc3RyaW5nOwogICAgfQoKICAgIC8qKgogICAgICogY3VycmVudFRhcmdldCAtIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBldmVudCBsaXN0ZW5lciBpcyByZWdpc3RlcmVkLgogICAgICoKICAgICAqIHRhcmdldCAtIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IGZyb20gd2hpY2ggdGhlIGV2ZW50IHdhcyBvcmlnaW5hbGx5IGRpc3BhdGNoZWQuCiAgICAgKiBUaGlzIG1pZ2h0IGJlIGEgY2hpbGQgZWxlbWVudCB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgZXZlbnQgbGlzdGVuZXIgaXMgcmVnaXN0ZXJlZC4KICAgICAqIElmIHlvdSB0aG91Z2h0IHRoaXMgc2hvdWxkIGJlIGBFdmVudFRhcmdldCAmIFRgLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvaXNzdWVzLzExNTA4I2lzc3VlY29tbWVudC0yNTYwNDU2ODIKICAgICAqLwogICAgaW50ZXJmYWNlIFN5bnRoZXRpY0V2ZW50PFQgPSBFbGVtZW50LCBFID0gRXZlbnQ+IGV4dGVuZHMgQmFzZVN5bnRoZXRpY0V2ZW50PEUsIEV2ZW50VGFyZ2V0ICYgVCwgRXZlbnRUYXJnZXQ+IHt9CgogICAgaW50ZXJmYWNlIENsaXBib2FyZEV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZUNsaXBib2FyZEV2ZW50PiB7CiAgICAgICAgY2xpcGJvYXJkRGF0YTogRGF0YVRyYW5zZmVyOwogICAgfQoKICAgIGludGVyZmFjZSBDb21wb3NpdGlvbkV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZUNvbXBvc2l0aW9uRXZlbnQ+IHsKICAgICAgICBkYXRhOiBzdHJpbmc7CiAgICB9CgogICAgaW50ZXJmYWNlIERyYWdFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBNb3VzZUV2ZW50PFQsIE5hdGl2ZURyYWdFdmVudD4gewogICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyOwogICAgfQoKICAgIGludGVyZmFjZSBQb2ludGVyRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgTW91c2VFdmVudDxULCBOYXRpdmVQb2ludGVyRXZlbnQ+IHsKICAgICAgICBwb2ludGVySWQ6IG51bWJlcjsKICAgICAgICBwcmVzc3VyZTogbnVtYmVyOwogICAgICAgIHRhbmdlbnRpYWxQcmVzc3VyZTogbnVtYmVyOwogICAgICAgIHRpbHRYOiBudW1iZXI7CiAgICAgICAgdGlsdFk6IG51bWJlcjsKICAgICAgICB0d2lzdDogbnVtYmVyOwogICAgICAgIHdpZHRoOiBudW1iZXI7CiAgICAgICAgaGVpZ2h0OiBudW1iZXI7CiAgICAgICAgcG9pbnRlclR5cGU6ICdtb3VzZScgfCAncGVuJyB8ICd0b3VjaCc7CiAgICAgICAgaXNQcmltYXJ5OiBib29sZWFuOwogICAgfQoKICAgIGludGVyZmFjZSBGb2N1c0V2ZW50PFRhcmdldCA9IEVsZW1lbnQsIFJlbGF0ZWRUYXJnZXQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFRhcmdldCwgTmF0aXZlRm9jdXNFdmVudD4gewogICAgICAgIHJlbGF0ZWRUYXJnZXQ6IChFdmVudFRhcmdldCAmIFJlbGF0ZWRUYXJnZXQpIHwgbnVsbDsKICAgICAgICB0YXJnZXQ6IEV2ZW50VGFyZ2V0ICYgVGFyZ2V0OwogICAgfQoKICAgIGludGVyZmFjZSBGb3JtRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgU3ludGhldGljRXZlbnQ8VD4gewogICAgfQoKICAgIGludGVyZmFjZSBJbnZhbGlkRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgU3ludGhldGljRXZlbnQ8VD4gewogICAgICAgIHRhcmdldDogRXZlbnRUYXJnZXQgJiBUOwogICAgfQoKICAgIGludGVyZmFjZSBDaGFuZ2VFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxUPiB7CiAgICAgICAgdGFyZ2V0OiBFdmVudFRhcmdldCAmIFQ7CiAgICB9CgogICAgZXhwb3J0IHR5cGUgTW9kaWZpZXJLZXkgPSAiQWx0IiB8ICJBbHRHcmFwaCIgfCAiQ2Fwc0xvY2siIHwgIkNvbnRyb2wiIHwgIkZuIiB8ICJGbkxvY2siIHwgIkh5cGVyIiB8ICJNZXRhIiB8ICJOdW1Mb2NrIiB8ICJTY3JvbGxMb2NrIiB8ICJTaGlmdCIgfCAiU3VwZXIiIHwgIlN5bWJvbCIgfCAiU3ltYm9sTG9jayI7CgogICAgaW50ZXJmYWNlIEtleWJvYXJkRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgVUlFdmVudDxULCBOYXRpdmVLZXlib2FyZEV2ZW50PiB7CiAgICAgICAgYWx0S2V5OiBib29sZWFuOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIGNoYXJDb2RlOiBudW1iZXI7CiAgICAgICAgY3RybEtleTogYm9vbGVhbjsKICAgICAgICBjb2RlOiBzdHJpbmc7CiAgICAgICAgLyoqCiAgICAgICAgICogU2VlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8ja2V5cy1tb2RpZmllcikuIGZvciBhIGxpc3Qgb2YgdmFsaWQgKGNhc2Utc2Vuc2l0aXZlKSBhcmd1bWVudHMgdG8gdGhpcyBtZXRob2QuCiAgICAgICAgICovCiAgICAgICAgZ2V0TW9kaWZpZXJTdGF0ZShrZXk6IE1vZGlmaWVyS2V5KTogYm9vbGVhbjsKICAgICAgICAvKioKICAgICAgICAgKiBTZWUgdGhlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8jbmFtZWQta2V5LWF0dHJpYnV0ZS12YWx1ZXMpLiBmb3IgcG9zc2libGUgdmFsdWVzCiAgICAgICAgICovCiAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAga2V5Q29kZTogbnVtYmVyOwogICAgICAgIGxvY2FsZTogc3RyaW5nOwogICAgICAgIGxvY2F0aW9uOiBudW1iZXI7CiAgICAgICAgbWV0YUtleTogYm9vbGVhbjsKICAgICAgICByZXBlYXQ6IGJvb2xlYW47CiAgICAgICAgc2hpZnRLZXk6IGJvb2xlYW47CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgd2hpY2g6IG51bWJlcjsKICAgIH0KCiAgICBpbnRlcmZhY2UgTW91c2VFdmVudDxUID0gRWxlbWVudCwgRSA9IE5hdGl2ZU1vdXNlRXZlbnQ+IGV4dGVuZHMgVUlFdmVudDxULCBFPiB7CiAgICAgICAgYWx0S2V5OiBib29sZWFuOwogICAgICAgIGJ1dHRvbjogbnVtYmVyOwogICAgICAgIGJ1dHRvbnM6IG51bWJlcjsKICAgICAgICBjbGllbnRYOiBudW1iZXI7CiAgICAgICAgY2xpZW50WTogbnVtYmVyOwogICAgICAgIGN0cmxLZXk6IGJvb2xlYW47CiAgICAgICAgLyoqCiAgICAgICAgICogU2VlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8ja2V5cy1tb2RpZmllcikuIGZvciBhIGxpc3Qgb2YgdmFsaWQgKGNhc2Utc2Vuc2l0aXZlKSBhcmd1bWVudHMgdG8gdGhpcyBtZXRob2QuCiAgICAgICAgICovCiAgICAgICAgZ2V0TW9kaWZpZXJTdGF0ZShrZXk6IE1vZGlmaWVyS2V5KTogYm9vbGVhbjsKICAgICAgICBtZXRhS2V5OiBib29sZWFuOwogICAgICAgIG1vdmVtZW50WDogbnVtYmVyOwogICAgICAgIG1vdmVtZW50WTogbnVtYmVyOwogICAgICAgIHBhZ2VYOiBudW1iZXI7CiAgICAgICAgcGFnZVk6IG51bWJlcjsKICAgICAgICByZWxhdGVkVGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGw7CiAgICAgICAgc2NyZWVuWDogbnVtYmVyOwogICAgICAgIHNjcmVlblk6IG51bWJlcjsKICAgICAgICBzaGlmdEtleTogYm9vbGVhbjsKICAgIH0KCiAgICBpbnRlcmZhY2UgVG91Y2hFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBVSUV2ZW50PFQsIE5hdGl2ZVRvdWNoRXZlbnQ+IHsKICAgICAgICBhbHRLZXk6IGJvb2xlYW47CiAgICAgICAgY2hhbmdlZFRvdWNoZXM6IFRvdWNoTGlzdDsKICAgICAgICBjdHJsS2V5OiBib29sZWFuOwogICAgICAgIC8qKgogICAgICAgICAqIFNlZSBbRE9NIExldmVsIDMgRXZlbnRzIHNwZWNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy1rZXkvI2tleXMtbW9kaWZpZXIpLiBmb3IgYSBsaXN0IG9mIHZhbGlkIChjYXNlLXNlbnNpdGl2ZSkgYXJndW1lbnRzIHRvIHRoaXMgbWV0aG9kLgogICAgICAgICAqLwogICAgICAgIGdldE1vZGlmaWVyU3RhdGUoa2V5OiBNb2RpZmllcktleSk6IGJvb2xlYW47CiAgICAgICAgbWV0YUtleTogYm9vbGVhbjsKICAgICAgICBzaGlmdEtleTogYm9vbGVhbjsKICAgICAgICB0YXJnZXRUb3VjaGVzOiBUb3VjaExpc3Q7CiAgICAgICAgdG91Y2hlczogVG91Y2hMaXN0OwogICAgfQoKICAgIGludGVyZmFjZSBVSUV2ZW50PFQgPSBFbGVtZW50LCBFID0gTmF0aXZlVUlFdmVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxULCBFPiB7CiAgICAgICAgZGV0YWlsOiBudW1iZXI7CiAgICAgICAgdmlldzogQWJzdHJhY3RWaWV3OwogICAgfQoKICAgIGludGVyZmFjZSBXaGVlbEV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIE1vdXNlRXZlbnQ8VCwgTmF0aXZlV2hlZWxFdmVudD4gewogICAgICAgIGRlbHRhTW9kZTogbnVtYmVyOwogICAgICAgIGRlbHRhWDogbnVtYmVyOwogICAgICAgIGRlbHRhWTogbnVtYmVyOwogICAgICAgIGRlbHRhWjogbnVtYmVyOwogICAgfQoKICAgIGludGVyZmFjZSBBbmltYXRpb25FdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxULCBOYXRpdmVBbmltYXRpb25FdmVudD4gewogICAgICAgIGFuaW1hdGlvbk5hbWU6IHN0cmluZzsKICAgICAgICBlbGFwc2VkVGltZTogbnVtYmVyOwogICAgICAgIHBzZXVkb0VsZW1lbnQ6IHN0cmluZzsKICAgIH0KCiAgICBpbnRlcmZhY2UgVHJhbnNpdGlvbkV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZVRyYW5zaXRpb25FdmVudD4gewogICAgICAgIGVsYXBzZWRUaW1lOiBudW1iZXI7CiAgICAgICAgcHJvcGVydHlOYW1lOiBzdHJpbmc7CiAgICAgICAgcHNldWRvRWxlbWVudDogc3RyaW5nOwogICAgfQoKICAgIC8vCiAgICAvLyBFdmVudCBIYW5kbGVyIFR5cGVzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBFdmVudEhhbmRsZXI8RSBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PGFueT4+ID0geyBiaXZhcmlhbmNlSGFjayhldmVudDogRSk6IHZvaWQgfVsiYml2YXJpYW5jZUhhY2siXTsKCiAgICB0eXBlIFJlYWN0RXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxTeW50aGV0aWNFdmVudDxUPj47CgogICAgdHlwZSBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPENsaXBib2FyZEV2ZW50PFQ+PjsKICAgIHR5cGUgQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPENvbXBvc2l0aW9uRXZlbnQ8VD4+OwogICAgdHlwZSBEcmFnRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxEcmFnRXZlbnQ8VD4+OwogICAgdHlwZSBGb2N1c0V2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8Rm9jdXNFdmVudDxUPj47CiAgICB0eXBlIEZvcm1FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPEZvcm1FdmVudDxUPj47CiAgICB0eXBlIENoYW5nZUV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8Q2hhbmdlRXZlbnQ8VD4+OwogICAgdHlwZSBLZXlib2FyZEV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8S2V5Ym9hcmRFdmVudDxUPj47CiAgICB0eXBlIE1vdXNlRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxNb3VzZUV2ZW50PFQ+PjsKICAgIHR5cGUgVG91Y2hFdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPFRvdWNoRXZlbnQ8VD4+OwogICAgdHlwZSBQb2ludGVyRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxQb2ludGVyRXZlbnQ8VD4+OwogICAgdHlwZSBVSUV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8VUlFdmVudDxUPj47CiAgICB0eXBlIFdoZWVsRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxXaGVlbEV2ZW50PFQ+PjsKICAgIHR5cGUgQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxBbmltYXRpb25FdmVudDxUPj47CiAgICB0eXBlIFRyYW5zaXRpb25FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPFRyYW5zaXRpb25FdmVudDxUPj47CgogICAgLy8KICAgIC8vIFByb3BzIC8gRE9NIEF0dHJpYnV0ZXMKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBpbnRlcmZhY2UgSFRNTFByb3BzPFQ+IGV4dGVuZHMgQWxsSFRNTEF0dHJpYnV0ZXM8VD4sIENsYXNzQXR0cmlidXRlczxUPiB7CiAgICB9CgogICAgdHlwZSBEZXRhaWxlZEhUTUxQcm9wczxFIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQ+ID0gQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgRTsKCiAgICBpbnRlcmZhY2UgU1ZHUHJvcHM8VD4gZXh0ZW5kcyBTVkdBdHRyaWJ1dGVzPFQ+LCBDbGFzc0F0dHJpYnV0ZXM8VD4gewogICAgfQoKICAgIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBTVkdQcm9wczxUPiB7fQogICAgaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50QXR0cmlidXRlczxUPiBleHRlbmRzIFNWR1Byb3BzPFQ+IHt9CgogICAgaW50ZXJmYWNlIERPTUF0dHJpYnV0ZXM8VD4gewogICAgICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgdW5kZWZpbmVkOwogICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPzogewogICAgICAgICAgICAvLyBTaG91bGQgYmUgSW5uZXJIVE1MWydpbm5lckhUTUwnXS4KICAgICAgICAgICAgLy8gQnV0IHVuZm9ydHVuYXRlbHkgd2UncmUgbWl4aW5nIHJlbmRlcmVyLXNwZWNpZmljIHR5cGUgZGVjbGFyYXRpb25zLgogICAgICAgICAgICBfX2h0bWw6IHN0cmluZyB8IFRydXN0ZWRIVE1MOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIENsaXBib2FyZCBFdmVudHMKICAgICAgICBvbkNvcHk/OiBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db3B5Q2FwdHVyZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkN1dD86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkN1dENhcHR1cmU/OiBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25QYXN0ZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBhc3RlQ2FwdHVyZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gQ29tcG9zaXRpb24gRXZlbnRzCiAgICAgICAgb25Db21wb3NpdGlvbkVuZD86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29tcG9zaXRpb25FbmRDYXB0dXJlPzogQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db21wb3NpdGlvblN0YXJ0PzogQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZT86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29tcG9zaXRpb25VcGRhdGU/OiBDb21wb3NpdGlvbkV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZT86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBGb2N1cyBFdmVudHMKICAgICAgICBvbkZvY3VzPzogRm9jdXNFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Gb2N1c0NhcHR1cmU/OiBGb2N1c0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkJsdXI/OiBGb2N1c0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkJsdXJDYXB0dXJlPzogRm9jdXNFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIEZvcm0gRXZlbnRzCiAgICAgICAgb25DaGFuZ2U/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlQ2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25CZWZvcmVJbnB1dD86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25CZWZvcmVJbnB1dENhcHR1cmU/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uSW5wdXQ/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uSW5wdXRDYXB0dXJlPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblJlc2V0PzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblJlc2V0Q2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdWJtaXQ/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VibWl0Q2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25JbnZhbGlkPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkludmFsaWRDYXB0dXJlPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gSW1hZ2UgRXZlbnRzCiAgICAgICAgb25Mb2FkPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Mb2FkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRXJyb3I/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsgLy8gYWxzbyBhIE1lZGlhIEV2ZW50CiAgICAgICAgb25FcnJvckNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsgLy8gYWxzbyBhIE1lZGlhIEV2ZW50CgogICAgICAgIC8vIEtleWJvYXJkIEV2ZW50cwogICAgICAgIG9uS2V5RG93bj86IEtleWJvYXJkRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uS2V5RG93bkNhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8KICAgICAgICBvbktleVByZXNzPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgb25LZXlQcmVzc0NhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbktleVVwPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25LZXlVcENhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gTWVkaWEgRXZlbnRzCiAgICAgICAgb25BYm9ydD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQWJvcnRDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DYW5QbGF5PzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DYW5QbGF5Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2FuUGxheVRocm91Z2g/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHVyYXRpb25DaGFuZ2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW1wdGllZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW1wdGllZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkVuY3J5cHRlZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW5jcnlwdGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW5kZWQ/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkVuZGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZGVkRGF0YT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZGVkRGF0YUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvYWRlZE1ldGFkYXRhPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Mb2FkZWRNZXRhZGF0YUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvYWRTdGFydD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZFN0YXJ0Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGF1c2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBhdXNlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGxheT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGxheUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBsYXlpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBsYXlpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qcm9ncmVzcz86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUHJvZ3Jlc3NDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SYXRlQ2hhbmdlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SYXRlQ2hhbmdlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUmVzaXplPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SZXNpemVDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TZWVrZWQ/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtlZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdGFsbGVkPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdGFsbGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VzcGVuZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VzcGVuZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRpbWVVcGRhdGU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRpbWVVcGRhdGVDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Wb2x1bWVDaGFuZ2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblZvbHVtZUNoYW5nZUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbldhaXRpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbldhaXRpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIE1vdXNlRXZlbnRzCiAgICAgICAgb25BdXhDbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQXV4Q2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db250ZXh0TWVudT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29udGV4dE1lbnVDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Eb3VibGVDbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRG91YmxlQ2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdFbmQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0VuZENhcHR1cmU/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0VudGVyPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdFbnRlckNhcHR1cmU/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0V4aXQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0V4aXRDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdMZWF2ZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnTGVhdmVDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdPdmVyPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdPdmVyQ2FwdHVyZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnU3RhcnQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ1N0YXJ0Q2FwdHVyZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ecm9wPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyb3BDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlRG93bj86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VEb3duQ2FwdHVyZT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VFbnRlcj86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VMZWF2ZT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VNb3ZlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU1vdmVDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU91dD86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VPdXRDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU92ZXI/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlT3ZlckNhcHR1cmU/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlVXA/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlVXBDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFNlbGVjdGlvbiBFdmVudHMKICAgICAgICBvblNlbGVjdD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU2VsZWN0Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBUb3VjaCBFdmVudHMKICAgICAgICBvblRvdWNoQ2FuY2VsPzogVG91Y2hFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub3VjaENhbmNlbENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRvdWNoRW5kPzogVG91Y2hFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub3VjaEVuZENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRvdWNoTW92ZT86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hNb3ZlQ2FwdHVyZT86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hTdGFydD86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hTdGFydENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gUG9pbnRlciBFdmVudHMKICAgICAgICBvblBvaW50ZXJEb3duPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTW92ZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTW92ZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlclVwPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBvaW50ZXJVcENhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckNhbmNlbD86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyQ2FuY2VsQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyRW50ZXI/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckVudGVyQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTGVhdmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckxlYXZlQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3Zlcj86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3ZlckNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlck91dD86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3V0Q2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Hb3RQb2ludGVyQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Hb3RQb2ludGVyQ2FwdHVyZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvc3RQb2ludGVyQ2FwdHVyZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBVSSBFdmVudHMKICAgICAgICBvblNjcm9sbD86IFVJRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU2Nyb2xsQ2FwdHVyZT86IFVJRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBXaGVlbCBFdmVudHMKICAgICAgICBvbldoZWVsPzogV2hlZWxFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25XaGVlbENhcHR1cmU/OiBXaGVlbEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gQW5pbWF0aW9uIEV2ZW50cwogICAgICAgIG9uQW5pbWF0aW9uU3RhcnQ/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25TdGFydENhcHR1cmU/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25FbmQ/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25FbmRDYXB0dXJlPzogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQW5pbWF0aW9uSXRlcmF0aW9uPzogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQW5pbWF0aW9uSXRlcmF0aW9uQ2FwdHVyZT86IEFuaW1hdGlvbkV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gVHJhbnNpdGlvbiBFdmVudHMKICAgICAgICBvblRyYW5zaXRpb25FbmQ/OiBUcmFuc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVHJhbnNpdGlvbkVuZENhcHR1cmU/OiBUcmFuc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGV4cG9ydCBpbnRlcmZhY2UgQ1NTUHJvcGVydGllcyBleHRlbmRzIENTUy5Qcm9wZXJ0aWVzPHN0cmluZyB8IG51bWJlcj4gewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBpbmRleCBzaWduYXR1cmUgd2FzIHJlbW92ZWQgdG8gZW5hYmxlIGNsb3NlZCB0eXBpbmcgZm9yIHN0eWxlCiAgICAgICAgICogdXNpbmcgQ1NTVHlwZS4gWW91J3JlIGFibGUgdG8gdXNlIHR5cGUgYXNzZXJ0aW9uIG9yIG1vZHVsZSBhdWdtZW50YXRpb24KICAgICAgICAgKiB0byBhZGQgcHJvcGVydGllcyBvciBhbiBpbmRleCBzaWduYXR1cmUgb2YgeW91ciBvd24uCiAgICAgICAgICoKICAgICAgICAgKiBGb3IgZXhhbXBsZXMgYW5kIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0OgogICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVuaWMvY3NzdHlwZSN3aGF0LXNob3VsZC1pLWRvLXdoZW4taS1nZXQtdHlwZS1lcnJvcnMKICAgICAgICAgKi8KICAgIH0KCiAgICAvLyBBbGwgdGhlIFdBSS1BUklBIDEuMSBhdHRyaWJ1dGVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8KICAgIGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgICAgLyoqIElkZW50aWZpZXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgZWxlbWVudCB3aGVuIERPTSBmb2N1cyBpcyBvbiBhIGNvbXBvc2l0ZSB3aWRnZXQsIHRleHRib3gsIGdyb3VwLCBvciBhcHBsaWNhdGlvbi4gKi8KICAgICAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIGFyaWEtcmVsZXZhbnQgYXR0cmlidXRlLiAqLwogICAgICAgICdhcmlhLWF0b21pYyc/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZQogICAgICAgICAqIHByZXNlbnRlZCBpZiB0aGV5IGFyZSBtYWRlLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc/OiAnbm9uZScgfCAnaW5saW5lJyB8ICdsaXN0JyB8ICdib3RoJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIGFuIGVsZW1lbnQgaXMgYmVpbmcgbW9kaWZpZWQgYW5kIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBNQVkgd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4gKi8KICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIHRoZSBjdXJyZW50IGVsZW1lbnQsIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIGNvbnZlcnRlZCBpbnRvIEJyYWlsbGUuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWJyYWlsbGVsYWJlbCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuLXJlYWRhYmxlLCBhdXRob3ItbG9jYWxpemVkIGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIGZvciB0aGUgcm9sZSBvZiBhbiBlbGVtZW50LCB3aGljaCBpcyBpbnRlbmRlZCB0byBiZSBjb252ZXJ0ZWQgaW50byBCcmFpbGxlLgogICAgICAgICAqIEBzZWUgYXJpYS1yb2xlZGVzY3JpcHRpb24uCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtYnJhaWxsZXJvbGVkZXNjcmlwdGlvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgJ2FyaWEtYnVzeSc/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIEluZGljYXRlcyB0aGUgY3VycmVudCAiY2hlY2tlZCIgc3RhdGUgb2YgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgYW5kIG90aGVyIHdpZGdldHMuCiAgICAgICAgICogQHNlZSBhcmlhLXByZXNzZWQgQHNlZSBhcmlhLXNlbGVjdGVkLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWNoZWNrZWQnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAnbWl4ZWQnIHwgJ3RydWUnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIERlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xpbmRleC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xjb3VudCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhbiBlbGVtZW50J3MgY29sdW1uIGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xjb3VudCBAc2VlIGFyaWEtY29sc3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xpbmRleCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS1jb2xpbmRleC4KICAgICAgICAgKiBAc2VlIGFyaWEtcm93aW5kZXh0ZXh0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLWNvbGluZGV4dGV4dCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xpbmRleCBAc2VlIGFyaWEtcm93c3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xzcGFuJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJZGVudGlmaWVzIHRoZSBlbGVtZW50IChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4KICAgICAgICAgKiBAc2VlIGFyaWEtb3ducy4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb250cm9scyc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGUgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgaXRlbSB3aXRoaW4gYSBjb250YWluZXIgb3Igc2V0IG9mIHJlbGF0ZWQgZWxlbWVudHMuICovCiAgICAgICAgJ2FyaWEtY3VycmVudCc/OiBib29sZWFuIHwgJ2ZhbHNlJyB8ICd0cnVlJyB8ICdwYWdlJyB8ICdzdGVwJyB8ICdsb2NhdGlvbicgfCAnZGF0ZScgfCAndGltZScgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCAob3IgZWxlbWVudHMpIHRoYXQgZGVzY3JpYmVzIHRoZSBvYmplY3QuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsbGVkYnkKICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGRlc2NyaWJlcyBvciBhbm5vdGF0ZXMgdGhlIGN1cnJlbnQgZWxlbWVudC4KICAgICAgICAgKiBAc2VlIHJlbGF0ZWQgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXNjcmlwdGlvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGEgZGV0YWlsZWQsIGV4dGVuZGVkIGRlc2NyaXB0aW9uIGZvciB0aGUgb2JqZWN0LgogICAgICAgICAqIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXRhaWxzJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBwZXJjZWl2YWJsZSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2Ugb3BlcmFibGUuCiAgICAgICAgICogQHNlZSBhcmlhLWhpZGRlbiBAc2VlIGFyaWEtcmVhZG9ubHkuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtZGlzYWJsZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgd2hhdCBmdW5jdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB3aGVuIGEgZHJhZ2dlZCBvYmplY3QgaXMgcmVsZWFzZWQgb24gdGhlIGRyb3AgdGFyZ2V0LgogICAgICAgICAqIEBkZXByZWNhdGVkIGluIEFSSUEgMS4xCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtZHJvcGVmZmVjdCc/OiAnbm9uZScgfCAnY29weScgfCAnZXhlY3V0ZScgfCAnbGluaycgfCAnbW92ZScgfCAncG9wdXAnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIElkZW50aWZpZXMgdGhlIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgb2JqZWN0LgogICAgICAgICAqIEBzZWUgYXJpYS1pbnZhbGlkIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCwgb3IgYW5vdGhlciBncm91cGluZyBlbGVtZW50IGl0IGNvbnRyb2xzLCBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiAqLwogICAgICAgICdhcmlhLWV4cGFuZGVkJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgbmV4dCBlbGVtZW50IChvciBlbGVtZW50cykgaW4gYW4gYWx0ZXJuYXRlIHJlYWRpbmcgb3JkZXIgb2YgY29udGVudCB3aGljaCwgYXQgdGhlIHVzZXIncyBkaXNjcmV0aW9uLAogICAgICAgICAqIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWZsb3d0byc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSW5kaWNhdGVzIGFuIGVsZW1lbnQncyAiZ3JhYmJlZCIgc3RhdGUgaW4gYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KICAgICAgICAgKiBAZGVwcmVjYXRlZCBpbiBBUklBIDEuMQogICAgICAgICAqLwogICAgICAgICdhcmlhLWdyYWJiZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHRoZSBhdmFpbGFiaWxpdHkgYW5kIHR5cGUgb2YgaW50ZXJhY3RpdmUgcG9wdXAgZWxlbWVudCwgc3VjaCBhcyBtZW51IG9yIGRpYWxvZywgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGFuIGVsZW1lbnQuICovCiAgICAgICAgJ2FyaWEtaGFzcG9wdXAnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAndHJ1ZScgfCAnbWVudScgfCAnbGlzdGJveCcgfCAndHJlZScgfCAnZ3JpZCcgfCAnZGlhbG9nJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLgogICAgICAgICAqIEBzZWUgYXJpYS1kaXNhYmxlZC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1oaWRkZW4nPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGVudGVyZWQgdmFsdWUgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KICAgICAgICAgKiBAc2VlIGFyaWEtZXJyb3JtZXNzYWdlLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWludmFsaWQnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAndHJ1ZScgfCAnZ3JhbW1hcicgfCAnc3BlbGxpbmcnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuICovCiAgICAgICAgJ2FyaWEta2V5c2hvcnRjdXRzJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIHRoZSBjdXJyZW50IGVsZW1lbnQuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsbGVkYnkuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtbGFiZWwnPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIElkZW50aWZpZXMgdGhlIGVsZW1lbnQgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LgogICAgICAgICAqIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogRGVmaW5lcyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIGFuIGVsZW1lbnQgd2l0aGluIGEgc3RydWN0dXJlLiAqLwogICAgICAgICdhcmlhLWxldmVsJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHRoYXQgYW4gZWxlbWVudCB3aWxsIGJlIHVwZGF0ZWQsIGFuZCBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHVwZGF0ZXMgdGhlIHVzZXIgYWdlbnRzLCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIGxpdmUgcmVnaW9uLiAqLwogICAgICAgICdhcmlhLWxpdmUnPzogJ29mZicgfCAnYXNzZXJ0aXZlJyB8ICdwb2xpdGUnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBlbGVtZW50IGlzIG1vZGFsIHdoZW4gZGlzcGxheWVkLiAqLwogICAgICAgICdhcmlhLW1vZGFsJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGEgdGV4dCBib3ggYWNjZXB0cyBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dCBvciBvbmx5IGEgc2luZ2xlIGxpbmUuICovCiAgICAgICAgJ2FyaWEtbXVsdGlsaW5lJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4gKi8KICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGVsZW1lbnQncyBvcmllbnRhdGlvbiBpcyBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgb3IgdW5rbm93bi9hbWJpZ3VvdXMuICovCiAgICAgICAgJ2FyaWEtb3JpZW50YXRpb24nPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJZGVudGlmaWVzIGFuIGVsZW1lbnQgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcAogICAgICAgICAqIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLgogICAgICAgICAqIEBzZWUgYXJpYS1jb250cm9scy4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1vd25zJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4KICAgICAgICAgKiBBIGhpbnQgY291bGQgYmUgYSBzYW1wbGUgdmFsdWUgb3IgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLXBsYWNlaG9sZGVyJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGFuIGVsZW1lbnQncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLgogICAgICAgICAqIEBzZWUgYXJpYS1zZXRzaXplLgogICAgICAgICAqLwogICAgICAgICdhcmlhLXBvc2luc2V0Jz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInByZXNzZWQiIHN0YXRlIG9mIHRvZ2dsZSBidXR0b25zLgogICAgICAgICAqIEBzZWUgYXJpYS1jaGVja2VkIEBzZWUgYXJpYS1zZWxlY3RlZC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1wcmVzc2VkJz86IGJvb2xlYW4gfCAnZmFsc2UnIHwgJ21peGVkJyB8ICd0cnVlJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgZWRpdGFibGUsIGJ1dCBpcyBvdGhlcndpc2Ugb3BlcmFibGUuCiAgICAgICAgICogQHNlZSBhcmlhLWRpc2FibGVkLgogICAgICAgICAqLwogICAgICAgICdhcmlhLXJlYWRvbmx5Jz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLgogICAgICAgICAqIEBzZWUgYXJpYS1hdG9taWMuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtcmVsZXZhbnQnPzogJ2FkZGl0aW9ucycgfCAnYWRkaXRpb25zIHJlbW92YWxzJyB8ICdhZGRpdGlvbnMgdGV4dCcgfCAnYWxsJyB8ICdyZW1vdmFscycgfCAncmVtb3ZhbHMgYWRkaXRpb25zJyB8ICdyZW1vdmFscyB0ZXh0JyB8ICd0ZXh0JyB8ICd0ZXh0IGFkZGl0aW9ucycgfCAndGV4dCByZW1vdmFscycgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGF0IHVzZXIgaW5wdXQgaXMgcmVxdWlyZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIGEgZm9ybSBtYXkgYmUgc3VibWl0dGVkLiAqLwogICAgICAgICdhcmlhLXJlcXVpcmVkJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIERlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIHJvbGUgb2YgYW4gZWxlbWVudC4gKi8KICAgICAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIERlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3dpbmRleC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3djb3VudCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhbiBlbGVtZW50J3Mgcm93IGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3djb3VudCBAc2VlIGFyaWEtcm93c3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3dpbmRleCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS1yb3dpbmRleC4KICAgICAgICAgKiBAc2VlIGFyaWEtY29saW5kZXh0ZXh0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLXJvd2luZGV4dGV4dCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3dpbmRleCBAc2VlIGFyaWEtY29sc3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3dzcGFuJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInNlbGVjdGVkIiBzdGF0ZSBvZiB2YXJpb3VzIHdpZGdldHMuCiAgICAgICAgICogQHNlZSBhcmlhLWNoZWNrZWQgQHNlZSBhcmlhLXByZXNzZWQuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLgogICAgICAgICAqIEBzZWUgYXJpYS1wb3NpbnNldC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1zZXRzaXplJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiAqLwogICAgICAgICdhcmlhLXNvcnQnPzogJ25vbmUnIHwgJ2FzY2VuZGluZycgfCAnZGVzY2VuZGluZycgfCAnb3RoZXInIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2Ugd2lkZ2V0LiAqLwogICAgICAgICdhcmlhLXZhbHVlbWF4Jz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogRGVmaW5lcyB0aGUgbWluaW11bSBhbGxvd2VkIHZhbHVlIGZvciBhIHJhbmdlIHdpZGdldC4gKi8KICAgICAgICAnYXJpYS12YWx1ZW1pbic/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSB3aWRnZXQuCiAgICAgICAgICogQHNlZSBhcmlhLXZhbHVldGV4dC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS12YWx1ZW5vdyc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIERlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS12YWx1ZW5vdyBmb3IgYSByYW5nZSB3aWRnZXQuICovCiAgICAgICAgJ2FyaWEtdmFsdWV0ZXh0Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvLyBBbGwgdGhlIFdBSS1BUklBIDEuMSByb2xlIGF0dHJpYnV0ZSB2YWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNyb2xlX2RlZmluaXRpb25zCiAgICB0eXBlIEFyaWFSb2xlID0KICAgICAgICB8ICdhbGVydCcKICAgICAgICB8ICdhbGVydGRpYWxvZycKICAgICAgICB8ICdhcHBsaWNhdGlvbicKICAgICAgICB8ICdhcnRpY2xlJwogICAgICAgIHwgJ2Jhbm5lcicKICAgICAgICB8ICdidXR0b24nCiAgICAgICAgfCAnY2VsbCcKICAgICAgICB8ICdjaGVja2JveCcKICAgICAgICB8ICdjb2x1bW5oZWFkZXInCiAgICAgICAgfCAnY29tYm9ib3gnCiAgICAgICAgfCAnY29tcGxlbWVudGFyeScKICAgICAgICB8ICdjb250ZW50aW5mbycKICAgICAgICB8ICdkZWZpbml0aW9uJwogICAgICAgIHwgJ2RpYWxvZycKICAgICAgICB8ICdkaXJlY3RvcnknCiAgICAgICAgfCAnZG9jdW1lbnQnCiAgICAgICAgfCAnZmVlZCcKICAgICAgICB8ICdmaWd1cmUnCiAgICAgICAgfCAnZm9ybScKICAgICAgICB8ICdncmlkJwogICAgICAgIHwgJ2dyaWRjZWxsJwogICAgICAgIHwgJ2dyb3VwJwogICAgICAgIHwgJ2hlYWRpbmcnCiAgICAgICAgfCAnaW1nJwogICAgICAgIHwgJ2xpbmsnCiAgICAgICAgfCAnbGlzdCcKICAgICAgICB8ICdsaXN0Ym94JwogICAgICAgIHwgJ2xpc3RpdGVtJwogICAgICAgIHwgJ2xvZycKICAgICAgICB8ICdtYWluJwogICAgICAgIHwgJ21hcnF1ZWUnCiAgICAgICAgfCAnbWF0aCcKICAgICAgICB8ICdtZW51JwogICAgICAgIHwgJ21lbnViYXInCiAgICAgICAgfCAnbWVudWl0ZW0nCiAgICAgICAgfCAnbWVudWl0ZW1jaGVja2JveCcKICAgICAgICB8ICdtZW51aXRlbXJhZGlvJwogICAgICAgIHwgJ25hdmlnYXRpb24nCiAgICAgICAgfCAnbm9uZScKICAgICAgICB8ICdub3RlJwogICAgICAgIHwgJ29wdGlvbicKICAgICAgICB8ICdwcmVzZW50YXRpb24nCiAgICAgICAgfCAncHJvZ3Jlc3NiYXInCiAgICAgICAgfCAncmFkaW8nCiAgICAgICAgfCAncmFkaW9ncm91cCcKICAgICAgICB8ICdyZWdpb24nCiAgICAgICAgfCAncm93JwogICAgICAgIHwgJ3Jvd2dyb3VwJwogICAgICAgIHwgJ3Jvd2hlYWRlcicKICAgICAgICB8ICdzY3JvbGxiYXInCiAgICAgICAgfCAnc2VhcmNoJwogICAgICAgIHwgJ3NlYXJjaGJveCcKICAgICAgICB8ICdzZXBhcmF0b3InCiAgICAgICAgfCAnc2xpZGVyJwogICAgICAgIHwgJ3NwaW5idXR0b24nCiAgICAgICAgfCAnc3RhdHVzJwogICAgICAgIHwgJ3N3aXRjaCcKICAgICAgICB8ICd0YWInCiAgICAgICAgfCAndGFibGUnCiAgICAgICAgfCAndGFibGlzdCcKICAgICAgICB8ICd0YWJwYW5lbCcKICAgICAgICB8ICd0ZXJtJwogICAgICAgIHwgJ3RleHRib3gnCiAgICAgICAgfCAndGltZXInCiAgICAgICAgfCAndG9vbGJhcicKICAgICAgICB8ICd0b29sdGlwJwogICAgICAgIHwgJ3RyZWUnCiAgICAgICAgfCAndHJlZWdyaWQnCiAgICAgICAgfCAndHJlZWl0ZW0nCiAgICAgICAgfCAoc3RyaW5nICYge30pOwoKICAgIGludGVyZmFjZSBIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEFyaWFBdHRyaWJ1dGVzLCBET01BdHRyaWJ1dGVzPFQ+IHsKICAgICAgICAvLyBSZWFjdC1zcGVjaWZpYyBBdHRyaWJ1dGVzCiAgICAgICAgZGVmYXVsdENoZWNrZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IG51bWJlciB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZDsKICAgICAgICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFN0YW5kYXJkIEhUTUwgQXR0cmlidXRlcwogICAgICAgIGFjY2Vzc0tleT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvRm9jdXM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50RWRpdGFibGU/OiBCb29sZWFuaXNoIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHRNZW51Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkcmFnZ2FibGU/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIGhpZGRlbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub25jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzbG90Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwZWxsQ2hlY2s/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0YWJJbmRleD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0cmFuc2xhdGU/OiAneWVzJyB8ICdubycgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFVua25vd24KICAgICAgICByYWRpb0dyb3VwPzogc3RyaW5nIHwgdW5kZWZpbmVkOyAvLyA8Y29tbWFuZD4sIDxtZW51aXRlbT4KCiAgICAgICAgLy8gV0FJLUFSSUEKICAgICAgICByb2xlPzogQXJpYVJvbGUgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFJERmEgQXR0cmlidXRlcwogICAgICAgIGFib3V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRlbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGF0YXR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW5saXN0PzogYW55OwogICAgICAgIHByZWZpeD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcm9wZXJ0eT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVzb3VyY2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmV2Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGVvZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2b2NhYj86IHN0cmluZyB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gTm9uLXN0YW5kYXJkIEF0dHJpYnV0ZXMKICAgICAgICBhdXRvQ2FwaXRhbGl6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvQ29ycmVjdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvU2F2ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtUHJvcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtU2NvcGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1UeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1JRD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtUmVmPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3VsdHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2VjdXJpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5zZWxlY3RhYmxlPzogJ29uJyB8ICdvZmYnIHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBMaXZpbmcgU3RhbmRhcmQKICAgICAgICAvKioKICAgICAgICAgKiBIaW50cyBhdCB0aGUgdHlwZSBvZiBkYXRhIHRoYXQgbWlnaHQgYmUgZW50ZXJlZCBieSB0aGUgdXNlciB3aGlsZSBlZGl0aW5nIHRoZSBlbGVtZW50IG9yIGl0cyBjb250ZW50cwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW50ZXJhY3Rpb24uaHRtbCNpbnB1dC1tb2RhbGl0aWVzOi10aGUtaW5wdXRtb2RlLWF0dHJpYnV0ZQogICAgICAgICAqLwogICAgICAgIGlucHV0TW9kZT86ICdub25lJyB8ICd0ZXh0JyB8ICd0ZWwnIHwgJ3VybCcgfCAnZW1haWwnIHwgJ251bWVyaWMnIHwgJ2RlY2ltYWwnIHwgJ3NlYXJjaCcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogU3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIGRlZmluZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2F0dHItaXMKICAgICAgICAgKi8KICAgICAgICBpcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvKioKICAgICAqIEZvciBpbnRlcm5hbCB1c2FnZSBvbmx5LgogICAgICogRGlmZmVyZW50IHJlbGVhc2UgY2hhbm5lbHMgZGVjbGFyZSBhZGRpdGlvbmFsIHR5cGVzIG9mIFJlYWN0Tm9kZSB0aGlzIHBhcnRpY3VsYXIgcmVsZWFzZSBjaGFubmVsIGFjY2VwdHMuCiAgICAgKiBBcHAgb3IgbGlicmFyeSB0eXBlcyBzaG91bGQgbmV2ZXIgYXVnbWVudCB0aGlzIGludGVyZmFjZS4KICAgICAqLwogICAgaW50ZXJmYWNlIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OUyB7fQoKICAgIGludGVyZmFjZSBBbGxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICAvLyBTdGFuZGFyZCBIVE1MIEF0dHJpYnV0ZXMKICAgICAgICBhY2NlcHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWNjZXB0Q2hhcnNldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhY3Rpb24/OgogICAgICAgICAgICB8IHN0cmluZwogICAgICAgICAgICB8IHVuZGVmaW5lZAogICAgICAgICAgICB8IERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU1trZXlvZiBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNdOwogICAgICAgIGFsbG93RnVsbFNjcmVlbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dUcmFuc3BhcmVuY3k/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFsdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhc3luYz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGF1dG9QbGF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBjYXB0dXJlPzogYm9vbGVhbiB8ICd1c2VyJyB8ICdlbnZpcm9ubWVudCcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2hhclNldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjaGFsbGVuZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2hlY2tlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjbGFzc0lEPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sU3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBjb250cm9scz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY29vcmRzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwogICAgICAgIGRhdGE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGF0ZVRpbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkb3dubG9hZD86IGFueTsKICAgICAgICBlbmNUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUFjdGlvbj86CiAgICAgICAgICAgIHwgc3RyaW5nCiAgICAgICAgICAgIHwgdW5kZWZpbmVkCiAgICAgICAgICAgIHwgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU107CiAgICAgICAgZm9ybUVuY1R5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybU1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybVRhcmdldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmcmFtZUJvcmRlcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWFkZXJzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoaWdoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHRtbEZvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBodHRwRXF1aXY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW50ZWdyaXR5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtleVBhcmFtcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXlUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtpbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb29wPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsb3c/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFuaWZlc3Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFyZ2luSGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmdpbldpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXhMZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWFHcm91cD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtZXRob2Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtdWx0aXBsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbXV0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb3B0aW11bT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlbG9hZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWFkT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJldmVyc2VkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByb3dzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHJvd1NwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2FuZGJveD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNjcm9sbGluZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWFtbGVzcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc2VsZWN0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNoYXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemU/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2l6ZXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjRG9jPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyY0xhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjU2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0YXJ0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHN0ZXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3VtbWFyeT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB1c2VNYXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd21vZGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd3JhcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSA9CiAgICAgICAgfCAnJwogICAgICAgIHwgJ25vLXJlZmVycmVyJwogICAgICAgIHwgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJwogICAgICAgIHwgJ29yaWdpbicKICAgICAgICB8ICdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nCiAgICAgICAgfCAnc2FtZS1vcmlnaW4nCiAgICAgICAgfCAnc3RyaWN0LW9yaWdpbicKICAgICAgICB8ICdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJwogICAgICAgIHwgJ3Vuc2FmZS11cmwnOwoKICAgIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCA9CiAgICAgICAgfCAnX3NlbGYnCiAgICAgICAgfCAnX2JsYW5rJwogICAgICAgIHwgJ19wYXJlbnQnCiAgICAgICAgfCAnX3RvcCcKICAgICAgICB8IChzdHJpbmcgJiB7fSk7CgogICAgaW50ZXJmYWNlIEFuY2hvckhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGRvd25sb2FkPzogYW55OwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGluZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBIVE1MQXR0cmlidXRlQW5jaG9yVGFyZ2V0IHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEF1ZGlvSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBNZWRpYUhUTUxBdHRyaWJ1dGVzPFQ+IHt9CgogICAgaW50ZXJmYWNlIEFyZWFIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29vcmRzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRvd25sb2FkPzogYW55OwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICAgICAgc2hhcGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBCYXNlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEJsb2NrcXVvdGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBCdXR0b25IVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtQWN0aW9uPzoKICAgICAgICAgICAgfCBzdHJpbmcKICAgICAgICAgICAgfCBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNba2V5b2YgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TXQogICAgICAgICAgICB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtRW5jVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTWV0aG9kPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm1Ob1ZhbGlkYXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtVGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86ICdzdWJtaXQnIHwgJ3Jlc2V0JyB8ICdidXR0b24nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBDYW52YXNIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIHNwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbGdyb3VwSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGF0YUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBEZXRhaWxzSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgb3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub2dnbGU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGVsSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGlhbG9nSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgb25DYW5jZWw/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8ICB1bmRlZmluZWQ7CiAgICAgICAgb25DbG9zZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgIHVuZGVmaW5lZDsKICAgICAgICBvcGVuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRW1iZWRIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRm9ybUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFjY2VwdENoYXJzZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWN0aW9uPzoKICAgICAgICAgICAgfCBzdHJpbmcKICAgICAgICAgICAgfCB1bmRlZmluZWQKICAgICAgICAgICAgfCBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNba2V5b2YgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TXTsKICAgICAgICBhdXRvQ29tcGxldGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW5jVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtZXRob2Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub1ZhbGlkYXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEh0bWxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBtYW5pZmVzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgSWZyYW1lSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYWxsb3c/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dGdWxsU2NyZWVuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGxvd1RyYW5zcGFyZW5jeT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgZnJhbWVCb3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxvYWRpbmc/OiAiZWFnZXIiIHwgImxhenkiIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIG1hcmdpbkhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8KICAgICAgICBtYXJnaW5XaWR0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlZmVycmVyUG9saWN5PzogSFRNTEF0dHJpYnV0ZVJlZmVycmVyUG9saWN5IHwgdW5kZWZpbmVkOwogICAgICAgIHNhbmRib3g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgc2Nyb2xsaW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNlYW1sZXNzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjRG9jPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBJbWdIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVjb2Rpbmc/OiAiYXN5bmMiIHwgImF1dG8iIHwgInN5bmMiIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb2FkaW5nPzogImVhZ2VyIiB8ICJsYXp5IiB8IHVuZGVmaW5lZDsKICAgICAgICByZWZlcnJlclBvbGljeT86IEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSB8IHVuZGVmaW5lZDsKICAgICAgICBzaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjU2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZU1hcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgSW5zSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEhUTUxJbnB1dFR5cGVBdHRyaWJ1dGUgPQogICAgICAgIHwgJ2J1dHRvbicKICAgICAgICB8ICdjaGVja2JveCcKICAgICAgICB8ICdjb2xvcicKICAgICAgICB8ICdkYXRlJwogICAgICAgIHwgJ2RhdGV0aW1lLWxvY2FsJwogICAgICAgIHwgJ2VtYWlsJwogICAgICAgIHwgJ2ZpbGUnCiAgICAgICAgfCAnaGlkZGVuJwogICAgICAgIHwgJ2ltYWdlJwogICAgICAgIHwgJ21vbnRoJwogICAgICAgIHwgJ251bWJlcicKICAgICAgICB8ICdwYXNzd29yZCcKICAgICAgICB8ICdyYWRpbycKICAgICAgICB8ICdyYW5nZScKICAgICAgICB8ICdyZXNldCcKICAgICAgICB8ICdzZWFyY2gnCiAgICAgICAgfCAnc3VibWl0JwogICAgICAgIHwgJ3RlbCcKICAgICAgICB8ICd0ZXh0JwogICAgICAgIHwgJ3RpbWUnCiAgICAgICAgfCAndXJsJwogICAgICAgIHwgJ3dlZWsnCiAgICAgICAgfCAoc3RyaW5nICYge30pOwoKICAgIGludGVyZmFjZSBJbnB1dEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFjY2VwdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNhcHR1cmU/OiBib29sZWFuIHwgJ3VzZXInIHwgJ2Vudmlyb25tZW50JyB8IHVuZGVmaW5lZDsgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtbWVkaWEtY2FwdHVyZS8jdGhlLWNhcHR1cmUtYXR0cmlidXRlCiAgICAgICAgY2hlY2tlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGVyS2V5SGludD86ICdlbnRlcicgfCAnZG9uZScgfCAnZ28nIHwgJ25leHQnIHwgJ3ByZXZpb3VzJyB8ICdzZWFyY2gnIHwgJ3NlbmQnIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUFjdGlvbj86CiAgICAgICAgICAgIHwgc3RyaW5nCiAgICAgICAgICAgIHwgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU10KICAgICAgICAgICAgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUVuY1R5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybU1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybVRhcmdldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5MZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbXVsdGlwbGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWFkT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemU/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0ZXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IEhUTUxJbnB1dFR5cGVBdHRyaWJ1dGUgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CgogICAgICAgIG9uQ2hhbmdlPzogQ2hhbmdlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBLZXlnZW5IVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaGFsbGVuZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5VHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXlQYXJhbXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTGFiZWxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGh0bWxGb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIExpSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIExpbmtIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjcm9zc09yaWdpbj86ICJhbm9ueW1vdXMiIHwgInVzZS1jcmVkZW50aWFscyIgfCAiIiB8IHVuZGVmaW5lZDsKICAgICAgICBmZXRjaHByaW9yaXR5PzogImhpZ2giIHwgImxvdyIgfCAiYXV0byI7CiAgICAgICAgaHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBocmVmTGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpbnRlZ3JpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VTcmNTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VTaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWZlcnJlclBvbGljeT86IEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSB8IHVuZGVmaW5lZDsKICAgICAgICBzaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE1hcEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE1lbnVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBNZWRpYUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9QbGF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250cm9scz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY29udHJvbHNMaXN0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwogICAgICAgIGxvb3A/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhR3JvdXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbXV0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVsb2FkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWV0YUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHR0cEVxdWl2Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29udGVudD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWV0ZXJIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhpZ2g/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbG93PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3B0aW11bT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgUXVvdGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBPYmplY3RIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjbGFzc0lEPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRhdGE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZU1hcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3bW9kZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgT2xIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICByZXZlcnNlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3RhcnQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86ICcxJyB8ICdhJyB8ICdBJyB8ICdpJyB8ICdJJyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgT3B0Z3JvdXBIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE9wdGlvbkhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWxlY3RlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE91dHB1dEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHRtbEZvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBQYXJhbUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFByb2dyZXNzSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBTbG90SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU2NyaXB0SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYXN5bmM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGludGVncml0eT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub01vZHVsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFNlbGVjdEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtdWx0aXBsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc2l6ZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86IENoYW5nZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU291cmNlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemVzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmNTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU3R5bGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBtZWRpYT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRhYmxlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYWxpZ24/OiAibGVmdCIgfCAiY2VudGVyIiB8ICJyaWdodCIgfCB1bmRlZmluZWQ7CiAgICAgICAgYmdjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBib3JkZXI/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnJhbWU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJ1bGVzPzogIm5vbmUiIHwgImdyb3VwcyIgfCAicm93cyIgfCAiY29sdW1ucyIgfCAiYWxsIiB8IHVuZGVmaW5lZDsKICAgICAgICBzdW1tYXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGRpck5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlYWRPbmx5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcm93cz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB3cmFwPzogc3RyaW5nIHwgdW5kZWZpbmVkOwoKICAgICAgICBvbkNoYW5nZT86IENoYW5nZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgVGRIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbGlnbj86ICJsZWZ0IiB8ICJjZW50ZXIiIHwgInJpZ2h0IiB8ICJqdXN0aWZ5IiB8ICJjaGFyIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xTcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhlYWRlcnM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcm93U3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhYmJyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YWxpZ24/OiAidG9wIiB8ICJtaWRkbGUiIHwgImJvdHRvbSIgfCAiYmFzZWxpbmUiIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBUaEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFsaWduPzogImxlZnQiIHwgImNlbnRlciIgfCAicmlnaHQiIHwgImp1c3RpZnkiIHwgImNoYXIiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbFNwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVhZGVycz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByb3dTcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHNjb3BlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGFiYnI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRpbWVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgVHJhY2tIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkZWZhdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBraW5kPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmNMYW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBWaWRlb0hUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgTWVkaWFIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVSZW1vdGVQbGF5YmFjaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgLy8gdGhpcyBsaXN0IGlzICJjb21wbGV0ZSIgaW4gdGhhdCBpdCBjb250YWlucyBldmVyeSBTVkcgYXR0cmlidXRlCiAgICAvLyB0aGF0IFJlYWN0IHN1cHBvcnRzLCBidXQgdGhlIHR5cGVzIGNhbiBiZSBpbXByb3ZlZC4KICAgIC8vIEZ1bGwgbGlzdCBoZXJlOiBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2RvbS1lbGVtZW50cy5odG1sCiAgICAvLwogICAgLy8gVGhlIHRocmVlIGJyb2FkIHR5cGUgY2F0ZWdvcmllcyBhcmUgKGluIG9yZGVyIG9mIHJlc3RyaWN0aXZlbmVzcyk6CiAgICAvLyAgIC0gIm51bWJlciB8IHN0cmluZyIKICAgIC8vICAgLSAic3RyaW5nIgogICAgLy8gICAtIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFscwogICAgaW50ZXJmYWNlIFNWR0F0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBBcmlhQXR0cmlidXRlcywgRE9NQXR0cmlidXRlczxUPiB7CiAgICAgICAgLy8gUmVhY3Qtc3BlY2lmaWMgQXR0cmlidXRlcwogICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIEF0dHJpYnV0ZXMgd2hpY2ggYWxzbyBkZWZpbmVkIGluIEhUTUxBdHRyaWJ1dGVzCiAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gU1ZHRE9NUHJvcGVydHlDb25maWcuanMKICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IENTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIE90aGVyIEhUTUwgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgU1ZHIGVsZW1lbnRzIGluIGJyb3dzZXJzCiAgICAgICAgcm9sZT86IEFyaWFSb2xlIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYkluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBTVkcgU3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgIGFjY2VudEhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhY2N1bXVsYXRlPzogIm5vbmUiIHwgInN1bSIgfCB1bmRlZmluZWQ7CiAgICAgICAgYWRkaXRpdmU/OiAicmVwbGFjZSIgfCAic3VtIiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGlnbm1lbnRCYXNlbGluZT86ICJhdXRvIiB8ICJiYXNlbGluZSIgfCAiYmVmb3JlLWVkZ2UiIHwgInRleHQtYmVmb3JlLWVkZ2UiIHwgIm1pZGRsZSIgfCAiY2VudHJhbCIgfCAiYWZ0ZXItZWRnZSIgfAogICAgICAgICJ0ZXh0LWFmdGVyLWVkZ2UiIHwgImlkZW9ncmFwaGljIiB8ICJhbHBoYWJldGljIiB8ICJoYW5naW5nIiB8ICJtYXRoZW1hdGljYWwiIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGFsbG93UmVvcmRlcj86ICJubyIgfCAieWVzIiB8IHVuZGVmaW5lZDsKICAgICAgICBhbHBoYWJldGljPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGFtcGxpdHVkZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhcmFiaWNGb3JtPzogImluaXRpYWwiIHwgIm1lZGlhbCIgfCAidGVybWluYWwiIHwgImlzb2xhdGVkIiB8IHVuZGVmaW5lZDsKICAgICAgICBhc2NlbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYXR0cmlidXRlTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdHRyaWJ1dGVUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGF1dG9SZXZlcnNlPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICBhemltdXRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJhc2VGcmVxdWVuY3k/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYmFzZWxpbmVTaGlmdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBiYXNlUHJvZmlsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBiYm94PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJlZ2luPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJpYXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYnk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2FsY01vZGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2FwSGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNsaXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2xpcFBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2xpcFBhdGhVbml0cz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjbGlwUnVsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvckludGVycG9sYXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycz86ICJhdXRvIiB8ICJzUkdCIiB8ICJsaW5lYXJSR0IiIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbG9yUHJvZmlsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvclJlbmRlcmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50U2NyaXB0VHlwZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50U3R5bGVUeXBlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGN1cnNvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlY2VsZXJhdGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY2VudD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaWZmdXNlQ29uc3RhbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlyZWN0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc3BsYXk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGl2aXNvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkb21pbmFudEJhc2VsaW5lPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGR1cj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlZGdlTW9kZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbGV2YXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW5hYmxlQmFja2dyb3VuZD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbmQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZXhwb25lbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgZmlsbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmaWxsT3BhY2l0eT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmaWxsUnVsZT86ICJub256ZXJvIiB8ICJldmVub2RkIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBmaWx0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZmlsdGVyUmVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZpbHRlclVuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZsb29kQ29sb3I/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZmxvb2RPcGFjaXR5PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvY3VzYWJsZT86IEJvb2xlYW5pc2ggfCAiYXV0byIgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udEZhbWlseT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U2l6ZUFkanVzdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U3RyZXRjaD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U3R5bGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udFZhcmlhbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udFdlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtYXQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnJvbT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnMj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnbHlwaE5hbWU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdseXBoUmVmPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdyYWRpZW50VW5pdHM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGFuZ2luZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBob3JpekFkdlg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaG9yaXpPcmlnaW5YPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaWRlb2dyYXBoaWM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VSZW5kZXJpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW4yPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGludGVyY2VwdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrND86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtlcm5lbE1hdHJpeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXJuZWxVbml0TGVuZ3RoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtlcm5pbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5UG9pbnRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtleVNwbGluZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5VGltZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGVuZ3RoQWRqdXN0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxldHRlclNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlnaHRpbmdDb2xvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb2NhbD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJFbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFya2VySGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmtlck1pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJTdGFydD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJVbml0cz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJXaWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXNrPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hc2tDb250ZW50VW5pdHM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFza1VuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hdGhlbWF0aWNhbD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG51bU9jdGF2ZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9wYWNpdHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3BlcmF0b3I/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JpZW50PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWVudGF0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWdpbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvdmVyZmxvdz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvdmVybGluZVBvc2l0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG92ZXJsaW5lVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhaW50T3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGFub3NlMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhdGhMZW5ndGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0dGVybkNvbnRlbnRVbml0cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhdHRlcm5Vbml0cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2ludGVyRXZlbnRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBvaW50cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2ludHNBdFg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcG9pbnRzQXRZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBvaW50c0F0Wj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUFscGhhPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByaW1pdGl2ZVVuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmFkaXVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlZlg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmWT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZW5kZXJpbmdJbnRlbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVwZWF0Q291bnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVwZWF0RHVyPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZEZlYXR1cmVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3RhcnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVzdWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJvdGF0ZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY2FsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWVkPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNoYXBlUmVuZGVyaW5nPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNsb3BlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3BlY3VsYXJDb25zdGFudD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcGVjdWxhckV4cG9uZW50PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwZWVkPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwcmVhZE1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdGFydE9mZnNldD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdGREZXZpYXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RlbWg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RlbXY/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RpdGNoVGlsZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RvcENvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0b3BPcGFjaXR5PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlRGFzaGFycmF5Pzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cm9rZURhc2hvZmZzZXQ/OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlTGluZWNhcD86ICJidXR0IiB8ICJyb3VuZCIgfCAic3F1YXJlIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2VMaW5lam9pbj86ICJtaXRlciIgfCAicm91bmQiIHwgImJldmVsIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2VNaXRlcmxpbWl0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cm9rZU9wYWNpdHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlV2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3VyZmFjZVNjYWxlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN5c3RlbUxhbmd1YWdlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYmxlVmFsdWVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhcmdldFg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0WT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZXh0QW5jaG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRleHREZWNvcmF0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRleHRMZW5ndGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGV4dFJlbmRlcmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0bz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0cmFuc2Zvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdTE/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdTI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5kZXJsaW5lUG9zaXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5kZXJsaW5lVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVuaWNvZGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5pY29kZUJpZGk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5pY29kZVJhbmdlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVuaXRzUGVyRW0/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdkFscGhhYmV0aWM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWVzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlY3RvckVmZmVjdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRBZHZZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRPcmlnaW5YPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRPcmlnaW5ZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZIYW5naW5nPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZJZGVvZ3JhcGhpYz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2aWV3Qm94Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZpZXdUYXJnZXQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmlzaWJpbGl0eT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2TWF0aGVtYXRpY2FsPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRocz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3b3JkU3BhY2luZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3cml0aW5nTW9kZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4MT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4Mj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhDaGFubmVsU2VsZWN0b3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeEhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bGlua0FjdHVhdGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtBcmNyb2xlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhsaW5rSHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bGlua1JvbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtTaG93Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhsaW5rVGl0bGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhtbEJhc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeG1sTGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bWxucz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bWxuc1hsaW5rPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhtbFNwYWNlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHkxPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHkyPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeUNoYW5uZWxTZWxlY3Rvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB6PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHpvb21BbmRQYW4/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFdlYlZpZXdIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbGxvd0Z1bGxTY3JlZW4/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFsbG93cG9wdXBzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvc2l6ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYmxpbmtmZWF0dXJlcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlYmxpbmtmZWF0dXJlcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZ3Vlc3RyZXNpemU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGV3ZWJzZWN1cml0eT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZ3Vlc3RpbnN0YW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBodHRwcmVmZXJyZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbm9kZWludGVncmF0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwYXJ0aXRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGx1Z2lucz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlbG9hZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdXNlcmFnZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdlYnByZWZlcmVuY2VzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIC8vCiAgICAvLyBSZWFjdC5ET00KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBpbnRlcmZhY2UgUmVhY3RIVE1MIHsKICAgICAgICBhOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PiwgSFRNTEFuY2hvckVsZW1lbnQ+OwogICAgICAgIGFiYnI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYWRkcmVzczogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBhcmVhOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEFyZWFIVE1MQXR0cmlidXRlczxIVE1MQXJlYUVsZW1lbnQ+LCBIVE1MQXJlYUVsZW1lbnQ+OwogICAgICAgIGFydGljbGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYXNpZGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYXVkaW86IERldGFpbGVkSFRNTEZhY3Rvcnk8QXVkaW9IVE1MQXR0cmlidXRlczxIVE1MQXVkaW9FbGVtZW50PiwgSFRNTEF1ZGlvRWxlbWVudD47CiAgICAgICAgYjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBiYXNlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEJhc2VIVE1MQXR0cmlidXRlczxIVE1MQmFzZUVsZW1lbnQ+LCBIVE1MQmFzZUVsZW1lbnQ+OwogICAgICAgIGJkaTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBiZG86IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYmlnOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGJsb2NrcXVvdGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8QmxvY2txdW90ZUhUTUxBdHRyaWJ1dGVzPEhUTUxRdW90ZUVsZW1lbnQ+LCBIVE1MUXVvdGVFbGVtZW50PjsKICAgICAgICBib2R5OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxCb2R5RWxlbWVudD4sIEhUTUxCb2R5RWxlbWVudD47CiAgICAgICAgYnI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEJSRWxlbWVudD4sIEhUTUxCUkVsZW1lbnQ+OwogICAgICAgIGJ1dHRvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxCdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sIEhUTUxCdXR0b25FbGVtZW50PjsKICAgICAgICBjYW52YXM6IERldGFpbGVkSFRNTEZhY3Rvcnk8Q2FudmFzSFRNTEF0dHJpYnV0ZXM8SFRNTENhbnZhc0VsZW1lbnQ+LCBIVE1MQ2FudmFzRWxlbWVudD47CiAgICAgICAgY2FwdGlvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBjZW50ZXI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgY2l0ZTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBjb2RlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGNvbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxDb2xIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDb2xFbGVtZW50PiwgSFRNTFRhYmxlQ29sRWxlbWVudD47CiAgICAgICAgY29sZ3JvdXA6IERldGFpbGVkSFRNTEZhY3Rvcnk8Q29sZ3JvdXBIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDb2xFbGVtZW50PiwgSFRNTFRhYmxlQ29sRWxlbWVudD47CiAgICAgICAgZGF0YTogRGV0YWlsZWRIVE1MRmFjdG9yeTxEYXRhSFRNTEF0dHJpYnV0ZXM8SFRNTERhdGFFbGVtZW50PiwgSFRNTERhdGFFbGVtZW50PjsKICAgICAgICBkYXRhbGlzdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRGF0YUxpc3RFbGVtZW50PiwgSFRNTERhdGFMaXN0RWxlbWVudD47CiAgICAgICAgZGQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgZGVsOiBEZXRhaWxlZEhUTUxGYWN0b3J5PERlbEhUTUxBdHRyaWJ1dGVzPEhUTUxNb2RFbGVtZW50PiwgSFRNTE1vZEVsZW1lbnQ+OwogICAgICAgIGRldGFpbHM6IERldGFpbGVkSFRNTEZhY3Rvcnk8RGV0YWlsc0hUTUxBdHRyaWJ1dGVzPEhUTUxEZXRhaWxzRWxlbWVudD4sIEhUTUxEZXRhaWxzRWxlbWVudD47CiAgICAgICAgZGZuOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGRpYWxvZzogRGV0YWlsZWRIVE1MRmFjdG9yeTxEaWFsb2dIVE1MQXR0cmlidXRlczxIVE1MRGlhbG9nRWxlbWVudD4sIEhUTUxEaWFsb2dFbGVtZW50PjsKICAgICAgICBkaXY6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBIVE1MRGl2RWxlbWVudD47CiAgICAgICAgZGw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTERMaXN0RWxlbWVudD4sIEhUTUxETGlzdEVsZW1lbnQ+OwogICAgICAgIGR0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGVtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGVtYmVkOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEVtYmVkSFRNTEF0dHJpYnV0ZXM8SFRNTEVtYmVkRWxlbWVudD4sIEhUTUxFbWJlZEVsZW1lbnQ+OwogICAgICAgIGZpZWxkc2V0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8SFRNTEZpZWxkU2V0RWxlbWVudD4sIEhUTUxGaWVsZFNldEVsZW1lbnQ+OwogICAgICAgIGZpZ2NhcHRpb246IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgZmlndXJlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGZvb3RlcjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBmb3JtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEZvcm1IVE1MQXR0cmlidXRlczxIVE1MRm9ybUVsZW1lbnQ+LCBIVE1MRm9ybUVsZW1lbnQ+OwogICAgICAgIGgxOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgaDI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICBoMzogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgIGg0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgaDU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICBoNjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgIGhlYWQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MSGVhZEVsZW1lbnQ+OwogICAgICAgIGhlYWRlcjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBoZ3JvdXA6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgaHI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhSRWxlbWVudD4sIEhUTUxIUkVsZW1lbnQ+OwogICAgICAgIGh0bWw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SHRtbEhUTUxBdHRyaWJ1dGVzPEhUTUxIdG1sRWxlbWVudD4sIEhUTUxIdG1sRWxlbWVudD47CiAgICAgICAgaTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBpZnJhbWU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SWZyYW1lSFRNTEF0dHJpYnV0ZXM8SFRNTElGcmFtZUVsZW1lbnQ+LCBIVE1MSUZyYW1lRWxlbWVudD47CiAgICAgICAgaW1nOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEltZ0hUTUxBdHRyaWJ1dGVzPEhUTUxJbWFnZUVsZW1lbnQ+LCBIVE1MSW1hZ2VFbGVtZW50PjsKICAgICAgICBpbnB1dDogRGV0YWlsZWRIVE1MRmFjdG9yeTxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgICAgICBpbnM6IERldGFpbGVkSFRNTEZhY3Rvcnk8SW5zSFRNTEF0dHJpYnV0ZXM8SFRNTE1vZEVsZW1lbnQ+LCBIVE1MTW9kRWxlbWVudD47CiAgICAgICAga2JkOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGtleWdlbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxLZXlnZW5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBsYWJlbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxMYWJlbEhUTUxBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+LCBIVE1MTGFiZWxFbGVtZW50PjsKICAgICAgICBsZWdlbmQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTExlZ2VuZEVsZW1lbnQ+LCBIVE1MTGVnZW5kRWxlbWVudD47CiAgICAgICAgbGk6IERldGFpbGVkSFRNTEZhY3Rvcnk8TGlIVE1MQXR0cmlidXRlczxIVE1MTElFbGVtZW50PiwgSFRNTExJRWxlbWVudD47CiAgICAgICAgbGluazogRGV0YWlsZWRIVE1MRmFjdG9yeTxMaW5rSFRNTEF0dHJpYnV0ZXM8SFRNTExpbmtFbGVtZW50PiwgSFRNTExpbmtFbGVtZW50PjsKICAgICAgICBtYWluOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1hcDogRGV0YWlsZWRIVE1MRmFjdG9yeTxNYXBIVE1MQXR0cmlidXRlczxIVE1MTWFwRWxlbWVudD4sIEhUTUxNYXBFbGVtZW50PjsKICAgICAgICBtYXJrOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1lbnU6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWVudUhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1lbnVpdGVtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1ldGE6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWV0YUhUTUxBdHRyaWJ1dGVzPEhUTUxNZXRhRWxlbWVudD4sIEhUTUxNZXRhRWxlbWVudD47CiAgICAgICAgbWV0ZXI6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWV0ZXJIVE1MQXR0cmlidXRlczxIVE1MTWV0ZXJFbGVtZW50PiwgSFRNTE1ldGVyRWxlbWVudD47CiAgICAgICAgbmF2OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG5vc2NyaXB0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG9iamVjdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPYmplY3RIVE1MQXR0cmlidXRlczxIVE1MT2JqZWN0RWxlbWVudD4sIEhUTUxPYmplY3RFbGVtZW50PjsKICAgICAgICBvbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPbEhUTUxBdHRyaWJ1dGVzPEhUTUxPTGlzdEVsZW1lbnQ+LCBIVE1MT0xpc3RFbGVtZW50PjsKICAgICAgICBvcHRncm91cDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPcHRncm91cEhUTUxBdHRyaWJ1dGVzPEhUTUxPcHRHcm91cEVsZW1lbnQ+LCBIVE1MT3B0R3JvdXBFbGVtZW50PjsKICAgICAgICBvcHRpb246IERldGFpbGVkSFRNTEZhY3Rvcnk8T3B0aW9uSFRNTEF0dHJpYnV0ZXM8SFRNTE9wdGlvbkVsZW1lbnQ+LCBIVE1MT3B0aW9uRWxlbWVudD47CiAgICAgICAgb3V0cHV0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PE91dHB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxPdXRwdXRFbGVtZW50PiwgSFRNTE91dHB1dEVsZW1lbnQ+OwogICAgICAgIHA6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+LCBIVE1MUGFyYWdyYXBoRWxlbWVudD47CiAgICAgICAgcGFyYW06IERldGFpbGVkSFRNTEZhY3Rvcnk8UGFyYW1IVE1MQXR0cmlidXRlczxIVE1MUGFyYW1FbGVtZW50PiwgSFRNTFBhcmFtRWxlbWVudD47CiAgICAgICAgcGljdHVyZTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBwcmU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFByZUVsZW1lbnQ+LCBIVE1MUHJlRWxlbWVudD47CiAgICAgICAgcHJvZ3Jlc3M6IERldGFpbGVkSFRNTEZhY3Rvcnk8UHJvZ3Jlc3NIVE1MQXR0cmlidXRlczxIVE1MUHJvZ3Jlc3NFbGVtZW50PiwgSFRNTFByb2dyZXNzRWxlbWVudD47CiAgICAgICAgcTogRGV0YWlsZWRIVE1MRmFjdG9yeTxRdW90ZUhUTUxBdHRyaWJ1dGVzPEhUTUxRdW90ZUVsZW1lbnQ+LCBIVE1MUXVvdGVFbGVtZW50PjsKICAgICAgICBycDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBydDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBydWJ5OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHM6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc2FtcDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBzZWFyY2g6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc2xvdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxTbG90SFRNTEF0dHJpYnV0ZXM8SFRNTFNsb3RFbGVtZW50PiwgSFRNTFNsb3RFbGVtZW50PjsKICAgICAgICBzY3JpcHQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8U2NyaXB0SFRNTEF0dHJpYnV0ZXM8SFRNTFNjcmlwdEVsZW1lbnQ+LCBIVE1MU2NyaXB0RWxlbWVudD47CiAgICAgICAgc2VjdGlvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBzZWxlY3Q6IERldGFpbGVkSFRNTEZhY3Rvcnk8U2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+LCBIVE1MU2VsZWN0RWxlbWVudD47CiAgICAgICAgc21hbGw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc291cmNlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFNvdXJjZUhUTUxBdHRyaWJ1dGVzPEhUTUxTb3VyY2VFbGVtZW50PiwgSFRNTFNvdXJjZUVsZW1lbnQ+OwogICAgICAgIHNwYW46IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PiwgSFRNTFNwYW5FbGVtZW50PjsKICAgICAgICBzdHJvbmc6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc3R5bGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8U3R5bGVIVE1MQXR0cmlidXRlczxIVE1MU3R5bGVFbGVtZW50PiwgSFRNTFN0eWxlRWxlbWVudD47CiAgICAgICAgc3ViOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHN1bW1hcnk6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc3VwOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHRhYmxlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFRhYmxlSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4sIEhUTUxUYWJsZUVsZW1lbnQ+OwogICAgICAgIHRlbXBsYXRlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+LCBIVE1MVGVtcGxhdGVFbGVtZW50PjsKICAgICAgICB0Ym9keTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4sIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PjsKICAgICAgICB0ZDogRGV0YWlsZWRIVE1MRmFjdG9yeTxUZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD4sIEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD47CiAgICAgICAgdGV4dGFyZWE6IERldGFpbGVkSFRNTEZhY3Rvcnk8VGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiwgSFRNTFRleHRBcmVhRWxlbWVudD47CiAgICAgICAgdGZvb3Q6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+LCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD47CiAgICAgICAgdGg6IERldGFpbGVkSFRNTEZhY3Rvcnk8VGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD4sIEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PjsKICAgICAgICB0aGVhZDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4sIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PjsKICAgICAgICB0aW1lOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFRpbWVIVE1MQXR0cmlidXRlczxIVE1MVGltZUVsZW1lbnQ+LCBIVE1MVGltZUVsZW1lbnQ+OwogICAgICAgIHRpdGxlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxUaXRsZUVsZW1lbnQ+LCBIVE1MVGl0bGVFbGVtZW50PjsKICAgICAgICB0cjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50PiwgSFRNTFRhYmxlUm93RWxlbWVudD47CiAgICAgICAgdHJhY2s6IERldGFpbGVkSFRNTEZhY3Rvcnk8VHJhY2tIVE1MQXR0cmlidXRlczxIVE1MVHJhY2tFbGVtZW50PiwgSFRNTFRyYWNrRWxlbWVudD47CiAgICAgICAgdTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICB1bDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVUxpc3RFbGVtZW50PiwgSFRNTFVMaXN0RWxlbWVudD47CiAgICAgICAgInZhciI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgdmlkZW86IERldGFpbGVkSFRNTEZhY3Rvcnk8VmlkZW9IVE1MQXR0cmlidXRlczxIVE1MVmlkZW9FbGVtZW50PiwgSFRNTFZpZGVvRWxlbWVudD47CiAgICAgICAgd2JyOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHdlYnZpZXc6IERldGFpbGVkSFRNTEZhY3Rvcnk8V2ViVmlld0hUTUxBdHRyaWJ1dGVzPEhUTUxXZWJWaWV3RWxlbWVudD4sIEhUTUxXZWJWaWV3RWxlbWVudD47CiAgICB9CgogICAgaW50ZXJmYWNlIFJlYWN0U1ZHIHsKICAgICAgICBhbmltYXRlOiBTVkdGYWN0b3J5OwogICAgICAgIGNpcmNsZTogU1ZHRmFjdG9yeTsKICAgICAgICBjbGlwUGF0aDogU1ZHRmFjdG9yeTsKICAgICAgICBkZWZzOiBTVkdGYWN0b3J5OwogICAgICAgIGRlc2M6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZWxsaXBzZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZUJsZW5kOiBTVkdGYWN0b3J5OwogICAgICAgIGZlQ29sb3JNYXRyaXg6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVDb21wb25lbnRUcmFuc2ZlcjogU1ZHRmFjdG9yeTsKICAgICAgICBmZUNvbXBvc2l0ZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZUNvbnZvbHZlTWF0cml4OiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlmZnVzZUxpZ2h0aW5nOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlzcGxhY2VtZW50TWFwOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlzdGFudExpZ2h0OiBTVkdGYWN0b3J5OwogICAgICAgIGZlRHJvcFNoYWRvdzogU1ZHRmFjdG9yeTsKICAgICAgICBmZUZsb29kOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRnVuY0E6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVGdW5jQjogU1ZHRmFjdG9yeTsKICAgICAgICBmZUZ1bmNHOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRnVuY1I6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVHYXVzc2lhbkJsdXI6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVJbWFnZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZU1lcmdlOiBTVkdGYWN0b3J5OwogICAgICAgIGZlTWVyZ2VOb2RlOiBTVkdGYWN0b3J5OwogICAgICAgIGZlTW9ycGhvbG9neTogU1ZHRmFjdG9yeTsKICAgICAgICBmZU9mZnNldDogU1ZHRmFjdG9yeTsKICAgICAgICBmZVBvaW50TGlnaHQ6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVTcGVjdWxhckxpZ2h0aW5nOiBTVkdGYWN0b3J5OwogICAgICAgIGZlU3BvdExpZ2h0OiBTVkdGYWN0b3J5OwogICAgICAgIGZlVGlsZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZVR1cmJ1bGVuY2U6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmlsdGVyOiBTVkdGYWN0b3J5OwogICAgICAgIGZvcmVpZ25PYmplY3Q6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZzogU1ZHRmFjdG9yeTsKICAgICAgICBpbWFnZTogU1ZHRmFjdG9yeTsKICAgICAgICBsaW5lOiBTVkdGYWN0b3J5OwogICAgICAgIGxpbmVhckdyYWRpZW50OiBTVkdGYWN0b3J5OwogICAgICAgIG1hcmtlcjogU1ZHRmFjdG9yeTsKICAgICAgICBtYXNrOiBTVkdGYWN0b3J5OwogICAgICAgIG1ldGFkYXRhOiBTVkdGYWN0b3J5OwogICAgICAgIHBhdGg6IFNWR0ZhY3Rvcnk7CiAgICAgICAgcGF0dGVybjogU1ZHRmFjdG9yeTsKICAgICAgICBwb2x5Z29uOiBTVkdGYWN0b3J5OwogICAgICAgIHBvbHlsaW5lOiBTVkdGYWN0b3J5OwogICAgICAgIHJhZGlhbEdyYWRpZW50OiBTVkdGYWN0b3J5OwogICAgICAgIHJlY3Q6IFNWR0ZhY3Rvcnk7CiAgICAgICAgc3RvcDogU1ZHRmFjdG9yeTsKICAgICAgICBzdmc6IFNWR0ZhY3Rvcnk7CiAgICAgICAgc3dpdGNoOiBTVkdGYWN0b3J5OwogICAgICAgIHN5bWJvbDogU1ZHRmFjdG9yeTsKICAgICAgICB0ZXh0OiBTVkdGYWN0b3J5OwogICAgICAgIHRleHRQYXRoOiBTVkdGYWN0b3J5OwogICAgICAgIHRzcGFuOiBTVkdGYWN0b3J5OwogICAgICAgIHVzZTogU1ZHRmFjdG9yeTsKICAgICAgICB2aWV3OiBTVkdGYWN0b3J5OwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdERPTSBleHRlbmRzIFJlYWN0SFRNTCwgUmVhY3RTVkcgeyB9CgogICAgLy8KICAgIC8vIFJlYWN0LlByb3BUeXBlcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgVmFsaWRhdG9yPFQ+ID0gUHJvcFR5cGVzLlZhbGlkYXRvcjxUPjsKCiAgICB0eXBlIFJlcXVpcmVhYmxlPFQ+ID0gUHJvcFR5cGVzLlJlcXVpcmVhYmxlPFQ+OwoKICAgIHR5cGUgVmFsaWRhdGlvbk1hcDxUPiA9IFByb3BUeXBlcy5WYWxpZGF0aW9uTWFwPFQ+OwoKICAgIHR5cGUgV2Vha1ZhbGlkYXRpb25NYXA8VD4gPSB7CiAgICAgICAgW0sgaW4ga2V5b2YgVF0/OiBudWxsIGV4dGVuZHMgVFtLXQogICAgICAgICAgICA/IFZhbGlkYXRvcjxUW0tdIHwgbnVsbCB8IHVuZGVmaW5lZD4KICAgICAgICAgICAgOiB1bmRlZmluZWQgZXh0ZW5kcyBUW0tdCiAgICAgICAgICAgID8gVmFsaWRhdG9yPFRbS10gfCBudWxsIHwgdW5kZWZpbmVkPgogICAgICAgICAgICA6IFZhbGlkYXRvcjxUW0tdPgogICAgfTsKCiAgICBpbnRlcmZhY2UgUmVhY3RQcm9wVHlwZXMgewogICAgICAgIGFueTogdHlwZW9mIFByb3BUeXBlcy5hbnk7CiAgICAgICAgYXJyYXk6IHR5cGVvZiBQcm9wVHlwZXMuYXJyYXk7CiAgICAgICAgYm9vbDogdHlwZW9mIFByb3BUeXBlcy5ib29sOwogICAgICAgIGZ1bmM6IHR5cGVvZiBQcm9wVHlwZXMuZnVuYzsKICAgICAgICBudW1iZXI6IHR5cGVvZiBQcm9wVHlwZXMubnVtYmVyOwogICAgICAgIG9iamVjdDogdHlwZW9mIFByb3BUeXBlcy5vYmplY3Q7CiAgICAgICAgc3RyaW5nOiB0eXBlb2YgUHJvcFR5cGVzLnN0cmluZzsKICAgICAgICBub2RlOiB0eXBlb2YgUHJvcFR5cGVzLm5vZGU7CiAgICAgICAgZWxlbWVudDogdHlwZW9mIFByb3BUeXBlcy5lbGVtZW50OwogICAgICAgIGluc3RhbmNlT2Y6IHR5cGVvZiBQcm9wVHlwZXMuaW5zdGFuY2VPZjsKICAgICAgICBvbmVPZjogdHlwZW9mIFByb3BUeXBlcy5vbmVPZjsKICAgICAgICBvbmVPZlR5cGU6IHR5cGVvZiBQcm9wVHlwZXMub25lT2ZUeXBlOwogICAgICAgIGFycmF5T2Y6IHR5cGVvZiBQcm9wVHlwZXMuYXJyYXlPZjsKICAgICAgICBvYmplY3RPZjogdHlwZW9mIFByb3BUeXBlcy5vYmplY3RPZjsKICAgICAgICBzaGFwZTogdHlwZW9mIFByb3BUeXBlcy5zaGFwZTsKICAgICAgICBleGFjdDogdHlwZW9mIFByb3BUeXBlcy5leGFjdDsKICAgIH0KCiAgICAvLwogICAgLy8gUmVhY3QuQ2hpbGRyZW4KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIC0gVXNlIGB0eXBlb2YgUmVhY3QuQ2hpbGRyZW5gIGluc3RlYWQuCiAgICAgKi8KICAgIC8vIFN5bmMgd2l0aCB0eXBlIG9mIGBjb25zdCBDaGlsZHJlbmAuCiAgICBpbnRlcmZhY2UgUmVhY3RDaGlsZHJlbiB7CiAgICAgICAgbWFwPFQsIEM+KGNoaWxkcmVuOiBDIHwgUmVhZG9ubHlBcnJheTxDPiwgZm46IChjaGlsZDogQywgaW5kZXg6IG51bWJlcikgPT4gVCk6CiAgICAgICAgICAgIEMgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gQyA6IEFycmF5PEV4Y2x1ZGU8VCwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ+PjsKICAgICAgICBmb3JFYWNoPEM+KGNoaWxkcmVuOiBDIHwgUmVhZG9ubHlBcnJheTxDPiwgZm46IChjaGlsZDogQywgaW5kZXg6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7CiAgICAgICAgY291bnQoY2hpbGRyZW46IGFueSk6IG51bWJlcjsKICAgICAgICBvbmx5PEM+KGNoaWxkcmVuOiBDKTogQyBleHRlbmRzIGFueVtdID8gbmV2ZXIgOiBDOwogICAgICAgIHRvQXJyYXkoY2hpbGRyZW46IFJlYWN0Tm9kZSB8IFJlYWN0Tm9kZVtdKTogQXJyYXk8RXhjbHVkZTxSZWFjdE5vZGUsIGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPj47CiAgICB9CgogICAgLy8KICAgIC8vIEJyb3dzZXIgSW50ZXJmYWNlcwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25pa2VlZS8yMDQ4LXR5cGVzY3JpcHQvYmxvYi9tYXN0ZXIvMjA0OC9qcy90b3VjaC5kLnRzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgaW50ZXJmYWNlIEFic3RyYWN0VmlldyB7CiAgICAgICAgc3R5bGVNZWRpYTogU3R5bGVNZWRpYTsKICAgICAgICBkb2N1bWVudDogRG9jdW1lbnQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRvdWNoIHsKICAgICAgICBpZGVudGlmaWVyOiBudW1iZXI7CiAgICAgICAgdGFyZ2V0OiBFdmVudFRhcmdldDsKICAgICAgICBzY3JlZW5YOiBudW1iZXI7CiAgICAgICAgc2NyZWVuWTogbnVtYmVyOwogICAgICAgIGNsaWVudFg6IG51bWJlcjsKICAgICAgICBjbGllbnRZOiBudW1iZXI7CiAgICAgICAgcGFnZVg6IG51bWJlcjsKICAgICAgICBwYWdlWTogbnVtYmVyOwogICAgfQoKICAgIGludGVyZmFjZSBUb3VjaExpc3QgewogICAgICAgIFtpbmRleDogbnVtYmVyXTogVG91Y2g7CiAgICAgICAgbGVuZ3RoOiBudW1iZXI7CiAgICAgICAgaXRlbShpbmRleDogbnVtYmVyKTogVG91Y2g7CiAgICAgICAgaWRlbnRpZmllZFRvdWNoKGlkZW50aWZpZXI6IG51bWJlcik6IFRvdWNoOwogICAgfQoKICAgIC8vCiAgICAvLyBFcnJvciBJbnRlcmZhY2VzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpbnRlcmZhY2UgRXJyb3JJbmZvIHsKICAgICAgICAvKioKICAgICAgICAgKiBDYXB0dXJlcyB3aGljaCBjb21wb25lbnQgY29udGFpbmVkIHRoZSBleGNlcHRpb24sIGFuZCBpdHMgYW5jZXN0b3JzLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudFN0YWNrOiBzdHJpbmc7CiAgICB9CgogICAgLy8gS2VlcCBpbiBzeW5jIHdpdGggSlNYIG5hbWVzcGFjZSBpbiAuL2pzeC1ydW50aW1lLmQudHMgYW5kIC4vanN4LWRldi1ydW50aW1lLmQudHMKICAgIG5hbWVzcGFjZSBKU1ggewogICAgICAgIHR5cGUgRWxlbWVudFR5cGUgPSBHbG9iYWxKU1hFbGVtZW50VHlwZTsKICAgICAgICBpbnRlcmZhY2UgRWxlbWVudCBleHRlbmRzIEdsb2JhbEpTWEVsZW1lbnQge30KICAgICAgICBpbnRlcmZhY2UgRWxlbWVudENsYXNzIGV4dGVuZHMgR2xvYmFsSlNYRWxlbWVudENsYXNzIHt9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkgZXh0ZW5kcyBHbG9iYWxKU1hFbGVtZW50QXR0cmlidXRlc1Byb3BlcnR5IHt9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSBleHRlbmRzIEdsb2JhbEpTWEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSB7fQoKICAgICAgICB0eXBlIExpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPiA9IEdsb2JhbEpTWExpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0F0dHJpYnV0ZXMgZXh0ZW5kcyBHbG9iYWxKU1hJbnRyaW5zaWNBdHRyaWJ1dGVzIHt9CiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiBleHRlbmRzIEdsb2JhbEpTWEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiB7fQogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNFbGVtZW50cyBleHRlbmRzIEdsb2JhbEpTWEludHJpbnNpY0VsZW1lbnRzIHt9CiAgICB9Cn0KCi8vIG5ha2VkICdhbnknIHR5cGUgaW4gYSBjb25kaXRpb25hbCB0eXBlIHdpbGwgc2hvcnQgY2lyY3VpdCBhbmQgdW5pb24gYm90aCB0aGUgdGhlbi9lbHNlIGJyYW5jaGVzCi8vIHNvIGJvb2xlYW4gaXMgb25seSByZXNvbHZlZCBmb3IgVCA9IGFueQp0eXBlIElzRXhhY3RseUFueTxUPiA9IGJvb2xlYW4gZXh0ZW5kcyAoVCBleHRlbmRzIG5ldmVyID8gdHJ1ZSA6IGZhbHNlKSA/IHRydWUgOiBmYWxzZTsKCnR5cGUgRXhhY3RseUFueVByb3BlcnR5S2V5czxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IElzRXhhY3RseUFueTxUW0tdPiBleHRlbmRzIHRydWUgPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTsKdHlwZSBOb3RFeGFjdGx5QW55UHJvcGVydHlLZXlzPFQ+ID0gRXhjbHVkZTxrZXlvZiBULCBFeGFjdGx5QW55UHJvcGVydHlLZXlzPFQ+PjsKCi8vIFRyeSB0byByZXNvbHZlIGlsbC1kZWZpbmVkIHByb3BzIGxpa2UgZm9yIEpTIHVzZXJzOiBwcm9wcyBjYW4gYmUgYW55LCBvciBzb21ldGltZXMgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgb2YgdHlwZSBhbnkKdHlwZSBNZXJnZVByb3BUeXBlczxQLCBUPiA9CiAgICAvLyBEaXN0cmlidXRlIG92ZXIgUCBpbiBjYXNlIGl0IGlzIGEgdW5pb24gdHlwZQogICAgUCBleHRlbmRzIGFueQogICAgICAgIC8vIElmIHByb3BzIGlzIHR5cGUgYW55LCB1c2UgcHJvcFR5cGVzIGRlZmluaXRpb25zCiAgICAgICAgPyBJc0V4YWN0bHlBbnk8UD4gZXh0ZW5kcyB0cnVlID8gVCA6CiAgICAgICAgICAgIC8vIElmIGRlY2xhcmVkIHByb3BzIGhhdmUgaW5kZXhlZCBwcm9wZXJ0aWVzLCBpZ25vcmUgaW5mZXJyZWQgcHJvcHMgZW50aXJlbHkgYXMga2V5b2YgZ2V0cyB3aWRlbmVkCiAgICAgICAgICAgIHN0cmluZyBleHRlbmRzIGtleW9mIFAgPyBQIDoKICAgICAgICAgICAgICAgIC8vIFByZWZlciBkZWNsYXJlZCB0eXBlcyB3aGljaCBhcmUgbm90IGV4YWN0bHkgYW55CiAgICAgICAgICAgICAgICAmIFBpY2s8UCwgTm90RXhhY3RseUFueVByb3BlcnR5S2V5czxQPj4KICAgICAgICAgICAgICAgIC8vIEZvciBwcm9wcyB3aGljaCBhcmUgZXhhY3RseSBhbnksIHVzZSB0aGUgdHlwZSBpbmZlcnJlZCBmcm9tIHByb3BUeXBlcyBpZiBwcmVzZW50CiAgICAgICAgICAgICAgICAmIFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBOb3RFeGFjdGx5QW55UHJvcGVydHlLZXlzPFA+Pj4KICAgICAgICAgICAgICAgIC8vIEtlZXAgbGVmdG92ZXIgcHJvcHMgbm90IHNwZWNpZmllZCBpbiBwcm9wVHlwZXMKICAgICAgICAgICAgICAgICYgUGljazxQLCBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+PgogICAgICAgIDogbmV2ZXI7Cgp0eXBlIEluZXhhY3RQYXJ0aWFsPFQ+ID0geyBbSyBpbiBrZXlvZiBUXT86IFRbS10gfCB1bmRlZmluZWQgfTsKCi8vIEFueSBwcm9wIHRoYXQgaGFzIGEgZGVmYXVsdCBwcm9wIGJlY29tZXMgb3B0aW9uYWwsIGJ1dCBpdHMgdHlwZSBpcyB1bmNoYW5nZWQKLy8gVW5kZWNsYXJlZCBkZWZhdWx0IHByb3BzIGFyZSBhdWdtZW50ZWQgaW50byB0aGUgcmVzdWx0aW5nIGFsbG93YWJsZSBhdHRyaWJ1dGVzCi8vIElmIGRlY2xhcmVkIHByb3BzIGhhdmUgaW5kZXhlZCBwcm9wZXJ0aWVzLCBpZ25vcmUgZGVmYXVsdCBwcm9wcyBlbnRpcmVseSBhcyBrZXlvZiBnZXRzIHdpZGVuZWQKLy8gV3JhcCBpbiBhbiBvdXRlci1sZXZlbCBjb25kaXRpb25hbCB0eXBlIHRvIGFsbG93IGRpc3RyaWJ1dGlvbiBvdmVyIHByb3BzIHRoYXQgYXJlIHVuaW9ucwp0eXBlIERlZmF1bHRpemU8UCwgRD4gPSBQIGV4dGVuZHMgYW55CiAgICA/IHN0cmluZyBleHRlbmRzIGtleW9mIFAgPyBQIDoKICAgICAgICAmIFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBEPj4KICAgICAgICAmIEluZXhhY3RQYXJ0aWFsPFBpY2s8UCwgRXh0cmFjdDxrZXlvZiBQLCBrZXlvZiBEPj4+CiAgICAgICAgJiBJbmV4YWN0UGFydGlhbDxQaWNrPEQsIEV4Y2x1ZGU8a2V5b2YgRCwga2V5b2YgUD4+PgogICAgOiBuZXZlcjsKCnR5cGUgUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxDLCBQPiA9IEMgZXh0ZW5kcyB7IHByb3BUeXBlczogaW5mZXIgVDsgZGVmYXVsdFByb3BzOiBpbmZlciBEOyB9CiAgICA/IERlZmF1bHRpemU8TWVyZ2VQcm9wVHlwZXM8UCwgUHJvcFR5cGVzLkluZmVyUHJvcHM8VD4+LCBEPgogICAgOiBDIGV4dGVuZHMgeyBwcm9wVHlwZXM6IGluZmVyIFQ7IH0KICAgICAgICA/IE1lcmdlUHJvcFR5cGVzPFAsIFByb3BUeXBlcy5JbmZlclByb3BzPFQ+PgogICAgICAgIDogQyBleHRlbmRzIHsgZGVmYXVsdFByb3BzOiBpbmZlciBEOyB9CiAgICAgICAgICAgID8gRGVmYXVsdGl6ZTxQLCBEPgogICAgICAgICAgICA6IFA7CgpkZWNsYXJlIGdsb2JhbCB7CiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIFVzZSBgUmVhY3QuSlNYYCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgYEpTWGAgbmFtZXNwYWNlLgogICAgICovCiAgICBuYW1lc3BhY2UgSlNYIHsKICAgICAgICAvLyBXZSBkb24ndCBqdXN0IGFsaWFzIFJlYWN0LkVsZW1lbnRUeXBlIGJlY2F1c2UgUmVhY3QuRWxlbWVudFR5cGUKICAgICAgICAvLyBoaXN0b3JpY2FsbHkgZG9lcyBtb3JlIHRoYW4gd2UgbmVlZCBpdCB0by4KICAgICAgICAvLyBFLmcuIGl0IGFsc28gY29udGFpbnMgLnByb3BUeXBlcyBhbmQgc28gVFMgYWxzbyB2ZXJpZmllcyB0aGUgZGVjbGFyZWQKICAgICAgICAvLyBwcm9wcyB0eXBlIGRvZXMgbWF0Y2ggdGhlIGRlY2xhcmVkIC5wcm9wVHlwZXMuCiAgICAgICAgLy8gQnV0IGlmIGxpYnJhcmllcyBkZWNsYXJlZCB0aGVpciAucHJvcFR5cGVzIGJ1dCBub3QgcHJvcHMgdHlwZSwKICAgICAgICAvLyBvciB0aGV5IG1pc21hdGNoLCB5b3Ugd29uJ3QgYmUgYWJsZSB0byB1c2UgdGhlIGNsYXNzIGNvbXBvbmVudAogICAgICAgIC8vIGFzIGEgSlNYLkVsZW1lbnRUeXBlLgogICAgICAgIC8vIFdlIGNvdWxkIGZpeCB0aGlzIGV2ZXJ5d2hlcmUgYnV0IHdlJ3JlIHVsdGltYXRlbHkgbm90IGludGVyZXN0ZWQgaW4KICAgICAgICAvLyAucHJvcFR5cGVzIGFzc2lnbmFiaWxpdHkgc28gd2UgbWlnaHQgYXMgd2VsbCBkcm9wIGl0IGVudGlyZWx5IGhlcmUgdG8KICAgICAgICAvLyAgcmVkdWNlIHRoZSB3b3JrIG9mIHRoZSB0eXBlLWNoZWNrZXIuCiAgICAgICAgLy8gVE9ETzogQ2hlY2sgaW1wYWN0IG9mIG1ha2luZyBSZWFjdC5FbGVtZW50VHlwZTxQID0gYW55PiA9IFJlYWN0LkpTWEVsZW1lbnRDb25zdHJ1Y3RvcjxQPgogICAgICAgIHR5cGUgRWxlbWVudFR5cGUgPSBzdHJpbmcgfCBSZWFjdC5KU1hFbGVtZW50Q29uc3RydWN0b3I8YW55PjsKICAgICAgICBpbnRlcmZhY2UgRWxlbWVudCBleHRlbmRzIFJlYWN0LlJlYWN0RWxlbWVudDxhbnksIGFueT4geyB9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRDbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxhbnk+IHsKICAgICAgICAgICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICB9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkgeyBwcm9wczoge307IH0KICAgICAgICBpbnRlcmZhY2UgRWxlbWVudENoaWxkcmVuQXR0cmlidXRlIHsgY2hpbGRyZW46IHt9OyB9CgogICAgICAgIC8vIFdlIGNhbid0IHJlY3Vyc2UgZm9yZXZlciBiZWNhdXNlIGB0eXBlYCBjYW4ndCBiZSBzZWxmLXJlZmVyZW50aWFsOwogICAgICAgIC8vIGxldCdzIGFzc3VtZSBpdCdzIHJlYXNvbmFibGUgdG8gZG8gYSBzaW5nbGUgUmVhY3QubGF6eSgpIGFyb3VuZCBhIHNpbmdsZSBSZWFjdC5tZW1vKCkgLyB2aWNlLXZlcnNhCiAgICAgICAgdHlwZSBMaWJyYXJ5TWFuYWdlZEF0dHJpYnV0ZXM8QywgUD4gPSBDIGV4dGVuZHMgUmVhY3QuTWVtb0V4b3RpY0NvbXBvbmVudDxpbmZlciBUPiB8IFJlYWN0LkxhenlFeG90aWNDb21wb25lbnQ8aW5mZXIgVD4KICAgICAgICAgICAgPyBUIGV4dGVuZHMgUmVhY3QuTWVtb0V4b3RpY0NvbXBvbmVudDxpbmZlciBVPiB8IFJlYWN0LkxhenlFeG90aWNDb21wb25lbnQ8aW5mZXIgVT4KICAgICAgICAgICAgICAgID8gUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxVLCBQPgogICAgICAgICAgICAgICAgOiBSZWFjdE1hbmFnZWRBdHRyaWJ1dGVzPFQsIFA+CiAgICAgICAgICAgIDogUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0F0dHJpYnV0ZXMgZXh0ZW5kcyBSZWFjdC5BdHRyaWJ1dGVzIHsgfQogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBSZWFjdC5DbGFzc0F0dHJpYnV0ZXM8VD4geyB9CgogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNFbGVtZW50cyB7CiAgICAgICAgICAgIC8vIEhUTUwKICAgICAgICAgICAgYTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+LCBIVE1MQW5jaG9yRWxlbWVudD47CiAgICAgICAgICAgIGFiYnI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBhZGRyZXNzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgYXJlYTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuQXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxBcmVhRWxlbWVudD4sIEhUTUxBcmVhRWxlbWVudD47CiAgICAgICAgICAgIGFydGljbGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBhc2lkZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGF1ZGlvOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5BdWRpb0hUTUxBdHRyaWJ1dGVzPEhUTUxBdWRpb0VsZW1lbnQ+LCBIVE1MQXVkaW9FbGVtZW50PjsKICAgICAgICAgICAgYjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGJhc2U6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkJhc2VIVE1MQXR0cmlidXRlczxIVE1MQmFzZUVsZW1lbnQ+LCBIVE1MQmFzZUVsZW1lbnQ+OwogICAgICAgICAgICBiZGk6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBiZG86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBiaWc6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBibG9ja3F1b3RlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5CbG9ja3F1b3RlSFRNTEF0dHJpYnV0ZXM8SFRNTFF1b3RlRWxlbWVudD4sIEhUTUxRdW90ZUVsZW1lbnQ+OwogICAgICAgICAgICBib2R5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MQm9keUVsZW1lbnQ+LCBIVE1MQm9keUVsZW1lbnQ+OwogICAgICAgICAgICBicjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEJSRWxlbWVudD4sIEhUTUxCUkVsZW1lbnQ+OwogICAgICAgICAgICBidXR0b246IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PiwgSFRNTEJ1dHRvbkVsZW1lbnQ+OwogICAgICAgICAgICBjYW52YXM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNhbnZhc0hUTUxBdHRyaWJ1dGVzPEhUTUxDYW52YXNFbGVtZW50PiwgSFRNTENhbnZhc0VsZW1lbnQ+OwogICAgICAgICAgICBjYXB0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgY2VudGVyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgY2l0ZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGNvZGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBjb2w6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNvbEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNvbEVsZW1lbnQ+LCBIVE1MVGFibGVDb2xFbGVtZW50PjsKICAgICAgICAgICAgY29sZ3JvdXA6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNvbGdyb3VwSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ29sRWxlbWVudD4sIEhUTUxUYWJsZUNvbEVsZW1lbnQ+OwogICAgICAgICAgICBkYXRhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EYXRhSFRNTEF0dHJpYnV0ZXM8SFRNTERhdGFFbGVtZW50PiwgSFRNTERhdGFFbGVtZW50PjsKICAgICAgICAgICAgZGF0YWxpc3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEYXRhTGlzdEVsZW1lbnQ+LCBIVE1MRGF0YUxpc3RFbGVtZW50PjsKICAgICAgICAgICAgZGQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBkZWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkRlbEhUTUxBdHRyaWJ1dGVzPEhUTUxNb2RFbGVtZW50PiwgSFRNTE1vZEVsZW1lbnQ+OwogICAgICAgICAgICBkZXRhaWxzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EZXRhaWxzSFRNTEF0dHJpYnV0ZXM8SFRNTERldGFpbHNFbGVtZW50PiwgSFRNTERldGFpbHNFbGVtZW50PjsKICAgICAgICAgICAgZGZuOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZGlhbG9nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EaWFsb2dIVE1MQXR0cmlidXRlczxIVE1MRGlhbG9nRWxlbWVudD4sIEhUTUxEaWFsb2dFbGVtZW50PjsKICAgICAgICAgICAgZGl2OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIEhUTUxEaXZFbGVtZW50PjsKICAgICAgICAgICAgZGw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxETGlzdEVsZW1lbnQ+LCBIVE1MRExpc3RFbGVtZW50PjsKICAgICAgICAgICAgZHQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBlbTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGVtYmVkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5FbWJlZEhUTUxBdHRyaWJ1dGVzPEhUTUxFbWJlZEVsZW1lbnQ+LCBIVE1MRW1iZWRFbGVtZW50PjsKICAgICAgICAgICAgZmllbGRzZXQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8SFRNTEZpZWxkU2V0RWxlbWVudD4sIEhUTUxGaWVsZFNldEVsZW1lbnQ+OwogICAgICAgICAgICBmaWdjYXB0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZmlndXJlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZm9vdGVyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZm9ybTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuRm9ybUhUTUxBdHRyaWJ1dGVzPEhUTUxGb3JtRWxlbWVudD4sIEhUTUxGb3JtRWxlbWVudD47CiAgICAgICAgICAgIGgxOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgICAgICBoMjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICAgICAgaDM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgICAgIGg0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgICAgICBoNTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICAgICAgaDY6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgICAgIGhlYWQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkRWxlbWVudD4sIEhUTUxIZWFkRWxlbWVudD47CiAgICAgICAgICAgIGhlYWRlcjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGhncm91cDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGhyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSFJFbGVtZW50PiwgSFRNTEhSRWxlbWVudD47CiAgICAgICAgICAgIGh0bWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lkh0bWxIVE1MQXR0cmlidXRlczxIVE1MSHRtbEVsZW1lbnQ+LCBIVE1MSHRtbEVsZW1lbnQ+OwogICAgICAgICAgICBpOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgaWZyYW1lOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JZnJhbWVIVE1MQXR0cmlidXRlczxIVE1MSUZyYW1lRWxlbWVudD4sIEhUTUxJRnJhbWVFbGVtZW50PjsKICAgICAgICAgICAgaW1nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbWdIVE1MQXR0cmlidXRlczxIVE1MSW1hZ2VFbGVtZW50PiwgSFRNTEltYWdlRWxlbWVudD47CiAgICAgICAgICAgIGlucHV0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgICAgICAgICAgaW5zOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbnNIVE1MQXR0cmlidXRlczxIVE1MTW9kRWxlbWVudD4sIEhUTUxNb2RFbGVtZW50PjsKICAgICAgICAgICAga2JkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAga2V5Z2VuOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5LZXlnZW5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbGFiZWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxhYmVsSFRNTEF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD4sIEhUTUxMYWJlbEVsZW1lbnQ+OwogICAgICAgICAgICBsZWdlbmQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxMZWdlbmRFbGVtZW50PiwgSFRNTExlZ2VuZEVsZW1lbnQ+OwogICAgICAgICAgICBsaTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuTGlIVE1MQXR0cmlidXRlczxIVE1MTElFbGVtZW50PiwgSFRNTExJRWxlbWVudD47CiAgICAgICAgICAgIGxpbms6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxpbmtIVE1MQXR0cmlidXRlczxIVE1MTGlua0VsZW1lbnQ+LCBIVE1MTGlua0VsZW1lbnQ+OwogICAgICAgICAgICBtYWluOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbWFwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5NYXBIVE1MQXR0cmlidXRlczxIVE1MTWFwRWxlbWVudD4sIEhUTUxNYXBFbGVtZW50PjsKICAgICAgICAgICAgbWFyazogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIG1lbnU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk1lbnVIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbWVudWl0ZW06IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBtZXRhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5NZXRhSFRNTEF0dHJpYnV0ZXM8SFRNTE1ldGFFbGVtZW50PiwgSFRNTE1ldGFFbGVtZW50PjsKICAgICAgICAgICAgbWV0ZXI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk1ldGVySFRNTEF0dHJpYnV0ZXM8SFRNTE1ldGVyRWxlbWVudD4sIEhUTUxNZXRlckVsZW1lbnQ+OwogICAgICAgICAgICBuYXY6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBub2luZGV4OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbm9zY3JpcHQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBvYmplY3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk9iamVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxPYmplY3RFbGVtZW50PiwgSFRNTE9iamVjdEVsZW1lbnQ+OwogICAgICAgICAgICBvbDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuT2xIVE1MQXR0cmlidXRlczxIVE1MT0xpc3RFbGVtZW50PiwgSFRNTE9MaXN0RWxlbWVudD47CiAgICAgICAgICAgIG9wdGdyb3VwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PcHRncm91cEhUTUxBdHRyaWJ1dGVzPEhUTUxPcHRHcm91cEVsZW1lbnQ+LCBIVE1MT3B0R3JvdXBFbGVtZW50PjsKICAgICAgICAgICAgb3B0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PcHRpb25IVE1MQXR0cmlidXRlczxIVE1MT3B0aW9uRWxlbWVudD4sIEhUTUxPcHRpb25FbGVtZW50PjsKICAgICAgICAgICAgb3V0cHV0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PdXRwdXRIVE1MQXR0cmlidXRlczxIVE1MT3V0cHV0RWxlbWVudD4sIEhUTUxPdXRwdXRFbGVtZW50PjsKICAgICAgICAgICAgcDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+LCBIVE1MUGFyYWdyYXBoRWxlbWVudD47CiAgICAgICAgICAgIHBhcmFtOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5QYXJhbUhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhbUVsZW1lbnQ+LCBIVE1MUGFyYW1FbGVtZW50PjsKICAgICAgICAgICAgcGljdHVyZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHByZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFByZUVsZW1lbnQ+LCBIVE1MUHJlRWxlbWVudD47CiAgICAgICAgICAgIHByb2dyZXNzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5Qcm9ncmVzc0hUTUxBdHRyaWJ1dGVzPEhUTUxQcm9ncmVzc0VsZW1lbnQ+LCBIVE1MUHJvZ3Jlc3NFbGVtZW50PjsKICAgICAgICAgICAgcTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuUXVvdGVIVE1MQXR0cmlidXRlczxIVE1MUXVvdGVFbGVtZW50PiwgSFRNTFF1b3RlRWxlbWVudD47CiAgICAgICAgICAgIHJwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgcnQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBydWJ5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgczogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHNhbXA6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzZWFyY2g6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzbG90OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5TbG90SFRNTEF0dHJpYnV0ZXM8SFRNTFNsb3RFbGVtZW50PiwgSFRNTFNsb3RFbGVtZW50PjsKICAgICAgICAgICAgc2NyaXB0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5TY3JpcHRIVE1MQXR0cmlidXRlczxIVE1MU2NyaXB0RWxlbWVudD4sIEhUTUxTY3JpcHRFbGVtZW50PjsKICAgICAgICAgICAgc2VjdGlvbjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHNlbGVjdDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuU2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+LCBIVE1MU2VsZWN0RWxlbWVudD47CiAgICAgICAgICAgIHNtYWxsOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc291cmNlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5Tb3VyY2VIVE1MQXR0cmlidXRlczxIVE1MU291cmNlRWxlbWVudD4sIEhUTUxTb3VyY2VFbGVtZW50PjsKICAgICAgICAgICAgc3BhbjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PiwgSFRNTFNwYW5FbGVtZW50PjsKICAgICAgICAgICAgc3Ryb25nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc3R5bGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlN0eWxlSFRNTEF0dHJpYnV0ZXM8SFRNTFN0eWxlRWxlbWVudD4sIEhUTUxTdHlsZUVsZW1lbnQ+OwogICAgICAgICAgICBzdWI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzdW1tYXJ5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc3VwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgdGFibGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlRhYmxlSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4sIEhUTUxUYWJsZUVsZW1lbnQ+OwogICAgICAgICAgICB0ZW1wbGF0ZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRlbXBsYXRlRWxlbWVudD4sIEhUTUxUZW1wbGF0ZUVsZW1lbnQ+OwogICAgICAgICAgICB0Ym9keTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+LCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD47CiAgICAgICAgICAgIHRkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD4sIEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD47CiAgICAgICAgICAgIHRleHRhcmVhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCBIVE1MVGV4dEFyZWFFbGVtZW50PjsKICAgICAgICAgICAgdGZvb3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiwgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OwogICAgICAgICAgICB0aDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD4sIEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PjsKICAgICAgICAgICAgdGhlYWQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiwgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OwogICAgICAgICAgICB0aW1lOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UaW1lSFRNTEF0dHJpYnV0ZXM8SFRNTFRpbWVFbGVtZW50PiwgSFRNTFRpbWVFbGVtZW50PjsKICAgICAgICAgICAgdGl0bGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUaXRsZUVsZW1lbnQ+LCBIVE1MVGl0bGVFbGVtZW50PjsKICAgICAgICAgICAgdHI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+LCBIVE1MVGFibGVSb3dFbGVtZW50PjsKICAgICAgICAgICAgdHJhY2s6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlRyYWNrSFRNTEF0dHJpYnV0ZXM8SFRNTFRyYWNrRWxlbWVudD4sIEhUTUxUcmFja0VsZW1lbnQ+OwogICAgICAgICAgICB1OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgdWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxVTGlzdEVsZW1lbnQ+LCBIVE1MVUxpc3RFbGVtZW50PjsKICAgICAgICAgICAgInZhciI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICB2aWRlbzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuVmlkZW9IVE1MQXR0cmlidXRlczxIVE1MVmlkZW9FbGVtZW50PiwgSFRNTFZpZGVvRWxlbWVudD47CiAgICAgICAgICAgIHdicjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHdlYnZpZXc6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LldlYlZpZXdIVE1MQXR0cmlidXRlczxIVE1MV2ViVmlld0VsZW1lbnQ+LCBIVE1MV2ViVmlld0VsZW1lbnQ+OwoKICAgICAgICAgICAgLy8gU1ZHCiAgICAgICAgICAgIHN2ZzogUmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD47CgogICAgICAgICAgICBhbmltYXRlOiBSZWFjdC5TVkdQcm9wczxTVkdFbGVtZW50PjsgLy8gVE9ETzogSXQgaXMgU1ZHQW5pbWF0ZUVsZW1lbnQgYnV0IGlzIG5vdCBpbiBUeXBlU2NyaXB0J3MgbGliLmRvbS5kLnRzIGZvciBub3cuCiAgICAgICAgICAgIGFuaW1hdGVNb3Rpb246IFJlYWN0LlNWR1Byb3BzPFNWR0VsZW1lbnQ+OwogICAgICAgICAgICBhbmltYXRlVHJhbnNmb3JtOiBSZWFjdC5TVkdQcm9wczxTVkdFbGVtZW50PjsgLy8gVE9ETzogSXQgaXMgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgYnV0IGlzIG5vdCBpbiBUeXBlU2NyaXB0J3MgbGliLmRvbS5kLnRzIGZvciBub3cuCiAgICAgICAgICAgIGNpcmNsZTogUmVhY3QuU1ZHUHJvcHM8U1ZHQ2lyY2xlRWxlbWVudD47CiAgICAgICAgICAgIGNsaXBQYXRoOiBSZWFjdC5TVkdQcm9wczxTVkdDbGlwUGF0aEVsZW1lbnQ+OwogICAgICAgICAgICBkZWZzOiBSZWFjdC5TVkdQcm9wczxTVkdEZWZzRWxlbWVudD47CiAgICAgICAgICAgIGRlc2M6IFJlYWN0LlNWR1Byb3BzPFNWR0Rlc2NFbGVtZW50PjsKICAgICAgICAgICAgZWxsaXBzZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRWxsaXBzZUVsZW1lbnQ+OwogICAgICAgICAgICBmZUJsZW5kOiBSZWFjdC5TVkdQcm9wczxTVkdGRUJsZW5kRWxlbWVudD47CiAgICAgICAgICAgIGZlQ29sb3JNYXRyaXg6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PjsKICAgICAgICAgICAgZmVDb21wb25lbnRUcmFuc2ZlcjogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ+OwogICAgICAgICAgICBmZUNvbXBvc2l0ZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb21wb3NpdGVFbGVtZW50PjsKICAgICAgICAgICAgZmVDb252b2x2ZU1hdHJpeDogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+OwogICAgICAgICAgICBmZURpZmZ1c2VMaWdodGluZzogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PjsKICAgICAgICAgICAgZmVEaXNwbGFjZW1lbnRNYXA6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD47CiAgICAgICAgICAgIGZlRGlzdGFudExpZ2h0OiBSZWFjdC5TVkdQcm9wczxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+OwogICAgICAgICAgICBmZURyb3BTaGFkb3c6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ+OwogICAgICAgICAgICBmZUZsb29kOiBSZWFjdC5TVkdQcm9wczxTVkdGRUZsb29kRWxlbWVudD47CiAgICAgICAgICAgIGZlRnVuY0E6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRnVuY0FFbGVtZW50PjsKICAgICAgICAgICAgZmVGdW5jQjogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVGdW5jQkVsZW1lbnQ+OwogICAgICAgICAgICBmZUZ1bmNHOiBSZWFjdC5TVkdQcm9wczxTVkdGRUZ1bmNHRWxlbWVudD47CiAgICAgICAgICAgIGZlRnVuY1I6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRnVuY1JFbGVtZW50PjsKICAgICAgICAgICAgZmVHYXVzc2lhbkJsdXI6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD47CiAgICAgICAgICAgIGZlSW1hZ2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFSW1hZ2VFbGVtZW50PjsKICAgICAgICAgICAgZmVNZXJnZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVNZXJnZUVsZW1lbnQ+OwogICAgICAgICAgICBmZU1lcmdlTm9kZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PjsKICAgICAgICAgICAgZmVNb3JwaG9sb2d5OiBSZWFjdC5TVkdQcm9wczxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PjsKICAgICAgICAgICAgZmVPZmZzZXQ6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFT2Zmc2V0RWxlbWVudD47CiAgICAgICAgICAgIGZlUG9pbnRMaWdodDogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD47CiAgICAgICAgICAgIGZlU3BlY3VsYXJMaWdodGluZzogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudD47CiAgICAgICAgICAgIGZlU3BvdExpZ2h0OiBSZWFjdC5TVkdQcm9wczxTVkdGRVNwb3RMaWdodEVsZW1lbnQ+OwogICAgICAgICAgICBmZVRpbGU6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFVGlsZUVsZW1lbnQ+OwogICAgICAgICAgICBmZVR1cmJ1bGVuY2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+OwogICAgICAgICAgICBmaWx0ZXI6IFJlYWN0LlNWR1Byb3BzPFNWR0ZpbHRlckVsZW1lbnQ+OwogICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBSZWFjdC5TVkdQcm9wczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD47CiAgICAgICAgICAgIGc6IFJlYWN0LlNWR1Byb3BzPFNWR0dFbGVtZW50PjsKICAgICAgICAgICAgaW1hZ2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ltYWdlRWxlbWVudD47CiAgICAgICAgICAgIGxpbmU6IFJlYWN0LlNWR0xpbmVFbGVtZW50QXR0cmlidXRlczxTVkdMaW5lRWxlbWVudD47CiAgICAgICAgICAgIGxpbmVhckdyYWRpZW50OiBSZWFjdC5TVkdQcm9wczxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+OwogICAgICAgICAgICBtYXJrZXI6IFJlYWN0LlNWR1Byb3BzPFNWR01hcmtlckVsZW1lbnQ+OwogICAgICAgICAgICBtYXNrOiBSZWFjdC5TVkdQcm9wczxTVkdNYXNrRWxlbWVudD47CiAgICAgICAgICAgIG1ldGFkYXRhOiBSZWFjdC5TVkdQcm9wczxTVkdNZXRhZGF0YUVsZW1lbnQ+OwogICAgICAgICAgICBtcGF0aDogUmVhY3QuU1ZHUHJvcHM8U1ZHRWxlbWVudD47CiAgICAgICAgICAgIHBhdGg6IFJlYWN0LlNWR1Byb3BzPFNWR1BhdGhFbGVtZW50PjsKICAgICAgICAgICAgcGF0dGVybjogUmVhY3QuU1ZHUHJvcHM8U1ZHUGF0dGVybkVsZW1lbnQ+OwogICAgICAgICAgICBwb2x5Z29uOiBSZWFjdC5TVkdQcm9wczxTVkdQb2x5Z29uRWxlbWVudD47CiAgICAgICAgICAgIHBvbHlsaW5lOiBSZWFjdC5TVkdQcm9wczxTVkdQb2x5bGluZUVsZW1lbnQ+OwogICAgICAgICAgICByYWRpYWxHcmFkaWVudDogUmVhY3QuU1ZHUHJvcHM8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50PjsKICAgICAgICAgICAgcmVjdDogUmVhY3QuU1ZHUHJvcHM8U1ZHUmVjdEVsZW1lbnQ+OwogICAgICAgICAgICBzdG9wOiBSZWFjdC5TVkdQcm9wczxTVkdTdG9wRWxlbWVudD47CiAgICAgICAgICAgIHN3aXRjaDogUmVhY3QuU1ZHUHJvcHM8U1ZHU3dpdGNoRWxlbWVudD47CiAgICAgICAgICAgIHN5bWJvbDogUmVhY3QuU1ZHUHJvcHM8U1ZHU3ltYm9sRWxlbWVudD47CiAgICAgICAgICAgIHRleHQ6IFJlYWN0LlNWR1RleHRFbGVtZW50QXR0cmlidXRlczxTVkdUZXh0RWxlbWVudD47CiAgICAgICAgICAgIHRleHRQYXRoOiBSZWFjdC5TVkdQcm9wczxTVkdUZXh0UGF0aEVsZW1lbnQ+OwogICAgICAgICAgICB0c3BhbjogUmVhY3QuU1ZHUHJvcHM8U1ZHVFNwYW5FbGVtZW50PjsKICAgICAgICAgICAgdXNlOiBSZWFjdC5TVkdQcm9wczxTVkdVc2VFbGVtZW50PjsKICAgICAgICAgICAgdmlldzogUmVhY3QuU1ZHUHJvcHM8U1ZHVmlld0VsZW1lbnQ+OwogICAgICAgIH0KICAgIH0KfQoKLy8gUmVhY3QuSlNYIG5lZWRzIHRvIHBvaW50IHRvIGdsb2JhbC5KU1ggdG8ga2VlcCBnbG9iYWwgbW9kdWxlIGF1Z21lbnRhdGlvbnMgaW50YWN0LgovLyBCdXQgd2UgY2FuJ3QgYWNjZXNzIGdsb2JhbC5KU1ggc28gd2UgbmVlZCB0byBjcmVhdGUgdGhlc2UgYWxpYXNlcyBpbnN0ZWFkLgovLyBPbmNlIHRoZSBnbG9iYWwgSlNYIG5hbWVzcGFjZSB3aWxsIGJlIHJlbW92ZWQgd2UgcmVwbGFjZSBSZWFjdC5KU1ggd2l0aCB0aGUgY29udGVudHMgb2YgZ2xvYmFsLkpTWAp0eXBlIEdsb2JhbEpTWEVsZW1lbnRUeXBlID0gSlNYLkVsZW1lbnRUeXBlOwppbnRlcmZhY2UgR2xvYmFsSlNYRWxlbWVudCBleHRlbmRzIEpTWC5FbGVtZW50IHt9CmludGVyZmFjZSBHbG9iYWxKU1hFbGVtZW50Q2xhc3MgZXh0ZW5kcyBKU1guRWxlbWVudENsYXNzIHt9CmludGVyZmFjZSBHbG9iYWxKU1hFbGVtZW50QXR0cmlidXRlc1Byb3BlcnR5IGV4dGVuZHMgSlNYLkVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkge30KaW50ZXJmYWNlIEdsb2JhbEpTWEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSBleHRlbmRzIEpTWC5FbGVtZW50Q2hpbGRyZW5BdHRyaWJ1dGUge30KCnR5cGUgR2xvYmFsSlNYTGlicmFyeU1hbmFnZWRBdHRyaWJ1dGVzPEMsIFA+ID0gSlNYLkxpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCmludGVyZmFjZSBHbG9iYWxKU1hJbnRyaW5zaWNBdHRyaWJ1dGVzIGV4dGVuZHMgSlNYLkludHJpbnNpY0F0dHJpYnV0ZXMge30KaW50ZXJmYWNlIEdsb2JhbEpTWEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiBleHRlbmRzIEpTWC5JbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXM8VD4ge30KCmludGVyZmFjZSBHbG9iYWxKU1hJbnRyaW5zaWNFbGVtZW50cyBleHRlbmRzIEpTWC5JbnRyaW5zaWNFbGVtZW50cyB7fQo=","base64").toString("utf8")},elements:{url:"https://tlkfrontprodpublic.blob.core.windows.net/template-builder-production/tb-jsx.editor/elements.d.ts",sha256:"e3981b97a14159fcb236b232a765795765872a18ebdf2c7708c7fe9606a94e4b",source:Buffer.from("Cgp0eXBlIFByaW1pdGl2ZSA9IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB8IGJpZ2ludCB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkOwoKZGVjbGFyZSBuYW1lc3BhY2UgdXRpbCB7CiAgICB0eXBlIEFzc2VydEVxdWFsPFQsIFU+ID0gKDxWPigpID0+IFYgZXh0ZW5kcyBUID8gMSA6IDIpIGV4dGVuZHMgPFY+KCkgPT4gViBleHRlbmRzIFUgPyAxIDogMiA/IHRydWUgOiBmYWxzZTsKICAgIGV4cG9ydCB0eXBlIGlzQW55PFQ+ID0gMCBleHRlbmRzIDEgJiBUID8gdHJ1ZSA6IGZhbHNlOwogICAgZXhwb3J0IGNvbnN0IGFzc2VydEVxdWFsOiA8QSwgQj4odmFsOiBBc3NlcnRFcXVhbDxBLCBCPikgPT4gQXNzZXJ0RXF1YWw8QSwgQj47CiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4oX2FyZzogVCk6IHZvaWQ7CiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3g6IG5ldmVyKTogbmV2ZXI7CiAgICBleHBvcnQgdHlwZSBPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47CiAgICBleHBvcnQgdHlwZSBPbWl0S2V5czxULCBLIGV4dGVuZHMgc3RyaW5nPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47CiAgICBleHBvcnQgdHlwZSBNYWtlUGFydGlhbDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjsKICAgIGV4cG9ydCB0eXBlIEV4YWN0bHk8VCwgWD4gPSBUICYgUmVjb3JkPEV4Y2x1ZGU8a2V5b2YgWCwga2V5b2YgVD4sIG5ldmVyPjsKICAgIGV4cG9ydCBjb25zdCBhcnJheVRvRW51bTogPFQgZXh0ZW5kcyBzdHJpbmcsIFUgZXh0ZW5kcyBbVCwgLi4uVFtdXT4oaXRlbXM6IFUpID0+IHsgW2sgaW4gVVtudW1iZXJdXTogazsgfTsKICAgIGV4cG9ydCBjb25zdCBnZXRWYWxpZEVudW1WYWx1ZXM6IChvYmo6IGFueSkgPT4gYW55W107CiAgICBleHBvcnQgY29uc3Qgb2JqZWN0VmFsdWVzOiAob2JqOiBhbnkpID0+IGFueVtdOwogICAgZXhwb3J0IGNvbnN0IG9iamVjdEtleXM6IE9iamVjdENvbnN0cnVjdG9yWyJrZXlzIl07CiAgICBleHBvcnQgY29uc3QgZmluZDogPFQ+KGFycjogVFtdLCBjaGVja2VyOiAoYXJnOiBUKSA9PiBhbnkpID0+IFQgfCB1bmRlZmluZWQ7CiAgICBleHBvcnQgdHlwZSBpZGVudGl0eTxUPiA9IG9iamVjdFV0aWwuaWRlbnRpdHk8VD47CiAgICBleHBvcnQgdHlwZSBmbGF0dGVuPFQ+ID0gb2JqZWN0VXRpbC5mbGF0dGVuPFQ+OwogICAgZXhwb3J0IHR5cGUgbm9VbmRlZmluZWQ8VD4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gbmV2ZXIgOiBUOwogICAgZXhwb3J0IGNvbnN0IGlzSW50ZWdlcjogTnVtYmVyQ29uc3RydWN0b3JbImlzSW50ZWdlciJdOwogICAgZXhwb3J0IGZ1bmN0aW9uIGpvaW5WYWx1ZXM8VCBleHRlbmRzIGFueVtdPihhcnJheTogVCwgc2VwYXJhdG9yPzogc3RyaW5nKTogc3RyaW5nOwogICAgZXhwb3J0IGNvbnN0IGpzb25TdHJpbmdpZnlSZXBsYWNlcjogKF86IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55OwogICAgZXhwb3J0IHt9Owp9CmRlY2xhcmUgbmFtZXNwYWNlIG9iamVjdFV0aWwgewogICAgZXhwb3J0IHR5cGUgTWVyZ2VTaGFwZXM8VSwgVj4gPSB7CiAgICAgICAgW2sgaW4gRXhjbHVkZTxrZXlvZiBVLCBrZXlvZiBWPl06IFVba107CiAgICB9ICYgVjsKICAgIHR5cGUgb3B0aW9uYWxLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtrIGluIGtleW9mIFRdOiB1bmRlZmluZWQgZXh0ZW5kcyBUW2tdID8gayA6IG5ldmVyOwogICAgfVtrZXlvZiBUXTsKICAgIHR5cGUgcmVxdWlyZWRLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtrIGluIGtleW9mIFRdOiB1bmRlZmluZWQgZXh0ZW5kcyBUW2tdID8gbmV2ZXIgOiBrOwogICAgfVtrZXlvZiBUXTsKICAgIGV4cG9ydCB0eXBlIGFkZFF1ZXN0aW9uTWFya3M8VCBleHRlbmRzIG9iamVjdCwgX08gPSBhbnk+ID0gewogICAgICAgIFtLIGluIHJlcXVpcmVkS2V5czxUPl06IFRbS107CiAgICB9ICYgewogICAgICAgIFtLIGluIG9wdGlvbmFsS2V5czxUPl0/OiBUW0tdOwogICAgfSAmIHsKICAgICAgICBbayBpbiBrZXlvZiBUXT86IHVua25vd247CiAgICB9OwogICAgZXhwb3J0IHR5cGUgaWRlbnRpdHk8VD4gPSBUOwogICAgZXhwb3J0IHR5cGUgZmxhdHRlbjxUPiA9IGlkZW50aXR5PHsKICAgICAgICBbayBpbiBrZXlvZiBUXTogVFtrXTsKICAgIH0+OwogICAgZXhwb3J0IHR5cGUgbm9OZXZlcktleXM8VD4gPSB7CiAgICAgICAgW2sgaW4ga2V5b2YgVF06IFtUW2tdXSBleHRlbmRzIFtuZXZlcl0gPyBuZXZlciA6IGs7CiAgICB9W2tleW9mIFRdOwogICAgZXhwb3J0IHR5cGUgbm9OZXZlcjxUPiA9IGlkZW50aXR5PHsKICAgICAgICBbayBpbiBub05ldmVyS2V5czxUPl06IGsgZXh0ZW5kcyBrZXlvZiBUID8gVFtrXSA6IG5ldmVyOwogICAgfT47CiAgICBleHBvcnQgY29uc3QgbWVyZ2VTaGFwZXM6IDxVLCBUPihmaXJzdDogVSwgc2Vjb25kOiBUKSA9PiBUICYgVTsKICAgIGV4cG9ydCB0eXBlIGV4dGVuZFNoYXBlPEEgZXh0ZW5kcyBvYmplY3QsIEIgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtLIGluIGtleW9mIEEgYXMgSyBleHRlbmRzIGtleW9mIEIgPyBuZXZlciA6IEtdOiBBW0tdOwogICAgfSAmIHsKICAgICAgICBbSyBpbiBrZXlvZiBCXTogQltLXTsKICAgIH07CiAgICBleHBvcnQge307Cn0KZGVjbGFyZSBjb25zdCBab2RQYXJzZWRUeXBlOiB7CiAgICBzdHJpbmc6ICJzdHJpbmciOwogICAgbnVtYmVyOiAibnVtYmVyIjsKICAgIGJpZ2ludDogImJpZ2ludCI7CiAgICBib29sZWFuOiAiYm9vbGVhbiI7CiAgICBzeW1ib2w6ICJzeW1ib2wiOwogICAgdW5kZWZpbmVkOiAidW5kZWZpbmVkIjsKICAgIG9iamVjdDogIm9iamVjdCI7CiAgICBmdW5jdGlvbjogImZ1bmN0aW9uIjsKICAgIG1hcDogIm1hcCI7CiAgICBuYW46ICJuYW4iOwogICAgaW50ZWdlcjogImludGVnZXIiOwogICAgZmxvYXQ6ICJmbG9hdCI7CiAgICBkYXRlOiAiZGF0ZSI7CiAgICBudWxsOiAibnVsbCI7CiAgICBhcnJheTogImFycmF5IjsKICAgIHVua25vd246ICJ1bmtub3duIjsKICAgIHByb21pc2U6ICJwcm9taXNlIjsKICAgIHZvaWQ6ICJ2b2lkIjsKICAgIG5ldmVyOiAibmV2ZXIiOwogICAgc2V0OiAic2V0IjsKfTsKdHlwZSBab2RQYXJzZWRUeXBlID0ga2V5b2YgdHlwZW9mIFpvZFBhcnNlZFR5cGU7Cgp0eXBlIGFsbEtleXM8VD4gPSBUIGV4dGVuZHMgYW55ID8ga2V5b2YgVCA6IG5ldmVyOwp0eXBlIHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0gewogICAgZm9ybUVycm9yczogVVtdOwogICAgZmllbGRFcnJvcnM6IHsKICAgICAgICBbUCBpbiBhbGxLZXlzPFQ+XT86IFVbXTsKICAgIH07Cn07CmRlY2xhcmUgY29uc3QgWm9kSXNzdWVDb2RlOiB7CiAgICBpbnZhbGlkX3R5cGU6ICJpbnZhbGlkX3R5cGUiOwogICAgaW52YWxpZF9saXRlcmFsOiAiaW52YWxpZF9saXRlcmFsIjsKICAgIGN1c3RvbTogImN1c3RvbSI7CiAgICBpbnZhbGlkX3VuaW9uOiAiaW52YWxpZF91bmlvbiI7CiAgICBpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6ICJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3IiOwogICAgaW52YWxpZF9lbnVtX3ZhbHVlOiAiaW52YWxpZF9lbnVtX3ZhbHVlIjsKICAgIHVucmVjb2duaXplZF9rZXlzOiAidW5yZWNvZ25pemVkX2tleXMiOwogICAgaW52YWxpZF9hcmd1bWVudHM6ICJpbnZhbGlkX2FyZ3VtZW50cyI7CiAgICBpbnZhbGlkX3JldHVybl90eXBlOiAiaW52YWxpZF9yZXR1cm5fdHlwZSI7CiAgICBpbnZhbGlkX2RhdGU6ICJpbnZhbGlkX2RhdGUiOwogICAgaW52YWxpZF9zdHJpbmc6ICJpbnZhbGlkX3N0cmluZyI7CiAgICB0b29fc21hbGw6ICJ0b29fc21hbGwiOwogICAgdG9vX2JpZzogInRvb19iaWciOwogICAgaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6ICJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyI7CiAgICBub3RfbXVsdGlwbGVfb2Y6ICJub3RfbXVsdGlwbGVfb2YiOwogICAgbm90X2Zpbml0ZTogIm5vdF9maW5pdGUiOwp9Owp0eXBlIFpvZElzc3VlQ29kZSA9IGtleW9mIHR5cGVvZiBab2RJc3N1ZUNvZGU7CnR5cGUgWm9kSXNzdWVCYXNlID0gewogICAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn07CmludGVyZmFjZSBab2RJbnZhbGlkVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlOwogICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGU7CiAgICByZWNlaXZlZDogWm9kUGFyc2VkVHlwZTsKfQppbnRlcmZhY2UgWm9kSW52YWxpZExpdGVyYWxJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbDsKICAgIGV4cGVjdGVkOiB1bmtub3duOwogICAgcmVjZWl2ZWQ6IHVua25vd247Cn0KaW50ZXJmYWNlIFpvZFVucmVjb2duaXplZEtleXNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzOwogICAga2V5czogc3RyaW5nW107Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRVbmlvbklzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjsKICAgIHVuaW9uRXJyb3JzOiBab2RFcnJvcltdOwp9CmludGVyZmFjZSBab2RJbnZhbGlkVW5pb25EaXNjcmltaW5hdG9ySXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I7CiAgICBvcHRpb25zOiBQcmltaXRpdmVbXTsKfQppbnRlcmZhY2UgWm9kSW52YWxpZEVudW1WYWx1ZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIHJlY2VpdmVkOiBzdHJpbmcgfCBudW1iZXI7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZTsKICAgIG9wdGlvbnM6IChzdHJpbmcgfCBudW1iZXIpW107Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzOwogICAgYXJndW1lbnRzRXJyb3I6IFpvZEVycm9yOwp9CmludGVyZmFjZSBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTsKICAgIHJldHVyblR5cGVFcnJvcjogWm9kRXJyb3I7Cn0KaW50ZXJmYWNlIFpvZEludmFsaWREYXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU7Cn0KdHlwZSBTdHJpbmdWYWxpZGF0aW9uID0gImVtYWlsIiB8ICJ1cmwiIHwgImVtb2ppIiB8ICJ1dWlkIiB8ICJuYW5vaWQiIHwgInJlZ2V4IiB8ICJjdWlkIiB8ICJjdWlkMiIgfCAidWxpZCIgfCAiZGF0ZXRpbWUiIHwgImRhdGUiIHwgInRpbWUiIHwgImR1cmF0aW9uIiB8ICJpcCIgfCAiY2lkciIgfCAiYmFzZTY0IiB8ICJqd3QiIHwgImJhc2U2NHVybCIgfCB7CiAgICBpbmNsdWRlczogc3RyaW5nOwogICAgcG9zaXRpb24/OiBudW1iZXI7Cn0gfCB7CiAgICBzdGFydHNXaXRoOiBzdHJpbmc7Cn0gfCB7CiAgICBlbmRzV2l0aDogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kSW52YWxpZFN0cmluZ0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmc7CiAgICB2YWxpZGF0aW9uOiBTdHJpbmdWYWxpZGF0aW9uOwp9CmludGVyZmFjZSBab2RUb29TbWFsbElzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsOwogICAgbWluaW11bTogbnVtYmVyIHwgYmlnaW50OwogICAgaW5jbHVzaXZlOiBib29sZWFuOwogICAgZXhhY3Q/OiBib29sZWFuOwogICAgdHlwZTogImFycmF5IiB8ICJzdHJpbmciIHwgIm51bWJlciIgfCAic2V0IiB8ICJkYXRlIiB8ICJiaWdpbnQiOwp9CmludGVyZmFjZSBab2RUb29CaWdJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnRvb19iaWc7CiAgICBtYXhpbXVtOiBudW1iZXIgfCBiaWdpbnQ7CiAgICBpbmNsdXNpdmU6IGJvb2xlYW47CiAgICBleGFjdD86IGJvb2xlYW47CiAgICB0eXBlOiAiYXJyYXkiIHwgInN0cmluZyIgfCAibnVtYmVyIiB8ICJzZXQiIHwgImRhdGUiIHwgImJpZ2ludCI7Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM7Cn0KaW50ZXJmYWNlIFpvZE5vdE11bHRpcGxlT2ZJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjsKICAgIG11bHRpcGxlT2Y6IG51bWJlciB8IGJpZ2ludDsKfQppbnRlcmZhY2UgWm9kTm90RmluaXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5ub3RfZmluaXRlOwp9CmludGVyZmFjZSBab2RDdXN0b21Jc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmN1c3RvbTsKICAgIHBhcmFtcz86IHsKICAgICAgICBbazogc3RyaW5nXTogYW55OwogICAgfTsKfQp0eXBlIFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlID0gWm9kSW52YWxpZFR5cGVJc3N1ZSB8IFpvZEludmFsaWRMaXRlcmFsSXNzdWUgfCBab2RVbnJlY29nbml6ZWRLZXlzSXNzdWUgfCBab2RJbnZhbGlkVW5pb25Jc3N1ZSB8IFpvZEludmFsaWRVbmlvbkRpc2NyaW1pbmF0b3JJc3N1ZSB8IFpvZEludmFsaWRFbnVtVmFsdWVJc3N1ZSB8IFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSB8IFpvZEludmFsaWRSZXR1cm5UeXBlSXNzdWUgfCBab2RJbnZhbGlkRGF0ZUlzc3VlIHwgWm9kSW52YWxpZFN0cmluZ0lzc3VlIHwgWm9kVG9vU21hbGxJc3N1ZSB8IFpvZFRvb0JpZ0lzc3VlIHwgWm9kSW52YWxpZEludGVyc2VjdGlvblR5cGVzSXNzdWUgfCBab2ROb3RNdWx0aXBsZU9mSXNzdWUgfCBab2ROb3RGaW5pdGVJc3N1ZSB8IFpvZEN1c3RvbUlzc3VlOwp0eXBlIFpvZElzc3VlID0gWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgJiB7CiAgICBmYXRhbD86IGJvb2xlYW47CiAgICBtZXNzYWdlOiBzdHJpbmc7Cn07CnR5cGUgcmVjdXJzaXZlWm9kRm9ybWF0dGVkRXJyb3I8VD4gPSBUIGV4dGVuZHMgW2FueSwgLi4uYW55W11dID8gewogICAgW0sgaW4ga2V5b2YgVF0/OiBab2RGb3JtYXR0ZWRFcnJvcjxUW0tdPjsKfSA6IFQgZXh0ZW5kcyBhbnlbXSA/IHsKICAgIFtrOiBudW1iZXJdOiBab2RGb3JtYXR0ZWRFcnJvcjxUW251bWJlcl0+Owp9IDogVCBleHRlbmRzIG9iamVjdCA/IHsKICAgIFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT47Cn0gOiB1bmtub3duOwp0eXBlIFpvZEZvcm1hdHRlZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0gewogICAgX2Vycm9yczogVVtdOwp9ICYgcmVjdXJzaXZlWm9kRm9ybWF0dGVkRXJyb3I8Tm9uTnVsbGFibGU8VD4+OwpkZWNsYXJlIGNsYXNzIFpvZEVycm9yPFQgPSBhbnk+IGV4dGVuZHMgRXJyb3IgewogICAgaXNzdWVzOiBab2RJc3N1ZVtdOwogICAgZ2V0IGVycm9ycygpOiBab2RJc3N1ZVtdOwogICAgY29uc3RydWN0b3IoaXNzdWVzOiBab2RJc3N1ZVtdKTsKICAgIGZvcm1hdCgpOiBab2RGb3JtYXR0ZWRFcnJvcjxUPjsKICAgIGZvcm1hdDxVPihtYXBwZXI6IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiBab2RGb3JtYXR0ZWRFcnJvcjxULCBVPjsKICAgIHN0YXRpYyBjcmVhdGU6IChpc3N1ZXM6IFpvZElzc3VlW10pID0+IFpvZEVycm9yPGFueT47CiAgICBzdGF0aWMgYXNzZXJ0KHZhbHVlOiB1bmtub3duKTogYXNzZXJ0cyB2YWx1ZSBpcyBab2RFcnJvcjsKICAgIHRvU3RyaW5nKCk6IHN0cmluZzsKICAgIGdldCBtZXNzYWdlKCk6IHN0cmluZzsKICAgIGdldCBpc0VtcHR5KCk6IGJvb2xlYW47CiAgICBhZGRJc3N1ZTogKHN1YjogWm9kSXNzdWUpID0+IHZvaWQ7CiAgICBhZGRJc3N1ZXM6IChzdWJzPzogWm9kSXNzdWVbXSkgPT4gdm9pZDsKICAgIGZsYXR0ZW4oKTogdHlwZVRvRmxhdHRlbmVkRXJyb3I8VD47CiAgICBmbGF0dGVuPFU+KG1hcHBlcj86IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiB0eXBlVG9GbGF0dGVuZWRFcnJvcjxULCBVPjsKICAgIGdldCBmb3JtRXJyb3JzKCk6IHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQsIHN0cmluZz47Cn0KdHlwZSBzdHJpcFBhdGg8VCBleHRlbmRzIG9iamVjdD4gPSBUIGV4dGVuZHMgYW55ID8gdXRpbC5PbWl0S2V5czxULCAicGF0aCI+IDogbmV2ZXI7CnR5cGUgSXNzdWVEYXRhID0gc3RyaXBQYXRoPFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlPiAmIHsKICAgIHBhdGg/OiAoc3RyaW5nIHwgbnVtYmVyKVtdOwogICAgZmF0YWw/OiBib29sZWFuOwp9Owp0eXBlIEVycm9yTWFwQ3R4ID0gewogICAgZGVmYXVsdEVycm9yOiBzdHJpbmc7CiAgICBkYXRhOiBhbnk7Cn07CnR5cGUgWm9kRXJyb3JNYXAgPSAoaXNzdWU6IFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlLCBfY3R4OiBFcnJvck1hcEN0eCkgPT4gewogICAgbWVzc2FnZTogc3RyaW5nOwp9OwoKdHlwZSBQYXJzZVBhcmFtcyA9IHsKICAgIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW107CiAgICBlcnJvck1hcDogWm9kRXJyb3JNYXA7CiAgICBhc3luYzogYm9vbGVhbjsKfTsKdHlwZSBQYXJzZVBhdGhDb21wb25lbnQgPSBzdHJpbmcgfCBudW1iZXI7CnR5cGUgUGFyc2VQYXRoID0gUGFyc2VQYXRoQ29tcG9uZW50W107CmludGVyZmFjZSBQYXJzZUNvbnRleHQgewogICAgcmVhZG9ubHkgY29tbW9uOiB7CiAgICAgICAgcmVhZG9ubHkgaXNzdWVzOiBab2RJc3N1ZVtdOwogICAgICAgIHJlYWRvbmx5IGNvbnRleHR1YWxFcnJvck1hcD86IFpvZEVycm9yTWFwOwogICAgICAgIHJlYWRvbmx5IGFzeW5jOiBib29sZWFuOwogICAgfTsKICAgIHJlYWRvbmx5IHBhdGg6IFBhcnNlUGF0aDsKICAgIHJlYWRvbmx5IHNjaGVtYUVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICByZWFkb25seSBwYXJlbnQ6IFBhcnNlQ29udGV4dCB8IG51bGw7CiAgICByZWFkb25seSBkYXRhOiBhbnk7CiAgICByZWFkb25seSBwYXJzZWRUeXBlOiBab2RQYXJzZWRUeXBlOwp9CnR5cGUgUGFyc2VJbnB1dCA9IHsKICAgIGRhdGE6IGFueTsKICAgIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW107CiAgICBwYXJlbnQ6IFBhcnNlQ29udGV4dDsKfTsKZGVjbGFyZSBjbGFzcyBQYXJzZVN0YXR1cyB7CiAgICB2YWx1ZTogImFib3J0ZWQiIHwgImRpcnR5IiB8ICJ2YWxpZCI7CiAgICBkaXJ0eSgpOiB2b2lkOwogICAgYWJvcnQoKTogdm9pZDsKICAgIHN0YXRpYyBtZXJnZUFycmF5KHN0YXR1czogUGFyc2VTdGF0dXMsIHJlc3VsdHM6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PltdKTogU3luY1BhcnNlUmV0dXJuVHlwZTsKICAgIHN0YXRpYyBtZXJnZU9iamVjdEFzeW5jKHN0YXR1czogUGFyc2VTdGF0dXMsIHBhaXJzOiB7CiAgICAgICAga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjsKICAgICAgICB2YWx1ZTogUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICB9W10pOiBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8YW55Pj47CiAgICBzdGF0aWMgbWVyZ2VPYmplY3RTeW5jKHN0YXR1czogUGFyc2VTdGF0dXMsIHBhaXJzOiB7CiAgICAgICAga2V5OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICAgICAgdmFsdWU6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PjsKICAgICAgICBhbHdheXNTZXQ/OiBib29sZWFuOwogICAgfVtdKTogU3luY1BhcnNlUmV0dXJuVHlwZTsKfQp0eXBlIElOVkFMSUQgPSB7CiAgICBzdGF0dXM6ICJhYm9ydGVkIjsKfTsKZGVjbGFyZSBjb25zdCBJTlZBTElEOiBJTlZBTElEOwp0eXBlIERJUlRZPFQ+ID0gewogICAgc3RhdHVzOiAiZGlydHkiOwogICAgdmFsdWU6IFQ7Cn07CmRlY2xhcmUgY29uc3QgRElSVFk6IDxUPih2YWx1ZTogVCkgPT4gRElSVFk8VD47CnR5cGUgT0s8VD4gPSB7CiAgICBzdGF0dXM6ICJ2YWxpZCI7CiAgICB2YWx1ZTogVDsKfTsKZGVjbGFyZSBjb25zdCBPSzogPFQ+KHZhbHVlOiBUKSA9PiBPSzxUPjsKdHlwZSBTeW5jUGFyc2VSZXR1cm5UeXBlPFQgPSBhbnk+ID0gT0s8VD4gfCBESVJUWTxUPiB8IElOVkFMSUQ7CnR5cGUgQXN5bmNQYXJzZVJldHVyblR5cGU8VD4gPSBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8VD4+Owp0eXBlIFBhcnNlUmV0dXJuVHlwZTxUPiA9IFN5bmNQYXJzZVJldHVyblR5cGU8VD4gfCBBc3luY1BhcnNlUmV0dXJuVHlwZTxUPjsKCmRlY2xhcmUgbmFtZXNwYWNlIGVycm9yVXRpbCB7CiAgICB0eXBlIEVyck1lc3NhZ2UgPSBzdHJpbmcgfCB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH07CiAgICBjb25zdCBlcnJUb09iajogKG1lc3NhZ2U/OiBFcnJNZXNzYWdlKSA9PiB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH07CiAgICBjb25zdCB0b1N0cmluZzogKG1lc3NhZ2U/OiBFcnJNZXNzYWdlKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7Cn0KCi8qKgogKiBUaGUgU3RhbmRhcmQgU2NoZW1hIGludGVyZmFjZS4KICovCnR5cGUgU3RhbmRhcmRTY2hlbWFWMTxJbnB1dCA9IHVua25vd24sIE91dHB1dCA9IElucHV0PiA9IHsKICAgIC8qKgogICAgICogVGhlIFN0YW5kYXJkIFNjaGVtYSBwcm9wZXJ0aWVzLgogICAgICovCiAgICByZWFkb25seSAifnN0YW5kYXJkIjogU3RhbmRhcmRTY2hlbWFWMS5Qcm9wczxJbnB1dCwgT3V0cHV0PjsKfTsKZGVjbGFyZSBuYW1lc3BhY2UgU3RhbmRhcmRTY2hlbWFWMSB7CiAgICAvKioKICAgICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgcHJvcGVydGllcyBpbnRlcmZhY2UuCiAgICAgKi8KICAgIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8SW5wdXQgPSB1bmtub3duLCBPdXRwdXQgPSBJbnB1dD4gewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgc3RhbmRhcmQuCiAgICAgICAgICovCiAgICAgICAgcmVhZG9ubHkgdmVyc2lvbjogMTsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgdmVuZG9yIG5hbWUgb2YgdGhlIHNjaGVtYSBsaWJyYXJ5LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHZlbmRvcjogc3RyaW5nOwogICAgICAgIC8qKgogICAgICAgICAqIFZhbGlkYXRlcyB1bmtub3duIGlucHV0IHZhbHVlcy4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSB2YWxpZGF0ZTogKHZhbHVlOiB1bmtub3duKSA9PiBSZXN1bHQ8T3V0cHV0PiB8IFByb21pc2U8UmVzdWx0PE91dHB1dD4+OwogICAgICAgIC8qKgogICAgICAgICAqIEluZmVycmVkIHR5cGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHR5cGVzPzogVHlwZXM8SW5wdXQsIE91dHB1dD4gfCB1bmRlZmluZWQ7CiAgICB9CiAgICAvKioKICAgICAqIFRoZSByZXN1bHQgaW50ZXJmYWNlIG9mIHRoZSB2YWxpZGF0ZSBmdW5jdGlvbi4KICAgICAqLwogICAgZXhwb3J0IHR5cGUgUmVzdWx0PE91dHB1dD4gPSBTdWNjZXNzUmVzdWx0PE91dHB1dD4gfCBGYWlsdXJlUmVzdWx0OwogICAgLyoqCiAgICAgKiBUaGUgcmVzdWx0IGludGVyZmFjZSBpZiB2YWxpZGF0aW9uIHN1Y2NlZWRzLgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3NSZXN1bHQ8T3V0cHV0PiB7CiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIHR5cGVkIG91dHB1dCB2YWx1ZS4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSB2YWx1ZTogT3V0cHV0OwogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBub24tZXhpc3RlbnQgaXNzdWVzLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlzc3Vlcz86IHVuZGVmaW5lZDsKICAgIH0KICAgIC8qKgogICAgICogVGhlIHJlc3VsdCBpbnRlcmZhY2UgaWYgdmFsaWRhdGlvbiBmYWlscy4KICAgICAqLwogICAgZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlUmVzdWx0IHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgaXNzdWVzIG9mIGZhaWxlZCB2YWxpZGF0aW9uLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlzc3VlczogUmVhZG9ubHlBcnJheTxJc3N1ZT47CiAgICB9CiAgICAvKioKICAgICAqIFRoZSBpc3N1ZSBpbnRlcmZhY2Ugb2YgdGhlIGZhaWx1cmUgb3V0cHV0LgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIElzc3VlIHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgZXJyb3IgbWVzc2FnZSBvZiB0aGUgaXNzdWUuCiAgICAgICAgICovCiAgICAgICAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nOwogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBwYXRoIG9mIHRoZSBpc3N1ZSwgaWYgYW55LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHBhdGg/OiBSZWFkb25seUFycmF5PFByb3BlcnR5S2V5IHwgUGF0aFNlZ21lbnQ+IHwgdW5kZWZpbmVkOwogICAgfQogICAgLyoqCiAgICAgKiBUaGUgcGF0aCBzZWdtZW50IGludGVyZmFjZSBvZiB0aGUgaXNzdWUuCiAgICAgKi8KICAgIGV4cG9ydCBpbnRlcmZhY2UgUGF0aFNlZ21lbnQgewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBrZXkgcmVwcmVzZW50aW5nIGEgcGF0aCBzZWdtZW50LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGtleTogUHJvcGVydHlLZXk7CiAgICB9CiAgICAvKioKICAgICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgdHlwZXMgaW50ZXJmYWNlLgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIFR5cGVzPElucHV0ID0gdW5rbm93biwgT3V0cHV0ID0gSW5wdXQ+IHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgaW5wdXQgdHlwZSBvZiB0aGUgc2NoZW1hLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlucHV0OiBJbnB1dDsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgb3V0cHV0IHR5cGUgb2YgdGhlIHNjaGVtYS4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSBvdXRwdXQ6IE91dHB1dDsKICAgIH0KICAgIC8qKgogICAgICogSW5mZXJzIHRoZSBpbnB1dCB0eXBlIG9mIGEgU3RhbmRhcmQgU2NoZW1hLgogICAgICovCiAgICBleHBvcnQgdHlwZSBJbmZlcklucHV0PFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjE+ID0gTm9uTnVsbGFibGU8U2NoZW1hWyJ+c3RhbmRhcmQiXVsidHlwZXMiXT5bImlucHV0Il07CiAgICAvKioKICAgICAqIEluZmVycyB0aGUgb3V0cHV0IHR5cGUgb2YgYSBTdGFuZGFyZCBTY2hlbWEuCiAgICAgKi8KICAgIGV4cG9ydCB0eXBlIEluZmVyT3V0cHV0PFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjE+ID0gTm9uTnVsbGFibGU8U2NoZW1hWyJ+c3RhbmRhcmQiXVsidHlwZXMiXT5bIm91dHB1dCJdOwogICAgZXhwb3J0IHt9Owp9CgppbnRlcmZhY2UgUmVmaW5lbWVudEN0eCB7CiAgICBhZGRJc3N1ZTogKGFyZzogSXNzdWVEYXRhKSA9PiB2b2lkOwogICAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTsKfQp0eXBlIFpvZFJhd1NoYXBlID0gewogICAgW2s6IHN0cmluZ106IFpvZFR5cGVBbnk7Cn07CnR5cGUgWm9kVHlwZUFueSA9IFpvZFR5cGU8YW55LCBhbnksIGFueT47CnR5cGUgaW5wdXQ8VCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4+ID0gVFsiX2lucHV0Il07CnR5cGUgb3V0cHV0PFQgZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55LCBhbnk+PiA9IFRbIl9vdXRwdXQiXTsKCnR5cGUgQ3VzdG9tRXJyb3JQYXJhbXMgPSBQYXJ0aWFsPHV0aWwuT21pdDxab2RDdXN0b21Jc3N1ZSwgImNvZGUiPj47CmludGVyZmFjZSBab2RUeXBlRGVmIHsKICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsKfQp0eXBlIFJhd0NyZWF0ZVBhcmFtcyA9IHsKICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICBpbnZhbGlkX3R5cGVfZXJyb3I/OiBzdHJpbmc7CiAgICByZXF1aXJlZF9lcnJvcj86IHN0cmluZzsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7CiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsKfSB8IHVuZGVmaW5lZDsKdHlwZSBTYWZlUGFyc2VTdWNjZXNzPE91dHB1dD4gPSB7CiAgICBzdWNjZXNzOiB0cnVlOwogICAgZGF0YTogT3V0cHV0OwogICAgZXJyb3I/OiBuZXZlcjsKfTsKdHlwZSBTYWZlUGFyc2VFcnJvcjxJbnB1dD4gPSB7CiAgICBzdWNjZXNzOiBmYWxzZTsKICAgIGVycm9yOiBab2RFcnJvcjxJbnB1dD47CiAgICBkYXRhPzogbmV2ZXI7Cn07CnR5cGUgU2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0PiA9IFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PiB8IFNhZmVQYXJzZUVycm9yPElucHV0PjsKZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBab2RUeXBlPE91dHB1dCA9IGFueSwgRGVmIGV4dGVuZHMgWm9kVHlwZURlZiA9IFpvZFR5cGVEZWYsIElucHV0ID0gT3V0cHV0PiB7CiAgICByZWFkb25seSBfdHlwZTogT3V0cHV0OwogICAgcmVhZG9ubHkgX291dHB1dDogT3V0cHV0OwogICAgcmVhZG9ubHkgX2lucHV0OiBJbnB1dDsKICAgIHJlYWRvbmx5IF9kZWY6IERlZjsKICAgIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAifnN0YW5kYXJkIjogU3RhbmRhcmRTY2hlbWFWMS5Qcm9wczxJbnB1dCwgT3V0cHV0PjsKICAgIGFic3RyYWN0IF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgX2dldFR5cGUoaW5wdXQ6IFBhcnNlSW5wdXQpOiBzdHJpbmc7CiAgICBfZ2V0T3JSZXR1cm5DdHgoaW5wdXQ6IFBhcnNlSW5wdXQsIGN0eD86IFBhcnNlQ29udGV4dCB8IHVuZGVmaW5lZCk6IFBhcnNlQ29udGV4dDsKICAgIF9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQ6IFBhcnNlSW5wdXQpOiB7CiAgICAgICAgc3RhdHVzOiBQYXJzZVN0YXR1czsKICAgICAgICBjdHg6IFBhcnNlQ29udGV4dDsKICAgIH07CiAgICBfcGFyc2VTeW5jKGlucHV0OiBQYXJzZUlucHV0KTogU3luY1BhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgX3BhcnNlQXN5bmMoaW5wdXQ6IFBhcnNlSW5wdXQpOiBBc3luY1BhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgcGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBPdXRwdXQ7CiAgICBzYWZlUGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBTYWZlUGFyc2VSZXR1cm5UeXBlPElucHV0LCBPdXRwdXQ+OwogICAgIn52YWxpZGF0ZSIoZGF0YTogdW5rbm93bik6IFN0YW5kYXJkU2NoZW1hVjEuUmVzdWx0PE91dHB1dD4gfCBQcm9taXNlPFN0YW5kYXJkU2NoZW1hVjEuUmVzdWx0PE91dHB1dD4+OwogICAgcGFyc2VBc3luYyhkYXRhOiB1bmtub3duLCBwYXJhbXM/OiBQYXJ0aWFsPFBhcnNlUGFyYW1zPik6IFByb21pc2U8T3V0cHV0PjsKICAgIHNhZmVQYXJzZUFzeW5jKGRhdGE6IHVua25vd24sIHBhcmFtcz86IFBhcnRpYWw8UGFyc2VQYXJhbXM+KTogUHJvbWlzZTxTYWZlUGFyc2VSZXR1cm5UeXBlPElucHV0LCBPdXRwdXQ+PjsKICAgIC8qKiBBbGlhcyBvZiBzYWZlUGFyc2VBc3luYyAqLwogICAgc3BhOiAoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pID0+IFByb21pc2U8U2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0Pj47CiAgICByZWZpbmU8UmVmaW5lZE91dHB1dCBleHRlbmRzIE91dHB1dD4oY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gYXJnIGlzIFJlZmluZWRPdXRwdXQsIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKSk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lKGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nIHwgQ3VzdG9tRXJyb3JQYXJhbXMgfCAoKGFyZzogT3V0cHV0KSA9PiBDdXN0b21FcnJvclBhcmFtcykpOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lbWVudDxSZWZpbmVkT3V0cHV0IGV4dGVuZHMgT3V0cHV0PihjaGVjazogKGFyZzogT3V0cHV0KSA9PiBhcmcgaXMgUmVmaW5lZE91dHB1dCwgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKSk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lbWVudChjaGVjazogKGFyZzogT3V0cHV0KSA9PiBib29sZWFuLCByZWZpbmVtZW50RGF0YTogSXNzdWVEYXRhIHwgKChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBJc3N1ZURhdGEpKTogWm9kRWZmZWN0czx0aGlzLCBPdXRwdXQsIElucHV0PjsKICAgIF9yZWZpbmVtZW50KHJlZmluZW1lbnQ6IFJlZmluZW1lbnRFZmZlY3Q8T3V0cHV0PlsicmVmaW5lbWVudCJdKTogWm9kRWZmZWN0czx0aGlzLCBPdXRwdXQsIElucHV0PjsKICAgIHN1cGVyUmVmaW5lPFJlZmluZWRPdXRwdXQgZXh0ZW5kcyBPdXRwdXQ+KHJlZmluZW1lbnQ6IChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBhcmcgaXMgUmVmaW5lZE91dHB1dCk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgc3VwZXJSZWZpbmUocmVmaW5lbWVudDogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IHZvaWQpOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgc3VwZXJSZWZpbmUocmVmaW5lbWVudDogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IFByb21pc2U8dm9pZD4pOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgY29uc3RydWN0b3IoZGVmOiBEZWYpOwogICAgb3B0aW9uYWwoKTogWm9kT3B0aW9uYWw8dGhpcz47CiAgICBudWxsYWJsZSgpOiBab2ROdWxsYWJsZTx0aGlzPjsKICAgIG51bGxpc2goKTogWm9kT3B0aW9uYWw8Wm9kTnVsbGFibGU8dGhpcz4+OwogICAgYXJyYXkoKTogWm9kQXJyYXk8dGhpcz47CiAgICBwcm9taXNlKCk6IFpvZFByb21pc2U8dGhpcz47CiAgICBvcjxUIGV4dGVuZHMgWm9kVHlwZUFueT4ob3B0aW9uOiBUKTogWm9kVW5pb248W3RoaXMsIFRdPjsKICAgIGFuZDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oaW5jb21pbmc6IFQpOiBab2RJbnRlcnNlY3Rpb248dGhpcywgVD47CiAgICB0cmFuc2Zvcm08TmV3T3V0Pih0cmFuc2Zvcm06IChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBOZXdPdXQgfCBQcm9taXNlPE5ld091dD4pOiBab2RFZmZlY3RzPHRoaXMsIE5ld091dD47CiAgICBkZWZhdWx0KGRlZjogdXRpbC5ub1VuZGVmaW5lZDxJbnB1dD4pOiBab2REZWZhdWx0PHRoaXM+OwogICAgZGVmYXVsdChkZWY6ICgpID0+IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjsKICAgIGJyYW5kPEIgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+KGJyYW5kPzogQik6IFpvZEJyYW5kZWQ8dGhpcywgQj47CiAgICBjYXRjaChkZWY6IE91dHB1dCk6IFpvZENhdGNoPHRoaXM+OwogICAgY2F0Y2goZGVmOiAoY3R4OiB7CiAgICAgICAgZXJyb3I6IFpvZEVycm9yOwogICAgICAgIGlucHV0OiBJbnB1dDsKICAgIH0pID0+IE91dHB1dCk6IFpvZENhdGNoPHRoaXM+OwogICAgZGVzY3JpYmUoZGVzY3JpcHRpb246IHN0cmluZyk6IHRoaXM7CiAgICBwaXBlPFQgZXh0ZW5kcyBab2RUeXBlQW55Pih0YXJnZXQ6IFQpOiBab2RQaXBlbGluZTx0aGlzLCBUPjsKICAgIHJlYWRvbmx5KCk6IFpvZFJlYWRvbmx5PHRoaXM+OwogICAgaXNPcHRpb25hbCgpOiBib29sZWFuOwogICAgaXNOdWxsYWJsZSgpOiBib29sZWFuOwp9CnR5cGUgSXBWZXJzaW9uID0gInY0IiB8ICJ2NiI7CnR5cGUgWm9kU3RyaW5nQ2hlY2sgPSB7CiAgICBraW5kOiAibWluIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogIm1heCI7CiAgICB2YWx1ZTogbnVtYmVyOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJsZW5ndGgiOwogICAgdmFsdWU6IG51bWJlcjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZW1haWwiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ1cmwiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJlbW9qaSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInV1aWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJuYW5vaWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjdWlkIjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiaW5jbHVkZXMiOwogICAgdmFsdWU6IHN0cmluZzsKICAgIHBvc2l0aW9uPzogbnVtYmVyOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjdWlkMiI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInVsaWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJzdGFydHNXaXRoIjsKICAgIHZhbHVlOiBzdHJpbmc7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImVuZHNXaXRoIjsKICAgIHZhbHVlOiBzdHJpbmc7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInJlZ2V4IjsKICAgIHJlZ2V4OiBSZWdFeHA7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInRyaW0iOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ0b0xvd2VyQ2FzZSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInRvVXBwZXJDYXNlIjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiand0IjsKICAgIGFsZz86IHN0cmluZzsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZGF0ZXRpbWUiOwogICAgb2Zmc2V0OiBib29sZWFuOwogICAgbG9jYWw6IGJvb2xlYW47CiAgICBwcmVjaXNpb246IG51bWJlciB8IG51bGw7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImRhdGUiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ0aW1lIjsKICAgIHByZWNpc2lvbjogbnVtYmVyIHwgbnVsbDsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZHVyYXRpb24iOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJpcCI7CiAgICB2ZXJzaW9uPzogSXBWZXJzaW9uOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjaWRyIjsKICAgIHZlcnNpb24/OiBJcFZlcnNpb247CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImJhc2U2NCI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImJhc2U2NHVybCI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kU3RyaW5nRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBjaGVja3M6IFpvZFN0cmluZ0NoZWNrW107CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN0cmluZzsKICAgIGNvZXJjZTogYm9vbGVhbjsKfQpkZWNsYXJlIGNsYXNzIFpvZFN0cmluZyBleHRlbmRzIFpvZFR5cGU8c3RyaW5nLCBab2RTdHJpbmdEZWYsIHN0cmluZz4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHN0cmluZz47CiAgICBwcm90ZWN0ZWQgX3JlZ2V4KHJlZ2V4OiBSZWdFeHAsIHZhbGlkYXRpb246IFN0cmluZ1ZhbGlkYXRpb24sIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZEVmZmVjdHM8dGhpcywgc3RyaW5nLCBzdHJpbmc+OwogICAgX2FkZENoZWNrKGNoZWNrOiBab2RTdHJpbmdDaGVjayk6IFpvZFN0cmluZzsKICAgIGVtYWlsKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIHVybChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBlbW9qaShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICB1dWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIG5hbm9pZChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBjdWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGN1aWQyKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIHVsaWQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgYmFzZTY0KG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGJhc2U2NHVybChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBqd3Qob3B0aW9ucz86IHsKICAgICAgICBhbGc/OiBzdHJpbmc7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0pOiBab2RTdHJpbmc7CiAgICBpcChvcHRpb25zPzogc3RyaW5nIHwgewogICAgICAgIHZlcnNpb24/OiBJcFZlcnNpb247CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0pOiBab2RTdHJpbmc7CiAgICBjaWRyKG9wdGlvbnM/OiBzdHJpbmcgfCB7CiAgICAgICAgdmVyc2lvbj86IElwVmVyc2lvbjsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgfSk6IFpvZFN0cmluZzsKICAgIGRhdGV0aW1lKG9wdGlvbnM/OiBzdHJpbmcgfCB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVjaXNpb24/OiBudW1iZXIgfCBudWxsOwogICAgICAgIG9mZnNldD86IGJvb2xlYW47CiAgICAgICAgbG9jYWw/OiBib29sZWFuOwogICAgfSk6IFpvZFN0cmluZzsKICAgIGRhdGUobWVzc2FnZT86IHN0cmluZyk6IFpvZFN0cmluZzsKICAgIHRpbWUob3B0aW9ucz86IHN0cmluZyB8IHsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByZWNpc2lvbj86IG51bWJlciB8IG51bGw7CiAgICB9KTogWm9kU3RyaW5nOwogICAgZHVyYXRpb24obWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgcmVnZXgocmVnZXg6IFJlZ0V4cCwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgaW5jbHVkZXModmFsdWU6IHN0cmluZywgb3B0aW9ucz86IHsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgICAgIHBvc2l0aW9uPzogbnVtYmVyOwogICAgfSk6IFpvZFN0cmluZzsKICAgIHN0YXJ0c1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgZW5kc1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgbWluKG1pbkxlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBtYXgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgLyoqCiAgICAgKiBFcXVpdmFsZW50IHRvIGAubWluKDEpYAogICAgICovCiAgICBub25lbXB0eShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICB0cmltKCk6IFpvZFN0cmluZzsKICAgIHRvTG93ZXJDYXNlKCk6IFpvZFN0cmluZzsKICAgIHRvVXBwZXJDYXNlKCk6IFpvZFN0cmluZzsKICAgIGdldCBpc0RhdGV0aW1lKCk6IGJvb2xlYW47CiAgICBnZXQgaXNEYXRlKCk6IGJvb2xlYW47CiAgICBnZXQgaXNUaW1lKCk6IGJvb2xlYW47CiAgICBnZXQgaXNEdXJhdGlvbigpOiBib29sZWFuOwogICAgZ2V0IGlzRW1haWwoKTogYm9vbGVhbjsKICAgIGdldCBpc1VSTCgpOiBib29sZWFuOwogICAgZ2V0IGlzRW1vamkoKTogYm9vbGVhbjsKICAgIGdldCBpc1VVSUQoKTogYm9vbGVhbjsKICAgIGdldCBpc05BTk9JRCgpOiBib29sZWFuOwogICAgZ2V0IGlzQ1VJRCgpOiBib29sZWFuOwogICAgZ2V0IGlzQ1VJRDIoKTogYm9vbGVhbjsKICAgIGdldCBpc1VMSUQoKTogYm9vbGVhbjsKICAgIGdldCBpc0lQKCk6IGJvb2xlYW47CiAgICBnZXQgaXNDSURSKCk6IGJvb2xlYW47CiAgICBnZXQgaXNCYXNlNjQoKTogYm9vbGVhbjsKICAgIGdldCBpc0Jhc2U2NHVybCgpOiBib29sZWFuOwogICAgZ2V0IG1pbkxlbmd0aCgpOiBudW1iZXIgfCBudWxsOwogICAgZ2V0IG1heExlbmd0aCgpOiBudW1iZXIgfCBudWxsOwogICAgc3RhdGljIGNyZWF0ZTogKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyAmIHsKICAgICAgICBjb2VyY2U/OiB0cnVlOwogICAgfSkgPT4gWm9kU3RyaW5nOwp9CnR5cGUgWm9kTnVtYmVyQ2hlY2sgPSB7CiAgICBraW5kOiAibWluIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBpbmNsdXNpdmU6IGJvb2xlYW47CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogIm1heCI7CiAgICB2YWx1ZTogbnVtYmVyOwogICAgaW5jbHVzaXZlOiBib29sZWFuOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJpbnQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJtdWx0aXBsZU9mIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImZpbml0ZSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kTnVtYmVyRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBjaGVja3M6IFpvZE51bWJlckNoZWNrW107CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcjsKICAgIGNvZXJjZTogYm9vbGVhbjsKfQpkZWNsYXJlIGNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGU8bnVtYmVyLCBab2ROdW1iZXJEZWYsIG51bWJlcj4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPG51bWJlcj47CiAgICBzdGF0aWMgY3JlYXRlOiAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zICYgewogICAgICAgIGNvZXJjZT86IGJvb2xlYW47CiAgICB9KSA9PiBab2ROdW1iZXI7CiAgICBndGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kTnVtYmVyOwogICAgbWluOiAodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PiBab2ROdW1iZXI7CiAgICBndCh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBsdGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kTnVtYmVyOwogICAgbWF4OiAodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PiBab2ROdW1iZXI7CiAgICBsdCh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBwcm90ZWN0ZWQgc2V0TGltaXQoa2luZDogIm1pbiIgfCAibWF4IiwgdmFsdWU6IG51bWJlciwgaW5jbHVzaXZlOiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nKTogWm9kTnVtYmVyOwogICAgX2FkZENoZWNrKGNoZWNrOiBab2ROdW1iZXJDaGVjayk6IFpvZE51bWJlcjsKICAgIGludChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBwb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBuZWdhdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBub25wb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBub25uZWdhdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBtdWx0aXBsZU9mKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZE51bWJlcjsKICAgIHN0ZXA6ICh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpID0+IFpvZE51bWJlcjsKICAgIGZpbml0ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBzYWZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZE51bWJlcjsKICAgIGdldCBtaW5WYWx1ZSgpOiBudW1iZXIgfCBudWxsOwogICAgZ2V0IG1heFZhbHVlKCk6IG51bWJlciB8IG51bGw7CiAgICBnZXQgaXNJbnQoKTogYm9vbGVhbjsKICAgIGdldCBpc0Zpbml0ZSgpOiBib29sZWFuOwp9CmludGVyZmFjZSBab2RVbmtub3duRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd247Cn0KZGVjbGFyZSBjbGFzcyBab2RVbmtub3duIGV4dGVuZHMgWm9kVHlwZTx1bmtub3duLCBab2RVbmtub3duRGVmLCB1bmtub3duPiB7CiAgICBfdW5rbm93bjogdHJ1ZTsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgc3RhdGljIGNyZWF0ZTogKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kVW5rbm93bjsKfQppbnRlcmZhY2UgWm9kQXJyYXlEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgdHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXk7CiAgICBleGFjdExlbmd0aDogewogICAgICAgIHZhbHVlOiBudW1iZXI7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0gfCBudWxsOwogICAgbWluTGVuZ3RoOiB7CiAgICAgICAgdmFsdWU6IG51bWJlcjsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgfSB8IG51bGw7CiAgICBtYXhMZW5ndGg6IHsKICAgICAgICB2YWx1ZTogbnVtYmVyOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7CiAgICB9IHwgbnVsbDsKfQp0eXBlIEFycmF5Q2FyZGluYWxpdHkgPSAibWFueSIgfCAiYXRsZWFzdG9uZSI7CnR5cGUgYXJyYXlPdXRwdXRUeXBlPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBDYXJkaW5hbGl0eSBleHRlbmRzIEFycmF5Q2FyZGluYWxpdHkgPSAibWFueSI+ID0gQ2FyZGluYWxpdHkgZXh0ZW5kcyAiYXRsZWFzdG9uZSIgPyBbVFsiX291dHB1dCJdLCAuLi5UWyJfb3V0cHV0Il1bXV0gOiBUWyJfb3V0cHV0Il1bXTsKZGVjbGFyZSBjbGFzcyBab2RBcnJheTxUIGV4dGVuZHMgWm9kVHlwZUFueSwgQ2FyZGluYWxpdHkgZXh0ZW5kcyBBcnJheUNhcmRpbmFsaXR5ID0gIm1hbnkiPiBleHRlbmRzIFpvZFR5cGU8YXJyYXlPdXRwdXRUeXBlPFQsIENhcmRpbmFsaXR5PiwgWm9kQXJyYXlEZWY8VD4sIENhcmRpbmFsaXR5IGV4dGVuZHMgImF0bGVhc3RvbmUiID8gW1RbIl9pbnB1dCJdLCAuLi5UWyJfaW5wdXQiXVtdXSA6IFRbIl9pbnB1dCJdW10+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgZ2V0IGVsZW1lbnQoKTogVDsKICAgIG1pbihtaW5MZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIG1heChtYXhMZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIG5vbmVtcHR5KG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZEFycmF5PFQsICJhdGxlYXN0b25lIj47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4oc2NoZW1hOiBUXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kQXJyYXk8VF8xLCAibWFueSI+Owp9CnR5cGUgVW5rbm93bktleXNQYXJhbSA9ICJwYXNzdGhyb3VnaCIgfCAic3RyaWN0IiB8ICJzdHJpcCI7CnR5cGUgb2JqZWN0T3V0cHV0VHlwZTxTaGFwZSBleHRlbmRzIFpvZFJhd1NoYXBlLCBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnksIFVua25vd25LZXlzIGV4dGVuZHMgVW5rbm93bktleXNQYXJhbSA9IFVua25vd25LZXlzUGFyYW0+ID0gb2JqZWN0VXRpbC5mbGF0dGVuPG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczxiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT4+PiAmIENhdGNoYWxsT3V0cHV0PENhdGNoYWxsPiAmIFBhc3N0aHJvdWdoVHlwZTxVbmtub3duS2V5cz47CnR5cGUgYmFzZU9iamVjdE91dHB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSB7CiAgICBbayBpbiBrZXlvZiBTaGFwZV06IFNoYXBlW2tdWyJfb3V0cHV0Il07Cn07CnR5cGUgb2JqZWN0SW5wdXRUeXBlPFNoYXBlIGV4dGVuZHMgWm9kUmF3U2hhcGUsIENhdGNoYWxsIGV4dGVuZHMgWm9kVHlwZUFueSwgVW5rbm93bktleXMgZXh0ZW5kcyBVbmtub3duS2V5c1BhcmFtID0gVW5rbm93bktleXNQYXJhbT4gPSBvYmplY3RVdGlsLmZsYXR0ZW48YmFzZU9iamVjdElucHV0VHlwZTxTaGFwZT4+ICYgQ2F0Y2hhbGxJbnB1dDxDYXRjaGFsbD4gJiBQYXNzdGhyb3VnaFR5cGU8VW5rbm93bktleXM+Owp0eXBlIGJhc2VPYmplY3RJbnB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBvYmplY3RVdGlsLmFkZFF1ZXN0aW9uTWFya3M8ewogICAgW2sgaW4ga2V5b2YgU2hhcGVdOiBTaGFwZVtrXVsiX2lucHV0Il07Cn0+Owp0eXBlIENhdGNoYWxsT3V0cHV0PFQgZXh0ZW5kcyBab2RUeXBlPiA9IFpvZFR5cGUgZXh0ZW5kcyBUID8gdW5rbm93biA6IHsKICAgIFtrOiBzdHJpbmddOiBUWyJfb3V0cHV0Il07Cn07CnR5cGUgQ2F0Y2hhbGxJbnB1dDxUIGV4dGVuZHMgWm9kVHlwZT4gPSBab2RUeXBlIGV4dGVuZHMgVCA/IHVua25vd24gOiB7CiAgICBbazogc3RyaW5nXTogVFsiX2lucHV0Il07Cn07CnR5cGUgUGFzc3Rocm91Z2hUeXBlPFQgZXh0ZW5kcyBVbmtub3duS2V5c1BhcmFtPiA9IFQgZXh0ZW5kcyAicGFzc3Rocm91Z2giID8gewogICAgW2s6IHN0cmluZ106IHVua25vd247Cn0gOiB1bmtub3duOwp0eXBlIFpvZFVuaW9uT3B0aW9ucyA9IFJlYWRvbmx5PFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPjsKaW50ZXJmYWNlIFpvZFVuaW9uRGVmPFQgZXh0ZW5kcyBab2RVbmlvbk9wdGlvbnMgPSBSZWFkb25seTxbCiAgICBab2RUeXBlQW55LAogICAgWm9kVHlwZUFueSwKICAgIC4uLlpvZFR5cGVBbnlbXQpdPj4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIG9wdGlvbnM6IFQ7CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uOwp9CmRlY2xhcmUgY2xhc3MgWm9kVW5pb248VCBleHRlbmRzIFpvZFVuaW9uT3B0aW9ucz4gZXh0ZW5kcyBab2RUeXBlPFRbbnVtYmVyXVsiX291dHB1dCJdLCBab2RVbmlvbkRlZjxUPiwgVFtudW1iZXJdWyJfaW5wdXQiXT4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBnZXQgb3B0aW9ucygpOiBUOwogICAgc3RhdGljIGNyZWF0ZTogPFRfMSBleHRlbmRzIHJlYWRvbmx5IFtab2RUeXBlQW55LCBab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPih0eXBlczogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZFVuaW9uPFRfMT47Cn0KaW50ZXJmYWNlIFpvZEludGVyc2VjdGlvbkRlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksIFUgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGxlZnQ6IFQ7CiAgICByaWdodDogVTsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uOwp9CmRlY2xhcmUgY2xhc3MgWm9kSW50ZXJzZWN0aW9uPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBVIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSAmIFVbIl9vdXRwdXQiXSwgWm9kSW50ZXJzZWN0aW9uRGVmPFQsIFU+LCBUWyJfaW5wdXQiXSAmIFVbIl9pbnB1dCJdPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1siX291dHB1dCJdPjsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55LCBVXzEgZXh0ZW5kcyBab2RUeXBlQW55PihsZWZ0OiBUXzEsIHJpZ2h0OiBVXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kSW50ZXJzZWN0aW9uPFRfMSwgVV8xPjsKfQppbnRlcmZhY2UgWm9kUHJvbWlzZURlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICB0eXBlOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlOwp9CmRlY2xhcmUgY2xhc3MgWm9kUHJvbWlzZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFByb21pc2U8VFsiX291dHB1dCJdPiwgWm9kUHJvbWlzZURlZjxUPiwgUHJvbWlzZTxUWyJfaW5wdXQiXT4+IHsKICAgIHVud3JhcCgpOiBUOwogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4oc2NoZW1hOiBUXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kUHJvbWlzZTxUXzE+Owp9CnR5cGUgUmVmaW5lbWVudEVmZmVjdDxUPiA9IHsKICAgIHR5cGU6ICJyZWZpbmVtZW50IjsKICAgIHJlZmluZW1lbnQ6IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gYW55Owp9Owp0eXBlIFRyYW5zZm9ybUVmZmVjdDxUPiA9IHsKICAgIHR5cGU6ICJ0cmFuc2Zvcm0iOwogICAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTsKfTsKdHlwZSBQcmVwcm9jZXNzRWZmZWN0PFQ+ID0gewogICAgdHlwZTogInByZXByb2Nlc3MiOwogICAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTsKfTsKdHlwZSBFZmZlY3Q8VD4gPSBSZWZpbmVtZW50RWZmZWN0PFQ+IHwgVHJhbnNmb3JtRWZmZWN0PFQ+IHwgUHJlcHJvY2Vzc0VmZmVjdDxUPjsKaW50ZXJmYWNlIFpvZEVmZmVjdHNEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgc2NoZW1hOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzOwogICAgZWZmZWN0OiBFZmZlY3Q8YW55PjsKfQpkZWNsYXJlIGNsYXNzIFpvZEVmZmVjdHM8VCBleHRlbmRzIFpvZFR5cGVBbnksIE91dHB1dCA9IG91dHB1dDxUPiwgSW5wdXQgPSBpbnB1dDxUPj4gZXh0ZW5kcyBab2RUeXBlPE91dHB1dCwgWm9kRWZmZWN0c0RlZjxUPiwgSW5wdXQ+IHsKICAgIGlubmVyVHlwZSgpOiBUOwogICAgc291cmNlVHlwZSgpOiBUOwogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8SSBleHRlbmRzIFpvZFR5cGVBbnk+KHNjaGVtYTogSSwgZWZmZWN0OiBFZmZlY3Q8SVsiX291dHB1dCJdPiwgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKSA9PiBab2RFZmZlY3RzPEksIElbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlV2l0aFByZXByb2Nlc3M6IDxJIGV4dGVuZHMgWm9kVHlwZUFueT4ocHJlcHJvY2VzczogKGFyZzogdW5rbm93biwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiB1bmtub3duLCBzY2hlbWE6IEksIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kRWZmZWN0czxJLCBJWyJfb3V0cHV0Il0sIHVua25vd24+Owp9CgppbnRlcmZhY2UgWm9kT3B0aW9uYWxEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgaW5uZXJUeXBlOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbDsKfQpkZWNsYXJlIGNsYXNzIFpvZE9wdGlvbmFsPFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGU8VFsiX291dHB1dCJdIHwgdW5kZWZpbmVkLCBab2RPcHRpb25hbERlZjxUPiwgVFsiX2lucHV0Il0gfCB1bmRlZmluZWQ+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgdW53cmFwKCk6IFQ7CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZE9wdGlvbmFsPFRfMT47Cn0KaW50ZXJmYWNlIFpvZE51bGxhYmxlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbGFibGU7Cn0KZGVjbGFyZSBjbGFzcyBab2ROdWxsYWJsZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSB8IG51bGwsIFpvZE51bGxhYmxlRGVmPFQ+LCBUWyJfaW5wdXQiXSB8IG51bGw+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgdW53cmFwKCk6IFQ7CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZE51bGxhYmxlPFRfMT47Cn0KaW50ZXJmYWNlIFpvZERlZmF1bHREZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgaW5uZXJUeXBlOiBUOwogICAgZGVmYXVsdFZhbHVlOiAoKSA9PiB1dGlsLm5vVW5kZWZpbmVkPFRbIl9pbnB1dCJdPjsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdDsKfQpkZWNsYXJlIGNsYXNzIFpvZERlZmF1bHQ8VCBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTx1dGlsLm5vVW5kZWZpbmVkPFRbIl9vdXRwdXQiXT4sIFpvZERlZmF1bHREZWY8VD4sIFRbIl9pbnB1dCJdIHwgdW5kZWZpbmVkPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1siX291dHB1dCJdPjsKICAgIHJlbW92ZURlZmF1bHQoKTogVDsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55Pih0eXBlOiBUXzEsIHBhcmFtczogewogICAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXAgfCB1bmRlZmluZWQ7CiAgICAgICAgaW52YWxpZF90eXBlX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGRlZmF1bHQ6IFRfMVsiX2lucHV0Il0gfCAoKCkgPT4gdXRpbC5ub1VuZGVmaW5lZDxUXzFbIl9pbnB1dCJdPik7CiAgICB9KSA9PiBab2REZWZhdWx0PFRfMT47Cn0KaW50ZXJmYWNlIFpvZENhdGNoRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIGNhdGNoVmFsdWU6IChjdHg6IHsKICAgICAgICBlcnJvcjogWm9kRXJyb3I7CiAgICAgICAgaW5wdXQ6IHVua25vd247CiAgICB9KSA9PiBUWyJfaW5wdXQiXTsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2g7Cn0KZGVjbGFyZSBjbGFzcyBab2RDYXRjaDxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSwgWm9kQ2F0Y2hEZWY8VD4sIHVua25vd24+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgcmVtb3ZlQ2F0Y2goKTogVDsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55Pih0eXBlOiBUXzEsIHBhcmFtczogewogICAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXAgfCB1bmRlZmluZWQ7CiAgICAgICAgaW52YWxpZF90eXBlX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNhdGNoOiBUXzFbIl9vdXRwdXQiXSB8ICgoKSA9PiBUXzFbIl9vdXRwdXQiXSk7CiAgICB9KSA9PiBab2RDYXRjaDxUXzE+Owp9CmludGVyZmFjZSBab2RCcmFuZGVkRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgdHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQnJhbmRlZDsKfQpkZWNsYXJlIGNvbnN0IEJSQU5EOiB1bmlxdWUgc3ltYm9sOwp0eXBlIEJSQU5EPFQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gewogICAgW0JSQU5EXTogewogICAgICAgIFtrIGluIFRdOiB0cnVlOwogICAgfTsKfTsKZGVjbGFyZSBjbGFzcyBab2RCcmFuZGVkPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBCIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPiBleHRlbmRzIFpvZFR5cGU8VFsiX291dHB1dCJdICYgQlJBTkQ8Qj4sIFpvZEJyYW5kZWREZWY8VD4sIFRbIl9pbnB1dCJdPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PjsKICAgIHVud3JhcCgpOiBUOwp9CmludGVyZmFjZSBab2RQaXBlbGluZURlZjxBIGV4dGVuZHMgWm9kVHlwZUFueSwgQiBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBpbjogQTsKICAgIG91dDogQjsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUGlwZWxpbmU7Cn0KZGVjbGFyZSBjbGFzcyBab2RQaXBlbGluZTxBIGV4dGVuZHMgWm9kVHlwZUFueSwgQiBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTxCWyJfb3V0cHV0Il0sIFpvZFBpcGVsaW5lRGVmPEEsIEI+LCBBWyJfaW5wdXQiXT4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICBzdGF0aWMgY3JlYXRlPEEgZXh0ZW5kcyBab2RUeXBlQW55LCBCIGV4dGVuZHMgWm9kVHlwZUFueT4oYTogQSwgYjogQik6IFpvZFBpcGVsaW5lPEEsIEI+Owp9CnR5cGUgQnVpbHRJbiA9ICgoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHwgKG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueSkpIHwgewogICAgcmVhZG9ubHkgW1N5bWJvbC50b1N0cmluZ1RhZ106IHN0cmluZzsKfSB8IERhdGUgfCBFcnJvciB8IEdlbmVyYXRvciB8IFByb21pc2U8dW5rbm93bj4gfCBSZWdFeHA7CnR5cGUgTWFrZVJlYWRvbmx5PFQ+ID0gVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPiA/IFJlYWRvbmx5TWFwPEssIFY+IDogVCBleHRlbmRzIFNldDxpbmZlciBWPiA/IFJlYWRvbmx5U2V0PFY+IDogVCBleHRlbmRzIFtpbmZlciBIZWFkLCAuLi5pbmZlciBUYWlsXSA/IHJlYWRvbmx5IFtIZWFkLCAuLi5UYWlsXSA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBWPiA/IFJlYWRvbmx5QXJyYXk8Vj4gOiBUIGV4dGVuZHMgQnVpbHRJbiA/IFQgOiBSZWFkb25seTxUPjsKaW50ZXJmYWNlIFpvZFJlYWRvbmx5RGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHk7Cn0KZGVjbGFyZSBjbGFzcyBab2RSZWFkb25seTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPE1ha2VSZWFkb25seTxUWyJfb3V0cHV0Il0+LCBab2RSZWFkb25seURlZjxUPiwgTWFrZVJlYWRvbmx5PFRbIl9pbnB1dCJdPj4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZFJlYWRvbmx5PFRfMT47CiAgICB1bndyYXAoKTogVDsKfQpkZWNsYXJlIGVudW0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIHsKICAgIFpvZFN0cmluZyA9ICJab2RTdHJpbmciLAogICAgWm9kTnVtYmVyID0gIlpvZE51bWJlciIsCiAgICBab2ROYU4gPSAiWm9kTmFOIiwKICAgIFpvZEJpZ0ludCA9ICJab2RCaWdJbnQiLAogICAgWm9kQm9vbGVhbiA9ICJab2RCb29sZWFuIiwKICAgIFpvZERhdGUgPSAiWm9kRGF0ZSIsCiAgICBab2RTeW1ib2wgPSAiWm9kU3ltYm9sIiwKICAgIFpvZFVuZGVmaW5lZCA9ICJab2RVbmRlZmluZWQiLAogICAgWm9kTnVsbCA9ICJab2ROdWxsIiwKICAgIFpvZEFueSA9ICJab2RBbnkiLAogICAgWm9kVW5rbm93biA9ICJab2RVbmtub3duIiwKICAgIFpvZE5ldmVyID0gIlpvZE5ldmVyIiwKICAgIFpvZFZvaWQgPSAiWm9kVm9pZCIsCiAgICBab2RBcnJheSA9ICJab2RBcnJheSIsCiAgICBab2RPYmplY3QgPSAiWm9kT2JqZWN0IiwKICAgIFpvZFVuaW9uID0gIlpvZFVuaW9uIiwKICAgIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9ICJab2REaXNjcmltaW5hdGVkVW5pb24iLAogICAgWm9kSW50ZXJzZWN0aW9uID0gIlpvZEludGVyc2VjdGlvbiIsCiAgICBab2RUdXBsZSA9ICJab2RUdXBsZSIsCiAgICBab2RSZWNvcmQgPSAiWm9kUmVjb3JkIiwKICAgIFpvZE1hcCA9ICJab2RNYXAiLAogICAgWm9kU2V0ID0gIlpvZFNldCIsCiAgICBab2RGdW5jdGlvbiA9ICJab2RGdW5jdGlvbiIsCiAgICBab2RMYXp5ID0gIlpvZExhenkiLAogICAgWm9kTGl0ZXJhbCA9ICJab2RMaXRlcmFsIiwKICAgIFpvZEVudW0gPSAiWm9kRW51bSIsCiAgICBab2RFZmZlY3RzID0gIlpvZEVmZmVjdHMiLAogICAgWm9kTmF0aXZlRW51bSA9ICJab2ROYXRpdmVFbnVtIiwKICAgIFpvZE9wdGlvbmFsID0gIlpvZE9wdGlvbmFsIiwKICAgIFpvZE51bGxhYmxlID0gIlpvZE51bGxhYmxlIiwKICAgIFpvZERlZmF1bHQgPSAiWm9kRGVmYXVsdCIsCiAgICBab2RDYXRjaCA9ICJab2RDYXRjaCIsCiAgICBab2RQcm9taXNlID0gIlpvZFByb21pc2UiLAogICAgWm9kQnJhbmRlZCA9ICJab2RCcmFuZGVkIiwKICAgIFpvZFBpcGVsaW5lID0gIlpvZFBpcGVsaW5lIiwKICAgIFpvZFJlYWRvbmx5ID0gIlpvZFJlYWRvbmx5Igp9Cgp0eXBlIExvZ1ZhbHVlT2JqZWN0ID0gewogICAgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBMb2dWYWx1ZU9iamVjdCB8IExvZ1ZhbHVlT2JqZWN0W107Cn07CgppbnRlcmZhY2UgR2l0SHViV29ya2Zsb3dSZXN1bHQgewogICAgam9iX2lkOiBzdHJpbmc7CiAgICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAndGltZW91dCc7CiAgICByZXN1bHQ/OiB7CiAgICAgICAgb3V0cHV0PzogYW55OwogICAgICAgIHdvcmtmbG93X3J1bl9pZD86IG51bWJlcjsKICAgICAgICB3b3JrZmxvd19jb25jbHVzaW9uPzogc3RyaW5nOwogICAgICAgIGV4ZWN1dGlvbl90aW1lPzogbnVtYmVyOwogICAgfTsKICAgIGFydGlmYWN0cz86IEFycmF5PHsKICAgICAgICBpZDogbnVtYmVyOwogICAgICAgIG5hbWU6IHN0cmluZzsKICAgICAgICBzaXplX2J5dGVzOiBudW1iZXI7CiAgICAgICAgY29udGVudD86IGFueTsKICAgICAgICBjb250ZW50X3R5cGU/OiBzdHJpbmc7CiAgICB9PjsKICAgIHN0YXJ0ZWRfYXQ/OiBzdHJpbmc7CiAgICBjb21wbGV0ZWRfYXQ/OiBzdHJpbmc7CiAgICBnaXRodWJfdXJsPzogc3RyaW5nOwogICAgZXJyb3I/OiBzdHJpbmc7Cn0KCmludGVyZmFjZSBUcmFpbmluZ0V4YW1wbGVSZW5kZXJDb250ZXh0IHsKICAgIC8qKiBTY29wZWQgYWN0aW9uczogYGdldGAvYHNldGAgcmVhZCBhbmQgd3JpdGUgdGhlIGV4YW1wbGUgc2FuZGJveCBpbnN0ZWFkIG9mIHRoZSB0YXNrIGRhdGEgcm9vdC4gKi8KICAgIGFjdGlvbnM6IHR5cGVvZiBhY3Rpb25zOwogICAgLyoqCiAgICAgKiBUaGUgY3VycmVudCBleGFtcGxlIGlucHV0IEFGVEVSIHRoZSBub2RlIHByZXByb2Nlc3MgcnVucyAoaWRlbnRpdHkgd2hlbgogICAgICogdGhlIGJsb2NrIGhhcyBubyBwcmVwcm9jZXNzKSwgc28gdGhlIGludGVyZmFjZSBzZWVzIHRoZSBzYW1lIGRhdGEgYXMKICAgICAqIHByb2R1Y3Rpb24uIEFsc28gcmVhZGFibGUgdmlhIGBhY3Rpb25zLmdldCgnPG5hbWU+JylgLgogICAgICovCiAgICBpbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47CiAgICBleGFtcGxlSWQ6IHN0cmluZzsKfQoKZGVjbGFyZSBjb25zdCBTdXNwZW5zZVBlbmRpbmdNYXJrZXI6IFJlYWN0LkZDOwpkZWNsYXJlIGNvbnN0IEZpZWxkOiB7CiAgICByZWFkb25seSBBaUVkaXRvcjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbW1lbnRzPzogewogICAgICAgICAgICB1c2VyVHlwZTogc3RyaW5nOwogICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRlbnRFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWlDaGVja3M/OiB7CiAgICAgICAgICAgIGNvZGU/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBjaGVja1R5cGVzPzogKCJDT0RFQkxPQ0tfRVhJU1RTIiB8ICJJTlRST19DT01NRU5UX0VYSVNUUyIgfCAiTEFOR19TUEVDSUZJRUQiIHwgIkNPREVfQ09NTUVOVFNfRVhJU1RTIilbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgaW50ZW50PzogewogICAgICAgICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjsKICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBib29sZWFuOwogICAgICAgICAgICAgICAgcHJvbXB0OiBzdHJpbmc7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZhY3RzPzogewogICAgICAgICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjsKICAgICAgICAgICAgICAgIHNvdXJjZVRleHRzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBzb3VyY2VMaW5rcz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbWF4U2VsZWN0ZWRTeW1ib2xzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmFjdHM/OiB7CiAgICAgICAgICAgICAgICAgICAgY29udGVudDogc3RyaW5nOwogICAgICAgICAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBncmFtbWFyU2NvcmU/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgbWluU2NvcmU6IG51bWJlcjsKICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBib29sZWFuOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3b3JkQ291bnQ/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRva2VuQ291bnQ/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBpZ25vcmVNYXJrZG93bj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB0b2tlbml6ZXJJZD86ICJ1bmlncmFtXzAycGN0X2NjX3YxLjBfaGZfY29udmVydGVkX2NsZWFuZWQiIHwgImNsYXVkZS0zLTUtc29ubmV0LTIwMjQwNjIwLWFudGhyb3BpYy1haS1jb3VudC10b2tlbnMiIHwgImNsYXVkZS0zLTUtc29ubmV0LTIwMjQxMDIyLWFudGhyb3BpYy1haS1jb3VudC10b2tlbnMiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBhaUdlbmVyYXRlZD86IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47CiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogYm9vbGVhbjsKICAgICAgICAgICAgICAgIG9yaWdpbmFsVGhyZXNob2xkOiBudW1iZXI7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0TW9kZT86ICJtYXJrZG93biIgfCAicmljaC10ZXh0IiB8IHVuZGVmaW5lZDsKICAgICAgICBpbWFnZVR5cGU/OiAidXJsIiB8ICJiYXNlNjQiIHwgImJsb2IiIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZVNpbmdsZURvbGxhck1hdGg/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRBaVBhbmVsQ29udGVudD86ICJjb2RlIiB8ICJjb21tZW50cyIgfCAiaW50ZW50IiB8ICJncmFtbWFyU2NvcmUiIHwgImFpR2VuZXJhdGVkIiB8ICJmYWN0IiB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZENvbnRlbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlQ29udGVudD86ICgoYXJnc18wOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ2hlY2tib3g6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUZhbHNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ2hhdEFzc2lzdGFudDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICB0aGlua2luZz86IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJlbmFibGVkIjsKICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvcF9wPzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXhfdG9rZW5zPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluaXRpYWxNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IENvZGU6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybWF0aW5nPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ29kZUV4ZWN1dGlvbjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYW5ndWFnZTogInB5dGhvbkAzLjEwLjAiIHwgImphdmFzY3JpcHRAMjAuMTEuMSI7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm1hdGluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IERpYWxvZ1JldmlldzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBhbGxvd2VkTWV0YU1vZGVsczogUGFydGlhbDxSZWNvcmQ8ImNoYXRncHQiIHwgImNsYXVkZSIgfCAiZ2VtaW5pIiB8ICJtZXRhIiB8ICJtZXRhXzEiIHwgIm1ldGFfMiIsIHN0cmluZz4+OwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRvcGljPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHFhPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbHM/OiAoImNoYXRncHQiIHwgImNsYXVkZSIgfCAiZ2VtaW5pIiB8ICJtZXRhIiB8ICJtZXRhXzEiIHwgIm1ldGFfMiIpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgZGltZW5zaW9ucz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBFeHRlcm5hbDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB1cmw6IHN0cmluZzsKICAgICAgICBjb25maWc6IHt9OwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBGYWNlQ29sbGVjdGlvbjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBxYT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9iaWxlT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWF0aW9uPzogIkEiIHwgIkIiIHwgdW5kZWZpbmVkOwogICAgICAgIHBhZ2U/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVidWc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNhbWVQZXJzb25UaHJlc2hvbGQ/OiB7CiAgICAgICAgICAgIHNlbGZpZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9zZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgaGlzdG9yaWNhbD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBGaWxlVXBsb2FkOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG11bHRpcGxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhY2NlcHQ/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDsKICAgICAgICBsaW5rVHlwZT86ICJzYXNMaW5rIiB8ICJkb3dubG9hZExpbmsiIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbmltdW1GaWxlcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgSW1hZ2VBbm5vdGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGltYWdlOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRvb2xzPzogKCJyZWN0YW5nbGUiIHwgInBvbHlnb24iKVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVscz86IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgY29sb3I6ICJyZWQiIHwgIm9yYW5nZSIgfCAiYW1iZXIiIHwgInllbGxvdyIgfCAibGltZSIgfCAiZ3JlZW4iIHwgImVtZXJhbGQiIHwgInRlYWwiIHwgImN5YW4iIHwgInNreSIgfCAiYmx1ZSIgfCAiaW5kaWdvIiB8ICJ2aW9sZXQiIHwgInB1cnBsZSIgfCAiZnVjaHNpYSIgfCAicGluayIgfCAicm9zZSIgfCAid2hpdGUiOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBxdWVzdGlvbnM/OiAoewogICAgICAgICAgICB0eXBlOiAidGV4dCI7CiAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgfVtdOwogICAgICAgICAgICB0eXBlOiAidG9nZ2xlLWdyb3VwIjsKICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHR5cGU6ICJzZWxlY3QiOwogICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdHlwZTogIm51bWJlciI7CiAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlY2ltYWxTY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB9KVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGFubm90YXRpb25TaXplPzogewogICAgICAgICAgICBtaW5IZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbldpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzcGxheUxhYmVscz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbmF2aWdhdG9yPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0QW5ub3RhdGlvbkNvbG9yPzogInJlZCIgfCAib3JhbmdlIiB8ICJhbWJlciIgfCAieWVsbG93IiB8ICJsaW1lIiB8ICJncmVlbiIgfCAiZW1lcmFsZCIgfCAidGVhbCIgfCAiY3lhbiIgfCAic2t5IiB8ICJibHVlIiB8ICJpbmRpZ28iIHwgInZpb2xldCIgfCAicHVycGxlIiB8ICJmdWNoc2lhIiB8ICJwaW5rIiB8ICJyb3NlIiB8ICJ3aGl0ZSIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IEltYWdlU2tlbGV0b25Bbm5vdGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHRvb2xzOiB7CiAgICAgICAgICAgIHR5cGU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgY29sb3I6ICJyZWQiIHwgIm9yYW5nZSIgfCAiYW1iZXIiIHwgInllbGxvdyIgfCAibGltZSIgfCAiZ3JlZW4iIHwgImVtZXJhbGQiIHwgInRlYWwiIHwgImN5YW4iIHwgInNreSIgfCAiYmx1ZSIgfCAiaW5kaWdvIiB8ICJ2aW9sZXQiIHwgInB1cnBsZSIgfCAiZnVjaHNpYSIgfCAicGluayIgfCAicm9zZSIgfCAid2hpdGUiOwogICAgICAgICAgICB0ZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgW251bWJlciwgbnVtYmVyXT47CiAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbc3RyaW5nLCBzdHJpbmddW107CiAgICAgICAgICAgIHBvaW50c0NvbG9yPzogUmVjb3JkPHN0cmluZywgInJlZCIgfCAib3JhbmdlIiB8ICJhbWJlciIgfCAieWVsbG93IiB8ICJsaW1lIiB8ICJncmVlbiIgfCAiZW1lcmFsZCIgfCAidGVhbCIgfCAiY3lhbiIgfCAic2t5IiB8ICJibHVlIiB8ICJpbmRpZ28iIHwgInZpb2xldCIgfCAicHVycGxlIiB8ICJmdWNoc2lhIiB8ICJwaW5rIiB8ICJyb3NlIiB8ICJ3aGl0ZSI+IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBzaG93UG9pbnRMYWJlbD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHNjYWxlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBpbWFnZTogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgSnNvblNjaGVtYUZvcm06IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc2NoZW1hPzogYW55OwogICAgfT47CiAgICByZWFkb25seSBMaXN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHJlbmRlckl0ZW06IChhcmdzXzA6IHN0cmluZywgYXJnc18xOiBhbnksIGFyZ3NfMjogbnVtYmVyKSA9PiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1XaXRoQm9yZGVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhZGRCdXR0b25MYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhZGRCdXR0b25WYXJpYW50PzogImRlZmF1bHQiIHwgInNlY29uZGFyeSIgfCAiZ2hvc3QiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgICAgIGdhcD86IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICByZW9yZGVyYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE1lZGlhVGFza1JldmlldzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgTWxFbmRwb2ludDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIGVuZHBvaW50OiBzdHJpbmc7CiAgICAgICAgZGF0YToge30gfCAoKCkgPT4ge30pOwogICAgICAgIGZ1bmN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB1c2VfY2FjaGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBvc3RQcm9jZXNzaW5nRm4/OiAoKGVuZHBvaW50UmVzdWx0OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJkZWZhdWx0IiB8ICJzZWNvbmRhcnkiIHwgImdob3N0IiB8ICJvdXRsaW5lIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGFpbj86IHsKICAgICAgICAgICAgdHlwZT86ICJidXR0b24iIHwgImNoZWNrYm94IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlZmF1bHRDb21tZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvblN1Y2Nlc3M/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluc3RydWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE1sRW5kcG9pbnRNdWx0aXBsZTogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIHJlcXVlc3RzOiB7CiAgICAgICAgICAgIGVuZHBvaW50OiBzdHJpbmc7CiAgICAgICAgICAgIGRhdGE6IHt9IHwgKCgpID0+IHt9KTsKICAgICAgICAgICAgZnVuY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdXNlX2NhY2hlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJkZWZhdWx0IiB8ICJzZWNvbmRhcnkiIHwgImdob3N0IiB8ICJvdXRsaW5lIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGFpbj86IHsKICAgICAgICAgICAgdHlwZT86ICJidXR0b24iIHwgImNoZWNrYm94IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlZmF1bHRDb21tZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvblN1Y2Nlc3M/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluc3RydWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE11bHRpU2VsZWN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE51bWJlcjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlY2ltYWxTY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgUG9ydGFsQ2hhdEFzc2lzdGFudDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICB0aGlua2luZz86IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJlbmFibGVkIjsKICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvcF9wPzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXhfdG9rZW5zPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluaXRpYWxNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFJhZGlvR3JvdXA6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgICAgICBoaW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgU2VsZWN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNob3BpZnlPbmVEY2c6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgc2hvcEFwcEVtYWlsOiBzdHJpbmc7CiAgICAgICAgY291bnRyeTogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcWE/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHF1ZXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHF1ZXJ5U2hhcGU/OiAia2V5d29yZCIgfCAiY29tcGxleCIgfCAiY29udmVyc2F0aW9uYWwiIHwgdW5kZWZpbmVkOwogICAgICAgIHBlcnNvbmE/OiB7CiAgICAgICAgICAgIHV1aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlbGF0aW9uc2hpcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgc3VtbWFyeT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgc25hcHNob3Q/OiB1bmtub3duOwogICAgICAgICAgICBsb29rdXBfc291cmNlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgcGFpcnNUYXJnZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgaXNUZXN0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZWFzb25pbmdGYWN0b3JzPzogewogICAgICAgICAgICBpZDogc3RyaW5nOwogICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgU2hvcGlmeVN0b3JlZnJvbnQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAganVkZ2VzOiB7CiAgICAgICAgICAgIHNob3BfYXBwX2VtYWlsOiBzdHJpbmc7CiAgICAgICAgICAgIGNvdW50cnk6IHN0cmluZzsKICAgICAgICAgICAgcGVyc29uYTogewogICAgICAgICAgICAgICAgdXVpZDogc3RyaW5nOwogICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwOiBzdHJpbmc7CiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsb29rdXBfc291cmNlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICBzbmFwc2hvdD86IHVua25vd247CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHN0b3JlczogewogICAgICAgICAgICAgICAgc2hvcF9naWQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIG1lcmNoYW50X25hbWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGRvbWFpbjogc3RyaW5nOwogICAgICAgICAgICAgICAgbWVyY2hhbnRfY2F0ZWdvcnk6IHN0cmluZzsKICAgICAgICAgICAgICAgIHNhbXBsZV9wcm9kdWN0czogc3RyaW5nW107CiAgICAgICAgICAgICAgICB2aXNpdGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJhbms/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgbGF0ZXN0X3F1ZXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGlzVGVzdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNwZWVjaFRvVGV4dDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9kZWxJZD86ICJncHQtNG8tdHJhbnNjcmliZSIgfCAiZ3B0LTRvLW1pbmktdHJhbnNjcmliZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNwZWVjaFRvVGV4dFYyOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogImdwdC00by10cmFuc2NyaWJlIiB8ICJncHQtNG8tbWluaS10cmFuc2NyaWJlIiB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVGV4dDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcGVsbENoZWNrPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZENvcHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkUGFzdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBUZXh0QW5ub3RhdGlvbjogUmVhY3QuRkM8ewogICAgICAgIGNvbnRlbnQ6IHN0cmluZzsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgIGNvbG9yOiAicmVkIiB8ICJvcmFuZ2UiIHwgImFtYmVyIiB8ICJ5ZWxsb3ciIHwgImxpbWUiIHwgImdyZWVuIiB8ICJlbWVyYWxkIiB8ICJ0ZWFsIiB8ICJjeWFuIiB8ICJza3kiIHwgImJsdWUiIHwgImluZGlnbyIgfCAidmlvbGV0IiB8ICJwdXJwbGUiIHwgImZ1Y2hzaWEiIHwgInBpbmsiIHwgInJvc2UiIHwgIndoaXRlIjsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9kZT86ICJjbGFzc2lmeWluZyIgfCAiY2xhc3NpZnlpbmctY29tbWVudGluZyIgfCB1bmRlZmluZWQ7CiAgICAgICAgYWRqdXN0PzogInN5bWJvbHMiIHwgIndvcmRzIiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVGV4dGFyZWE6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3BlbGxDaGVjaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWRDb3B5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZFBhc3RlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZXNpemFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJvd3M/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFRvZ2dsZUdyb3VwOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiAibXVsdGlwbGUiIHwgInNpbmdsZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBWaWRlb1RpbWVsaW5lU2VnbWVudGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZpZGVvOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcXVlc3Rpb25zPzogewogICAgICAgICAgICBrZXlmcmFtZXM/OiAoewogICAgICAgICAgICAgICAgdHlwZTogInRleHQiOwogICAgICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgewogICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICB0eXBlOiAidG9nZ2xlLWdyb3VwIjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0pW10gfCAoKGFyZ3NfMDogb2JqZWN0SW5wdXRUeXBlPHsKICAgICAgICAgICAgICAgIHRpbWU6IFpvZE51bWJlcjsKICAgICAgICAgICAgfSwgWm9kVW5rbm93biwgInN0cmlwIj4pID0+ICh7CiAgICAgICAgICAgICAgICB0eXBlOiAidGV4dCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB7CiAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0b2dnbGUtZ3JvdXAiOwogICAgICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSlbXSkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHNlZ21lbnRzPzogKHsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgdHlwZTogInRvZ2dsZS1ncm91cCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9KVtdIHwgKChhcmdzXzA6IG9iamVjdElucHV0VHlwZTx7CiAgICAgICAgICAgICAgICBmcm9tOiBab2ROdW1iZXI7CiAgICAgICAgICAgICAgICB0bzogWm9kTnVtYmVyOwogICAgICAgICAgICB9LCBab2RVbmtub3duLCAic3RyaXAiPikgPT4gKHsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgdHlwZTogInRvZ2dsZS1ncm91cCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9KVtdKSB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgIG1vZGU/OiAia2V5ZnJhbWVzIiB8ICJzZWdtZW50cyIgfCAia2V5ZnJhbWVzLXNlZ21lbnRzIiB8IHVuZGVmaW5lZDsKICAgICAgICB2aWRlb0hlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0UGxheWJhY2tSYXRlPzogMSB8IDIgfCAwLjI1IHwgMC41IHwgMC43NSB8IDEuMjUgfCAxLjUgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFZpZGVvRnJhbWluZzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2aWRlbzogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZpZGVvSGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRQbGF5YmFja1JhdGU/OiAxIHwgMiB8IDAuMjUgfCAwLjUgfCAwLjc1IHwgMS4yNSB8IDEuNSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVmlkZW9SZWNvcmQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgZnBzVG9sZXJhbmNlRnJhY3Rpb246IG51bWJlcjsKICAgICAgICByZXNvbHV0aW9uVG9sZXJhbmNlRnJhY3Rpb246IG51bWJlcjsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2JpbGVPbmx5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsaW5rVHlwZT86ICJzYXNMaW5rIiB8ICJkb3dubG9hZExpbmsiIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5XaWR0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvcmllbnRhdGlvbj86ICJsYW5kc2NhcGUiIHwgInBvcnRyYWl0IiB8IHVuZGVmaW5lZDsKICAgICAgICBsb2NrU2NyZWVuT3JpZW50YXRpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkR1cmF0aW9uU2VjPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heER1cmF0aW9uU2VjPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNhbWVyYUZhY2luZz86ICJ1c2VyIiB8ICJlbnZpcm9ubWVudCIgfCB1bmRlZmluZWQ7CiAgICAgICAgYXVkaW8/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJlY29yZGluZ1F1YWxpdHk/OiAiaGlnaCIgfCAibG93IiB8ICJiYWxhbmNlZCIgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5zdXBwb3J0ZWRNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hdGl2ZUNhbWVyYT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhdGZvcm0/OiAiaW9zIiB8ICJhbmRyb2lkIiB8ICJib3RoIiB8IHVuZGVmaW5lZDsKICAgICAgICBsZW5zPzogImRlZmF1bHQiIHwgIndpZGUiIHwgInVsdHJhV2lkZSIgfCAidGVsZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluRm92RGVnPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkZwcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5CaXRyYXRlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhkck1vZGU/OiAib2ZmIiB8ICJoZHIxMCIgfCAiYXV0byIgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlnaHRpbmdUaHJlc2hvbGQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVjb3JkSW11PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVmlkZW9VcGxvYWQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbXVsdGlwbGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFjY2VwdD86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgICAgIGxpbmtUeXBlPzogInNhc0xpbmsiIHwgImRvd25sb2FkTGluayIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluaW11bUZpbGVzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWVudGF0aW9uPzogImxhbmRzY2FwZSIgfCAicG9ydHJhaXQiIHwgInNxdWFyZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluRHVyYXRpb25TZWM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4RHVyYXRpb25TZWM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFdvcmxkU2VhcmNoOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGF2YWlsYWJsZVdvcmxkczogc3RyaW5nW107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGVyUGFnZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzZWxlY3REb2N1bWVudHM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47Cn07CmRlY2xhcmUgY29uc3QgTGF5b3V0OiB7CiAgICBTdGlja3lIZWFkZXI6IFJlYWN0LkZDPHsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWFkZXI/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKfTsKZGVjbGFyZSBjb25zdCBWaWV3OiB7CiAgICBBY3Rpb25CdXR0b246IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIGFjdGlvbjogKCkgPT4gYW55OwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImRlZmF1bHQiIHwgInNlY29uZGFyeSIgfCAiZ2hvc3QiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgICAgIGxvYWRpbmdMYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgQWxlcnQ6IFJlYWN0LkZDPHsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImVycm9yIiB8ICJkZWZhdWx0IiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIiB8IHVuZGVmaW5lZDsKICAgICAgICBwYWRkaW5nPzogInNtIiB8ICJtZCIgfCB1bmRlZmluZWQ7CiAgICAgICAgaWNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIEF1ZGlvOiBSZWFjdC5GQzx7CiAgICAgICAgdXJsOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgcGxheWVkRnVsbHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIENhcmQ6IFJlYWN0LkZDPHsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImVycm9yIiB8ICJkZWZhdWx0IiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIiB8IHVuZGVmaW5lZDsKICAgICAgICB2aWV3PzogImZpbGwiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBDb2RlRGlmZjogUmVhY3QuRkM8ewogICAgICAgIG9yaWdpbmFsOiBzdHJpbmc7CiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZzsKICAgICAgICBtb2RpZmllZDogc3RyaW5nOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzaWRlQnlTaWRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgQ29sOiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2V0UGFyYW1zPzogKChhcmdzXzA6IG51bWJlcikgPT4gewogICAgICAgICAgICBzcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgfSkgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIENvbGxhcHNpYmxlOiBSZWFjdC5GQzx7CiAgICAgICAgZmxhdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdGl0bGU/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhcmlhbnQ/OiAiZGVmYXVsdCIgfCAiaW5mbyIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdE9wZW4/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBEaXZpZGVyOiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JpZW50YXRpb24/OiAiaG9yaXpvbnRhbCIgfCAidmVydGljYWwiIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBGbGV4OiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2FwPzogc3RyaW5nIHwgbnVtYmVyIHwgW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyXSB8IHVuZGVmaW5lZDsKICAgICAgICBqdXN0aWZ5PzogInN0YXJ0IiB8ICJlbmQiIHwgImNlbnRlciIgfCAibm9ybWFsIiB8ICJzcGFjZS1hcm91bmQiIHwgInNwYWNlLWJldHdlZW4iIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRpY2FsPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB3cmFwPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGlnbj86ICJzdGFydCIgfCAiZW5kIiB8ICJtaWRkbGUiIHwgInN0cmV0Y2giIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBJbWFnZTogUmVhY3QuRkM8ewogICAgICAgIHNyYzogc3RyaW5nOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByZXZpZXc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBJbWFnZUdhbGxlcnk6IFJlYWN0LkZDPHsKICAgICAgICBpbWFnZXM6IHN0cmluZ1tdOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmV2aWV3PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgTGFiZWw6IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMYWJlbHM6IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgdGl0bGU6IHN0cmluZzsKICAgICAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aGVtZT86ICJkZWZhdWx0IiB8ICJhbGVydCIgfCAic3VjY2VzcyIgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMZWFmbGV0TWFwOiBSZWFjdC5GQzx7CiAgICAgICAgY2VudGVyOiBbbnVtYmVyLCBudW1iZXJdOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB6b29tPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmtlcnM/OiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdOwogICAgICAgICAgICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9wdXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMaW5rOiBSZWFjdC5GQzx7CiAgICAgICAgdXJsOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgb3BlbmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBNYXJrZG93bjogUmVhY3QuRkM8ewogICAgICAgIGNvbnRlbnQ6IHN0cmluZzsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZENvcHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGh0bWw/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBSb3c6IFJlYWN0LkZDPHsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnYXA/OiBzdHJpbmcgfCBudW1iZXIgfCBbc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdIHwgdW5kZWZpbmVkOwogICAgICAgIGp1c3RpZnk/OiAic3RhcnQiIHwgImVuZCIgfCAiY2VudGVyIiB8ICJzcGFjZS1hcm91bmQiIHwgInNwYWNlLWJldHdlZW4iIHwgdW5kZWZpbmVkOwogICAgICAgIGFsaWduPzogInN0YXJ0IiB8ICJlbmQiIHwgIm1pZGRsZSIgfCAic3RyZXRjaCIgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFRhYnM6IFJlYWN0LkZDPHsKICAgICAgICB0YWJzOiB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIGNvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0VGFiPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYnNWaWV3S2V5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUZXh0OiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3I/OiAiZXJyb3IiIHwgInNlY29uZGFyeSIgfCAicHJpbWFyeSIgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJjb2RlIiB8ICJibG9ja3F1b3RlIiB8ICJoMSIgfCAiaDIiIHwgImgzIiB8ICJoNCIgfCAicCIgfCAic21hbGwiIHwgImxhcmdlIiB8IHVuZGVmaW5lZDsKICAgIH0gJiB7CiAgICAgICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsKICAgIH0+OwogICAgVGV4dERpZmY6IFJlYWN0LkZDPHsKICAgICAgICBzb3VyY2U6IHN0cmluZzsKICAgICAgICB0YXJnZXQ6IHN0cmluZzsKICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0T3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxnb3JpdGhtPzogInN5bWJvbHMiIHwgIndvcmRzIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50SGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYnNMYWJlbHM/OiB7CiAgICAgICAgICAgIHNvdXJjZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBkaWZmPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIFR1dG9yaWFsOiBSZWFjdC5GQzx7CiAgICAgICAgdW5pcXVlSWQ6IHN0cmluZzsKICAgICAgICBzdGVwczogewogICAgICAgICAgICB0aXRsZTogc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZGlzYWJsZUFjdGl2ZUludGVyYWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW5zdGFudD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgd2l0aEJ1dHRvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dDbG9zZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFBkZjogUmVhY3QuRkM8ewogICAgICAgIHVybDogc3RyaW5nOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVmlkZW86IFJlYWN0LkZDPHsKICAgICAgICB1cmw6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBwbGF5ZWRGdWxseT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByYXRpbz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgT25ib2FyZGluZzogUmVhY3QuRkM8ewogICAgICAgIG1vZHVsZXM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgcm9sZTogc3RyaW5nOwogICAgICAgICAgICBzdGVwczogewogICAgICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHsKICAgICAgICAgICAgICAgICAgICBpZDogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47CiAgICAgICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGNyaXRlcmlhOiBzdHJpbmc7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICBjb250ZW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHNjZW5hcmlvOiBzdHJpbmc7CiAgICAgICAgICAgIGdvYWw6IHN0cmluZzsKICAgICAgICAgICAgc3VjY2Vzc0NyaXRlcmlhOiBzdHJpbmc7CiAgICAgICAgfVtdOwogICAgICAgIGZsYXQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGRlc2NyaXB0aW9uPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZzogUmVhY3QuRkM8ewogICAgICAgIHN0ZXBzOiB7CiAgICAgICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgICAgIGJsb2NrczogYW55W107CiAgICAgICAgfVtdOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZ1RoZW9yeTogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgY29udGVudD86ICh7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJtYXJrZG93biI7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogImltYWdlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGFsdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAidmlkZW8iOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiY29kZSI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsYW5ndWFnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KVtdIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZ0NvbnNlbnQ6IFJlYWN0LkZDPHsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIGNvbnNlbnRMYWJlbDogc3RyaW5nOwogICAgICAgIGNvbnRlbnQ/OiAoewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAibWFya2Rvd24iOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJpbWFnZSI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogInZpZGVvIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogImNvZGUiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFuZ3VhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSlbXSB8IHVuZGVmaW5lZDsKICAgICAgICBwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVHJhaW5pbmdRdWl6OiBSZWFjdC5GQzx7CiAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICBxdWVzdGlvbnM6IHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgdHlwZTogInNpbmdsZS1jaG9pY2UiIHwgIm11bHRpcGxlLWNob2ljZSI7CiAgICAgICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgICAgIHF1ZXN0aW9uOiBzdHJpbmc7CiAgICAgICAgICAgIGNvcnJlY3RBbnN3ZXI6IHN0cmluZyB8IHN0cmluZ1tdOwogICAgICAgICAgICBoaW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBjb3JyZWN0QW5zd2VyRmVlZGJhY2s/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluY29ycmVjdEFuc3dlckZlZWRiYWNrPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBjb250ZW50PzogKHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogIm1hcmtkb3duIjsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiaW1hZ2UiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgYWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJ2aWRlbyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIFRyYWluaW5nUHJhY3RpY2U6IFJlYWN0LkZDPHsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRvcnM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZzsKICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47CiAgICAgICAgICAgIG5hbWU6IHN0cmluZzsKICAgICAgICAgICAgY3JpdGVyaWE6IHN0cmluZzsKICAgICAgICB9W107CiAgICAgICAgZWRpdG9yVHlwZTogIlRFWFQiIHwgIk1BUktET1dOIiB8ICJDT0RFIjsKICAgICAgICBjb250ZW50PzogKHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogIm1hcmtkb3duIjsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiaW1hZ2UiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgYWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJ2aWRlbyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VVcmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZWRpdG9yQ29uZmlnPzogewogICAgICAgICAgICBsYW5ndWFnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJvd3M/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVHJhaW5pbmdFeGFtcGxlczogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgZXhhbXBsZXM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgY2hlY2tzOiAoewogICAgICAgICAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgICAgICAgICAgdHlwZTogImV4YWN0IjsKICAgICAgICAgICAgICAgIGhpbnQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIGdvbGRlbjogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVua25vd25bXSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIGNvZGU6IHN0cmluZzsKICAgICAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgICAgIGhpbnQ6IHN0cmluZzsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJsbG0iOwogICAgICAgICAgICAgICAgY3JpdGVyaWE6IHN0cmluZzsKICAgICAgICAgICAgICAgIHBhdGhzOiBzdHJpbmdbXTsKICAgICAgICAgICAgICAgIGhpbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBpbWFnZVVybD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlZmVyZW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSlbXTsKICAgICAgICAgICAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OwogICAgICAgICAgICBleHBsYW5hdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlcHJvY2Vzcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0cHJvY2Vzcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0gJiB7CiAgICAgICAgY2hpbGRyZW46IChjb250ZXh0OiBUcmFpbmluZ0V4YW1wbGVSZW5kZXJDb250ZXh0KSA9PiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFRyYWluaW5nSW5mbzogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgcm9sZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnb2FsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN1Y2Nlc3NDcml0ZXJpYT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGV0aW9uVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+Owp9OwpkZWNsYXJlIGNvbnN0IFZhbGlkYXRpb246IFJlYWN0LkZDPHsKICAgIG1lc3NhZ2U6IHN0cmluZzsKICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIGlzVmFsaWQ/OiBhbnk7Cn0gJiB7CiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwp9PjsKZGVjbGFyZSBjb25zdCBhY3Rpb25zOiB7CiAgICBsbG06IChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgcHJvbXB0OiBzdHJpbmcgfCB7CiAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZzsKICAgICAgICAgICAgfVtdOwogICAgICAgICAgICByb2xlOiBzdHJpbmc7CiAgICAgICAgfVtdIHwgKCgpID0+IHN0cmluZyB8IHsKICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHJvbGU6IHN0cmluZzsKICAgICAgICB9W10pOwogICAgICAgIG9wdGlvbnM/OiB7CiAgICAgICAgICAgIHRoaW5raW5nPzogewogICAgICAgICAgICAgICAgdHlwZTogImVuYWJsZWQiOwogICAgICAgICAgICAgICAgYnVkZ2V0X3Rva2Vucz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX3A/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b3Bfaz86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvb2xzPzogYW55W10gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzeXN0ZW1fcHJvbXB0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1vZGVsX2lkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3BvbnNlX2Zvcm1hdF90eXBlPzogImpzb25fb2JqZWN0IiB8IHVuZGVmaW5lZDsKICAgICAgICBpbWFnZV91cmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VfZGV0YWlsPzogImhpZ2giIHwgImxvdyIgfCB1bmRlZmluZWQ7CiAgICAgICAganNvbl9zY2hlbWE/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICBwbHVnaW5zPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcmV0dXJuX2Z1bGxfYm9keT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdXNlX2xpdGVsbG0/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBhcnNlSnNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5X3N1Yml0ZW1faWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhdGZvcm1fcHJvamVjdF9pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47CiAgICBsbG1NdWx0aXBsZTogKHBhcmFtczogewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICByZXF1ZXN0czogewogICAgICAgICAgICBwcm9tcHQ6IHN0cmluZyB8IHsKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICByb2xlOiBzdHJpbmc7CiAgICAgICAgICAgIH1bXSB8ICgoKSA9PiBzdHJpbmcgfCB7CiAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgcm9sZTogc3RyaW5nOwogICAgICAgICAgICB9W10pOwogICAgICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICAgICAgdGhpbmtpbmc/OiB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImVuYWJsZWQiOwogICAgICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdG9wX3A/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbWF4X3Rva2Vucz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRlbXBlcmF0dXJlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBzeXN0ZW1fcHJvbXB0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb2RlbF9pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVzcG9uc2VfZm9ybWF0X3R5cGU/OiAianNvbl9vYmplY3QiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBpbWFnZV91cmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGltYWdlX2RldGFpbD86ICJoaWdoIiB8ICJsb3ciIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqc29uX3NjaGVtYT86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwbHVnaW5zPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJldHVybl9mdWxsX2JvZHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB1c2VfbGl0ZWxsbT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhcnNlSnNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgfSkgPT4gUHJvbWlzZTwoc3RyaW5nIHwgbnVsbClbXT47CiAgICBsbG1RYTogKHBhcmFtczogewogICAgICAgIGNvbmZpZ0lkOiBudW1iZXI7CiAgICAgICAgaW5wdXRQYXRoOiBzdHJpbmc7CiAgICAgICAgb3V0cHV0UGF0aDogc3RyaW5nOwogICAgICAgIHN0YXRlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2xsSW50ZXJ2YWxNcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB0aW1lb3V0TXM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBzdGF0dXM6IHN0cmluZzsKICAgICAgICBydW5fa2V5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1ldHJpY3M/OiB1bmtub3duW10gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIG1sRW5kcG9pbnQ6IChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgZW5kcG9pbnQ6IHN0cmluZzsKICAgICAgICBkYXRhOiB7fSB8ICgoKSA9PiB7fSk7CiAgICAgICAgZnVuY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZV9jYWNoZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8YW55PjsKICAgIG1sRW5kcG9pbnRNdWx0aXBsZTogKHBhcmFtczogewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICByZXF1ZXN0czogewogICAgICAgICAgICBlbmRwb2ludDogc3RyaW5nOwogICAgICAgICAgICBkYXRhOiB7fSB8ICgoKSA9PiB7fSk7CiAgICAgICAgICAgIGZ1bmN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHVzZV9jYWNoZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBvc3RQcm9jZXNzaW5nRm4/OiAoKGVuZHBvaW50UmVzdWx0OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgfSkgPT4gUHJvbWlzZTxhbnlbXT47CiAgICBnaXRodWJXb3JrZmxvdzogKChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgcmVmOiBzdHJpbmc7CiAgICAgICAgb3duZXI6IHN0cmluZzsKICAgICAgICByZXBvOiBzdHJpbmc7CiAgICAgICAgd29ya2Zsb3c6IHN0cmluZzsKICAgICAgICBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKCkgPT4gUmVjb3JkPHN0cmluZywgYW55Pik7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8YW55PikgJiB7CiAgICAgICAgc3RhcnQ6IChwYXJhbXM6IHsKICAgICAgICAgICAgcmVmOiBzdHJpbmc7CiAgICAgICAgICAgIG93bmVyOiBzdHJpbmc7CiAgICAgICAgICAgIHJlcG86IHN0cmluZzsKICAgICAgICAgICAgd29ya2Zsb3c6IHN0cmluZzsKICAgICAgICAgICAgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGpvYlN0b3JlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KSA9PiBQcm9taXNlPEdpdEh1YldvcmtmbG93UmVzdWx0PjsKICAgICAgICBwb2xsOiAocGFyYW1zOiB7CiAgICAgICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgam9iU3RvcmVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqb2JJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KSA9PiBQcm9taXNlPEdpdEh1YldvcmtmbG93UmVzdWx0PjsKICAgICAgICBnZXRSZXN1bHRzOiAocGFyYW1zOiB7CiAgICAgICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwb3N0UHJvY2Vzc2luZ0ZuPzogKChlbmRwb2ludFJlc3VsdDogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqb2JTdG9yZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGpvYklkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pID0+IFByb21pc2U8dW5rbm93bj47CiAgICB9OwogICAgZ2V0OiAocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpID0+IGFueTsKICAgIHNldDogKHBhdGg6IHN0cmluZywgcGF5bG9hZDogYW55KSA9PiB2b2lkOwogICAgc2V0VGFiOiAocGFyYW1zOiB7CiAgICAgICAgdGFic1ZpZXdLZXk6IHN0cmluZzsKICAgICAgICB0YWJWYWx1ZTogc3RyaW5nOwogICAgICAgIHNjcm9sbFRvVGFiU3RhcnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfSkgPT4gdm9pZDsKICAgIG5leHRUYWI6IChwYXJhbXM6IHsKICAgICAgICB0YWJzVmlld0tleTogc3RyaW5nOwogICAgICAgIHNjcm9sbFRvVGFiU3RhcnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGN5Y2xlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0pID0+IHZvaWQ7CiAgICBjb252ZXJ0TWFya2Rvd25Ub0xsbVByb21wdDogKHBhcmFtczogewogICAgICAgIG1hcmtkb3duOiBzdHJpbmc7CiAgICAgICAgbW9kZWw/OiAiY2xhdWRlIiB8ICJncHQiIHwgdW5kZWZpbmVkOwogICAgfSkgPT4gewogICAgICAgIGNvbnRlbnQ6IG9iamVjdE91dHB1dFR5cGU8ewogICAgICAgICAgICB0eXBlOiBab2RTdHJpbmc7CiAgICAgICAgfSwgWm9kVW5rbm93biwgInN0cmlwIj5bXTsKICAgICAgICByb2xlOiBzdHJpbmc7CiAgICB9W107CiAgICBnZXRUZXh0RGlmZjogKHBhcmFtczogewogICAgICAgIHNvdXJjZTogc3RyaW5nOwogICAgICAgIHRhcmdldDogc3RyaW5nOwogICAgICAgIGFsZ29yaXRobT86ICJzeW1ib2xzIiB8ICJ3b3JkcyIgfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPG51bWJlcj47CiAgICBub3RpZnk6IChwYXJhbXM6IHsKICAgICAgICBtZXNzYWdlOiBzdHJpbmc7CiAgICAgICAgdmFyaWFudDogImVycm9yIiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIjsKICAgIH0pID0+IHZvaWQ7CiAgICBleGVjdXRlQ29kZTogKHBhcmFtczogewogICAgICAgIGNvZGU6IHN0cmluZzsKICAgICAgICBsYW5ndWFnZTogInB5dGhvbkAzLjEwLjAiIHwgImphdmFzY3JpcHRAMjAuMTEuMSI7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBvdXRwdXQ6IHN0cmluZzsKICAgICAgICBpc0Vycm9yOiBib29sZWFuOwogICAgfT47CiAgICBzdGFydEVkaXRpbmc6IChwYXJhbXM6IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTx7CiAgICAgICAgc3VjY2VzczogYm9vbGVhbjsKICAgIH0+OwogICAgc3VibWl0VGFzazogKHBhcmFtczogewogICAgICAgIHBhdGNoVmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDsKICAgICAgICByZXNldFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBzdWNjZXNzOiBib29sZWFuOwogICAgfT47CiAgICBpbnZhbGlkYXRlVGFzazogKHBhcmFtczogdW5kZWZpbmVkKSA9PiBQcm9taXNlPHsKICAgICAgICBzdWNjZXNzOiBib29sZWFuOwogICAgfT47CiAgICB1bmFzc2lnbkFuZEV4aXQ6IChwYXJhbXM6IHsKICAgICAgICB3aXRob3V0Q29uZmlybWF0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8ewogICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47CiAgICB9PjsKICAgIHNlbmRVc2VyTG9nOiAocGFyYW1zOiB7CiAgICAgICAgdmFsdWU6IExvZ1ZhbHVlT2JqZWN0OwogICAgICAgIHR5cGU6IHN0cmluZzsKICAgIH0pID0+IFByb21pc2U8dW5rbm93bj47CiAgICBzaWduV2l0aEdlb0lwOiAocGFyYW1zOiB7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47CiAgICB9KSA9PiBQcm9taXNlPHN0cmluZz47Cn07CgpleHBvcnQgeyBGaWVsZCwgTGF5b3V0LCBTdXNwZW5zZVBlbmRpbmdNYXJrZXIsIFZhbGlkYXRpb24sIFZpZXcsIGFjdGlvbnMgfTsK","base64").toString("utf8")}};var Zt=require("@typescript/vfs");var EH=tm.default.dirname(em.createRequire("file:///Users/gzarip/code/potato-5/packages/sdk/src/checks/task-ui-typecheck.ts").resolve("typescript-api")),it={data:"DATA_INJECTION",constants:"CONST_INJECTION",preprocess:"PREPROCESS_INJECTION",postprocess:"POSTPROCESS_INJECTION",code:"CODE_INJECTION"},Ni="index.tsx",UH=[["data",it.data],["constants",it.constants],["preprocess",it.preprocess],["postprocess",it.postprocess],["code",it.code]],OH=()=>({data:[],constants:[],preprocess:[],postprocess:[],code:[]}),Lu=(e)=>`
|
|
43
|
+
import * as React from 'react';
|
|
44
|
+
import { View, Field, Layout, SuspensePendingMarker, Validation, actions } from 'elements';
|
|
45
|
+
|
|
46
|
+
declare global {
|
|
47
|
+
const data: /* DATA_INJECTION_START */
|
|
48
|
+
(
|
|
49
|
+
${e.data}
|
|
50
|
+
)
|
|
51
|
+
/* DATA_INJECTION_END */ & { [key: string]: any };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare global {
|
|
55
|
+
const CONST: /* CONST_INJECTION_START */
|
|
56
|
+
(
|
|
57
|
+
${e.constants}
|
|
58
|
+
)
|
|
59
|
+
/* CONST_INJECTION_END */ & { [key: string]: any };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
(() => /* PREPROCESS_INJECTION_START */
|
|
63
|
+
{
|
|
64
|
+
${e.preprocess}
|
|
65
|
+
}
|
|
66
|
+
/* PREPROCESS_INJECTION_END */ )()
|
|
67
|
+
|
|
68
|
+
(() => /* POSTPROCESS_INJECTION_START */
|
|
69
|
+
{
|
|
70
|
+
${e.postprocess}
|
|
71
|
+
}
|
|
72
|
+
/* POSTPROCESS_INJECTION_END */ )()
|
|
73
|
+
|
|
74
|
+
/* CODE_INJECTION_START */
|
|
75
|
+
(
|
|
76
|
+
${e.code}
|
|
77
|
+
)
|
|
78
|
+
/* CODE_INJECTION_END */
|
|
79
|
+
|
|
80
|
+
export {}`,Mu=(e)=>`
|
|
81
|
+
const data = (
|
|
82
|
+
/* DATA_INJECTION_START */
|
|
83
|
+
${e.data}
|
|
84
|
+
/* DATA_INJECTION_END */
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const CONST = (
|
|
88
|
+
/* CONST_INJECTION_START */
|
|
89
|
+
${e.constants}
|
|
90
|
+
/* CONST_INJECTION_END */
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const preprocess = (data) => {
|
|
94
|
+
/* PREPROCESS_INJECTION_START */
|
|
95
|
+
${e.preprocess}
|
|
96
|
+
/* PREPROCESS_INJECTION_END */
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const postprocess = (data) => {
|
|
100
|
+
/* POSTPROCESS_INJECTION_START */
|
|
101
|
+
${e.postprocess}
|
|
102
|
+
/* POSTPROCESS_INJECTION_END */
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const code = (
|
|
106
|
+
/* CODE_INJECTION_START */
|
|
107
|
+
${e.code}
|
|
108
|
+
/* CODE_INJECTION_END */
|
|
109
|
+
);
|
|
110
|
+
`,TH=["preprocess","postprocess","code"],$u=(e,t,i)=>{let n={...e};for(let o of TH){let s=new Set(t[o].map((a)=>a.text)),r=e[o].filter((a)=>!s.has(a.text)&&!/TS(?:7006|7031)\b/u.test(a.text)),g=i[o].length>0?i[o]:t[o];n[o]=[...r,...g]}return n},qu=(e,t)=>{let i=(n)=>{let o=e.indexOf(`/* ${n}_START */`)+`/* ${n}_START */`.length+1,s=e.indexOf(`/* ${n}_END */`)-1;return t.filter((r)=>{if(!r.file||r.start==null)return!1;return r.start>=o&&r.start<=s}).map((r)=>{let g=De.default.flattenDiagnosticMessageText(r.messageText,`
|
|
111
|
+
`),a=r.category===De.default.DiagnosticCategory.Error?"error":"warning";b(r.file&&r.start!=null,"Diagnostic location is missing");let{line:l,character:I}=r.file.getLineAndCharacterOfPosition(o),{line:d,character:u}=r.file.getLineAndCharacterOfPosition(r.start),c=d-l,C=d===l?u-I:u,A=r.file.text.split(/\r?\n/gu)[d]??"",m=" ".repeat(u)+"^".repeat(r.length&&r.length>0?r.length:1);return{severity:a,text:[`${c}:${C+1} - [${De.default.DiagnosticCategory[r.category]}] TS${r.code}`,g,"",A,m].join(`
|
|
112
|
+
`)}})};return{data:i(it.data),constants:i(it.constants),preprocess:i(it.preprocess),postprocess:i(it.postprocess),code:i(it.code)}},Ua=(e,t)=>{let i=[0];for(let a=0;a<e.length;a+=1)if(e[a]===`
|
|
113
|
+
`)i.push(a+1);let n=(a)=>{let l=0;while(l+1<i.length&&i[l+1]<=a)l+=1;return{line:l,character:a-i[l]}},o=e.split(/\r?\n/gu),s=UH.map(([a,l])=>({key:a,start:e.indexOf(`/* ${l}_START */`)+`/* ${l}_START */`.length+1,end:e.indexOf(`/* ${l}_END */`)-1})),r=(a)=>{let l=s.find((u)=>a>=u.start&&a<=u.end);if(l)return l;let d=s.filter((u)=>u.start<=a).at(-1)??s[0];return b(d,"Task UI diagnostic block is missing"),d},g=OH();for(let a of t){let l=a.labels[0],I=l?.start??e.length,d=r(I),u=a.severity==="Error"?"error":"warning",{line:c,character:C}=n(d.start),{line:A,character:m}=n(I),p=A-c,Z=A===c?m-C:m,W=o[A]??"",h=l?l.end-l.start:0,f=" ".repeat(m)+"^".repeat(h>0?h:1);g[d.key].push({severity:u,text:[`${p}:${Z+1} - [${a.severity}]`,a.message,"",W,f].join(`
|
|
114
|
+
`)})}return g},im=({reactDeclaration:e,elementsDeclaration:t})=>({performTypeCheck:async(i)=>{let n=Lu(i),o=Zt.createDefaultMapFromNodeModules({target:De.default.ScriptTarget.Latest},De.default,EH);o.set("node_modules/@types/react/index.d.ts",e),o.set("node_modules/elements/index.d.ts",t),o.set(Ni,n);let s=Zt.createSystem(o),{languageService:r}=Zt.createVirtualTypeScriptEnvironment(s,[Ni],De.default,{target:De.default.ScriptTarget.Latest,allowNonTsExtensions:!0,ignoreDeprecations:"6.0",module:De.default.ModuleKind.CommonJS,moduleResolution:De.default.ModuleResolutionKind.Node10,noEmit:!0,typeRoots:["node_modules/@types"],jsx:De.default.JsxEmit.React,jsxFactory:"React.createElement",noErrorTruncation:!0}),g=[],a=[];try{g=r.getSyntacticDiagnostics(Ni),a=[...r.getSemanticDiagnostics(Ni),...r.getSuggestionDiagnostics(Ni),...r.getCompilerOptionsDiagnostics()]}finally{r.dispose()}let l=qu(n,g),I=qu(n,[...g,...a]),d=Mu(i),u=Ua(d,ms.parseSync("runtime.jsx",d).errors);return $u(I,l,u)},performSyntaxCheck:(i)=>{let n=Lu(i),o=Ua(n,ms.parseSync(Ni,n).errors),s=Mu(i),r=Ua(s,ms.parseSync("runtime.jsx",s).errors);return $u(o,o,r)}}),Oa=()=>im({reactDeclaration:zn.react.source,elementsDeclaration:zn.elements.source});var za=require("crypto"),Xi=require("fs/promises"),om=require("path");var sm="TOLOKA_CHECK_EVIDENCE_DIR",ja="TOLOKA_CHECK_PIPELINE_FINGERPRINT",Da="TOLOKA_CHECK_NODE_ID",Qa="TOLOKA_CHECK_TYPED_ONLY",zH=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),jH=(e)=>Array.isArray(e)&&e.every((t)=>typeof t==="string"),Ta=(e)=>{if(Array.isArray(e))return e.map(Ta);if(typeof e!=="object"||e===null)return e;return Object.fromEntries(Object.entries(e).toSorted(([t],[i])=>t.localeCompare(i)).map(([t,i])=>[t,Ta(i)]))},_a=(e)=>za.createHash("sha256").update(JSON.stringify(Ta(e))).digest("hex"),DH=(e,t)=>`[toloka:${e}:${t??"pipeline"}]`,nm=(e)=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),rm=(e,t)=>t===void 0?nm(`[toloka:${e}:`):nm(DH(e,t));var QH=(e)=>e==="code"||e==="ui"||e==="pipeline",_H=(e)=>e==="passed"||e==="failed"||e==="infrastructure_error",KH=(e,t)=>{b(zH(e),`Invalid test evidence ${t}`);let i=e;b(i.version===1,`Unsupported test evidence version in ${t}`),b(typeof i.pipelineFingerprint==="string",`Missing pipeline fingerprint in ${t}`),b(QH(i.kind),`Invalid test evidence kind in ${t}`),b(_H(i.status),`Invalid test evidence status in ${t}`),b(typeof i.testName==="string",`Missing test name in ${t}`),b(i.nodeId===void 0||typeof i.nodeId==="string",`Invalid node id in ${t}`),b(i.diagnostic===void 0||typeof i.diagnostic==="string",`Invalid diagnostic in ${t}`),b(i.partial===void 0||typeof i.partial==="boolean",`Invalid partial coverage in ${t}`),b(i.untestedHardwareFields===void 0||jH(i.untestedHardwareFields),`Invalid hardware fields in ${t}`);let n=i.untestedHardwareFields;return{version:1,pipelineFingerprint:i.pipelineFingerprint,kind:i.kind,status:i.status,testName:i.testName,...i.nodeId===void 0?{}:{nodeId:i.nodeId},...i.diagnostic===void 0?{}:{diagnostic:i.diagnostic},...i.partial===void 0?{}:{partial:i.partial},...n===void 0?{}:{untestedHardwareFields:n}}};var gm=async(e)=>{let i=(await Xi.readdir(e,{withFileTypes:!0})).filter((n)=>n.isFile()&&n.name.endsWith(".json")).map((n)=>n.name).toSorted();return Promise.all(i.map(async(n)=>{let o=om.join(e,n),s;try{s=JSON.parse(await Xi.readFile(o,"utf8"))}catch(r){throw Error(`Invalid test evidence ${o}`,{cause:r})}return KH(s,o)}))};var _n=require("fs/promises"),pe=require("path"),Xm=require("url");var wm=be(Xa(),1),Fm=be(Bm(),1);var Rm={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{version:{type:"number",const:1},fields:{maxItems:500,type:"array",items:{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},name:{type:"string"},jsonSchema:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1,ref:"JsonSchema"}},required:["id","name","jsonSchema"],additionalProperties:!1}},nodes:{maxItems:500,type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"root"},settings:{type:"object",properties:{datasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},itemFilter:{type:"object",properties:{fieldValues:{default:[],type:"array",items:{type:"object",properties:{jsonPath:{type:"string",minLength:1},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},latestOnly:{default:!0,type:"boolean"},sources:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["jsonPath","operator","value","fieldId"],additionalProperties:!1}},fieldSources:{default:[],type:"array",items:{type:"object",properties:{fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},sources:{minItems:1,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["fieldId","sources"],additionalProperties:!1}},missingRevisionFields:{default:[],type:"array",items:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},createdBefore:{type:"string",format:"date-time",pattern:"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},additionalProperties:!1},itemLimit:{type:"integer",exclusiveMinimum:0,maximum:9007199254740991},startedFieldProxies:{type:"object",properties:{output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["output"]},completedFieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["startedFieldProxies","completedFieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"code"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}},output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input","output"]},code:{type:"object",properties:{code:{type:"string"}},required:["code"],additionalProperties:!1},envVars:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"static"},name:{type:"string"},value:{type:"string"}},required:["type","name","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"secret"},name:{type:"string"},secretName:{type:"string"}},required:["type","name","secretName"],additionalProperties:!1}]}},checks:{type:"object",propertyNames:{type:"string",enum:["code"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["code"]}},required:["about","fieldProxies","code"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"generation"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"human_only"},smartSamplingPercent:{default:100,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"hybrid"},smartSamplingPercent:{default:30,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]}]},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},oneOf:[{type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},{type:"object",properties:{audienceType:{type:"string",const:"synthetic"},generationModelId:{default:"gpt-5.6-terra",type:"string",enum:["gpt-5.4","gpt-5.4-mini","claude-sonnet-4-6","gemini-3.1-pro-preview","gemini-3.5-flash","claude-sonnet-5","gpt-5.6-terra","gpt-5.6-luna"]},reasoningEffort:{type:"string",enum:["low","medium","high"]},llmInstruction:{default:"",type:"string"},maxCostPerAttempt:{type:"number"}},required:["audienceType","maxCostPerAttempt"],additionalProperties:!1}]},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"match"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},conditions:{type:"array",items:{type:"object",properties:{name:{type:"string"},logic:{default:"and",type:"string",enum:["and","or"]},predicates:{type:"array",items:{type:"object",properties:{fieldProxyId:{type:"string"},jsonPath:{type:"string"},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]}},required:["fieldProxyId","jsonPath","operator","value"],additionalProperties:!1}}},required:["name","predicates"],additionalProperties:!1}},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["about","conditions","fieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"quorum"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},offboardingRules:{default:[],type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},type:{type:"string",enum:["mv_agreement"]},agreementScale:{type:"string"}},required:["id"],additionalProperties:!1}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"none"}},required:["qaMode"]}]},overlap:{type:"integer",minimum:1,maximum:100},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","overlap","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1}]}},connections:{maxItems:2000,type:"array",items:{type:"object",properties:{from:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},to:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},settings:{type:"object",properties:{},additionalProperties:{}}},required:["from","to","settings"],additionalProperties:!1}},layout:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"array",prefixItems:[{type:"number",description:"X"},{type:"number",description:"Y"}]},maxProperties:2},maxProperties:500}},required:["version","fields","nodes","connections"],additionalProperties:!1,$defs:{__schema0:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema1"}},__schema1:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1},__schema2:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema2"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema2"}}]},__schema3:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema3"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}}]},__schema4:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema4"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema4"}}]}}};var Hm=new wm.default({strict:!1});Fm.default(Hm);var Gm=Hm.compile(Rm),wv=(e)=>{let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return{path:typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/",reason:e.message??`failed ${e.keyword} validation`}};function ol(e){if(Gm(e))return;let t=Gm.errors;b(t,"Pipeline graph validation failed without errors");let i=new Set,n=[];for(let o of t){let s=wv(o),r=`${s.path}
|
|
115
|
+
${s.reason}`;if(i.has(r))continue;i.add(r),n.push(s)}throw Zi.fromIssues(n)}var Fv=Symbol("fieldDefinition"),Hv=Symbol.for("@toloka-platform/sdk/pipeline-definition"),km=Symbol("portDefinition"),vv=Symbol("nodeFieldReferences");function Pm(e,t){return{node:e,handle:t,direction:"input",[km]:"input"}}function Ym(e,t){return{node:e,handle:t,direction:"output",[km]:"output"}}function Nm(e){return typeof e==="object"&&e!==null&&Fv in e}function sl(e,t){if(Nm(e)){t.push(e);return}if(Array.isArray(e)){for(let i of e)sl(i,t);return}if(typeof e==="object"&&e!==null)for(let i of Object.values(e))sl(i,t)}function kv(e){let t=[];return sl(e,t),t}function vm(e){return Nm(e)?{id:e.id,optional:!1}:{id:e.field.id,optional:e.optional??!1}}function Pv(e,t={}){let i=t.id??"root",{started:n,completed:o,...s}=e;return{id:i,type:"root",settings:{...s,startedFieldProxies:{output:n.map(vm)},completedFieldProxies:{input:o.map(vm)}},started:Ym(i,"started"),completed:Pm(i,"completed"),[vv]:kv(e)}}var B2=Object.assign(Pv,{started:Ym("root","started"),completed:Pm("root","completed")});function Yv(e){return typeof e==="object"&&e!==null&&Hv in e}function Zs(e){b(Yv(e),"Invalid pipeline definition: expected a value returned by definePipeline"),b(e.dataset.length>0,"Dataset name must not be empty");for(let t of e.graph.nodes){if(t.type!=="root")continue;b(!("datasetId"in t.settings),"An unresolved pipeline definition cannot contain a dataset id"),b(!("itemFilter"in t.settings),"An unresolved pipeline definition cannot contain a dataset item filter")}ol(e.graph)}function Qn(e,t){let i={version:e.graph.version,fields:e.graph.fields.map((n)=>({...n})),nodes:e.graph.nodes.map((n)=>n.type==="root"?{...n,settings:{...n.settings,datasetId:t.datasetId}}:n),connections:e.graph.connections.map((n)=>({from:{...n.from},to:{...n.to},settings:{...n.settings}}))};return ol(i),i}var Sm=async(e)=>{let t;try{t=await _n.readdir(e,{withFileTypes:!0})}catch(n){if(n instanceof Error&&Reflect.get(n,"code")==="ENOENT")return[];throw n}let i=[];for(let n of t.toSorted((o,s)=>o.name.localeCompare(s.name))){let o=pe.join(e,n.name);if(n.isDirectory())i.push(...await Sm(o));else if(n.isFile()&&n.name==="pipeline.ts")i.push(o)}return i},Nv="toloka.json",Xv=async(e)=>{try{return(await _n.stat(pe.join(e,Nv))).isFile()}catch{return!1}};async function xm(e){let t=pe.resolve(e);for(;;){if(await Xv(t))return t;let i=pe.dirname(t);if(i===t)return;t=i}}async function Ei(e){let t=await Sm(pe.join(e,"pipelines"));return{pipelines:(await Promise.all(t.map(async(n)=>{let o=await _n.stat(n),s=Xm.pathToFileURL(n);s.searchParams.set("version",`${o.mtimeMs}-${o.size}`);let r=await import(s.href);b(typeof r==="object"&&r!==null,`Invalid ${n}: expected a module`);let g=Reflect.get(r,"default");Zs(g);let a=pe.relative(e,pe.dirname(n)).split(pe.sep).join("/");return{sourceDirectory:a,name:pe.basename(a),definition:g}}))).toSorted((n,o)=>n.sourceDirectory.localeCompare(o.sourceDirectory))}}var Jm=5000,Sv=65536,$t="TOLOKA_INTERNAL_CHECK_RESULT_FILE",xv=(e)=>e.message.length<=Jm?e:{...e,message:`${e.message.slice(0,Jm)}
|
|
116
|
+
\u2026output truncated`},rl=20,Em=async(e)=>{let t=[],i=0,n=!1;for await(let s of e){let r=Buffer.isBuffer(s)?s:Buffer.from(s),g=Sv-i;if(g>0){let a=r.subarray(0,g);t.push(a),i+=a.length}if(r.length>g)n=!0}let o=Buffer.concat(t).toString("utf8");return n?`${o}
|
|
117
|
+
\u2026output truncated`:o},Il=async(e,t,i,n=process.env,o,s=process.execPath)=>{o?.throwIfAborted();let r=jm.spawn(s,[t,...i],{cwd:e,env:n,stdio:["ignore","pipe","pipe"]}),g=()=>r.kill("SIGTERM");if(o?.addEventListener("abort",g,{once:!0}),o?.aborted===!0)g();try{let[a,l,I]=await Promise.all([Qm.once(r,"close"),Em(r.stdout),Em(r.stderr)]),d=a[0];return typeof d==="number"?{exitCode:d,stdout:l,stderr:I}:{exitCode:2,stdout:l,stderr:[I,`Process terminated by ${String(a[1])}`].filter(Boolean).join(`
|
|
118
|
+
`),infrastructureError:!0}}finally{o?.removeEventListener("abort",g)}},_m=(e,t,i)=>{let n=Dm.createRequire(Xt.join(e,"package.json"));return Xt.join(Xt.dirname(n.resolve(`${t}/package.json`)),i)},Jv=async(e,t,i)=>{try{return await Il(e,_m(e,"typescript","bin/tsc"),["--noEmit"],t,i)}catch(n){return{exitCode:2,stdout:"",stderr:`Unable to run project TypeScript: ${n instanceof Error?n.message:String(n)}. Install it with \`bun add --dev typescript\`.`,infrastructureError:!0}}},Ev=(e)=>{if(e.exitCode===0)return e;let t=`${e.stderr}
|
|
119
|
+
${e.stdout}`;return/Local Task UI testing requires Playwright and Chromium|Unable to load the Task UI launcher|Cannot find (?:package|module).*playwright/iu.test(t)?{...e,infrastructureError:!0}:e},Uv=async({sourceRoot:e,environment:t,signal:i})=>{try{let n=t[ja],o=t[Qa]==="1"&&n!==void 0?rm(n,t[Da]):void 0;return Ev(await Il(e,_m(e,"vitest","vitest.mjs"),["run",...o===void 0?[]:["--testNamePattern",o]],t,i))}catch(n){return{exitCode:2,stdout:"",stderr:`Unable to run project Vitest: ${n instanceof Error?n.message:String(n)}. Install it with \`bun add --dev vitest playwright\`.`,infrastructureError:!0}}},Ov=Oa(),Tv=async(e,t)=>{let i=new Map([[process.env,process.env.POTATO_API_KEY],[t,t.POTATO_API_KEY]]);for(let n of i.keys())delete n.POTATO_API_KEY;try{return await Ei(e)}finally{for(let[n,o]of i)if(o===void 0)delete n.POTATO_API_KEY;else n.POTATO_API_KEY=o}},al={loadSource:Tv,runTypeScript:Jv,runVitest:Uv,typecheckUi:(e)=>Ov.performTypeCheck(e)},zv=(e)=>{if(typeof e!=="object"||e===null)return;let t=Reflect.get(e,"code"),i=Reflect.get(e,"data"),n=Reflect.get(e,"constants"),o=Reflect.get(e,"preprocess"),s=Reflect.get(e,"postprocess");if(typeof t!=="string"||typeof i!=="string"||typeof n!=="string"||typeof o!=="string"||s!==void 0&&typeof s!=="string")return;return{code:t,data:i,constants:n,preprocess:o,postprocess:s??"return {};"}},jv=(e)=>{let t=Reflect.get(e.settings,"about"),i=typeof t==="object"&&t!==null?Reflect.get(t,"name"):void 0;return typeof i==="string"&&i.length>0?i:e.id},Dv=(e)=>e.pipelines.map((t)=>({sourceDirectory:t.sourceDirectory,name:t.name,pipelineFingerprint:_a(t.definition),nodes:t.definition.graph.nodes.filter((i)=>i.type==="code"||i.type==="generation"||i.type==="quorum").map((i)=>({id:i.id,name:jv(i),kind:i.type==="code"?"code":"ui"})).toSorted((i,n)=>i.id.localeCompare(n.id))})),Qv=(e,t,i)=>{let n=t===void 0?[...e]:e.filter((s)=>s.sourceDirectory===t||s.name===t||s.sourceDirectory.split("/").at(-1)===t);if(t!==void 0)b(n.length>0,`Unknown pipeline ${JSON.stringify(t)}. Available: ${e.map((s)=>s.sourceDirectory).join(", ")}`),b(n.length===1,`Pipeline selector ${JSON.stringify(t)} is ambiguous: ${n.map((s)=>s.sourceDirectory).join(", ")}`);if(i===void 0)return{pipelines:n};let o=n.flatMap((s)=>s.nodes.filter((r)=>r.id===i||r.name===i).map((r)=>({pipeline:s,node:r})));return b(o.length===1,o.length===0?`Unknown checkable node ${JSON.stringify(i)}.`:`Node selector ${JSON.stringify(i)} is ambiguous across pipelines.`),{pipelines:[o[0].pipeline],nodeId:o[0].node.id}},Um=(e,t={})=>{let i=/^(\d+):(\d+) - \[[^\]]+\](?: (TS\d+))?/u.exec(e);return{message:e,...t,...i===null?{}:{line:Number(i[1]),column:Number(i[2]),...i[3]===void 0?{}:{code:i[3]}}}},bs=(e)=>({diagnostics:e.slice(0,rl).map(xv),...e.length<=rl?{}:{truncatedDiagnosticCount:e.length-rl}}),Om=(e,t)=>{let i=t.infrastructureError===!0?"infrastructure_error":t.exitCode===0?"passed":"failed",n=[t.stderr.trim(),t.stdout.trim()].filter(Boolean).join(`
|
|
120
|
+
`);return{scope:"project",kind:e,status:i,...bs(i==="passed"||n.length===0?[]:[{message:n}])}},_v=async(e,t,i,n)=>{let o=new Set(t.map((r)=>r.sourceDirectory)),s=[];for(let r of e.pipelines){let g=_a(r.definition);if(!o.has(r.sourceDirectory))continue;for(let a of r.definition.graph.nodes){if(a.type!=="generation"&&a.type!=="quorum")continue;if(i!==void 0&&a.id!==i)continue;let l=zv(Reflect.get(a.settings,"ui"));if(l===void 0){s.push({scope:"node",kind:"ui-types",status:"failed",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,diagnostics:[{message:"No labeling interface is configured on this node"}]});continue}let I;try{I=await n(l)}catch(u){s.push({scope:"node",kind:"ui-types",status:"infrastructure_error",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,diagnostics:[{message:u instanceof Error?u.message:String(u)}]});continue}let d=Object.entries(I).flatMap(([u,c])=>c.map((C)=>Um(C.text,{severity:C.severity,setting:u})));d.push(...Ea(l).map((u)=>Um(u.text,{severity:u.severity,setting:"postprocess"}))),s.push({scope:"node",kind:"ui-types",status:d.some((u)=>u.severity==="error")?"failed":"passed",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,...bs(d)})}}return s},Tm=(e)=>{if(e.some((i)=>i.status==="infrastructure_error"))return{status:"infrastructure_error",...bs(e.filter((i)=>i.status==="infrastructure_error").map((i)=>({message:i.diagnostic??`Infrastructure error in ${i.testName}`})))};if(e.some((i)=>i.status==="failed"))return{status:"failed",...bs(e.filter((i)=>i.status==="failed").map((i)=>({message:i.diagnostic??`Failed test ${i.testName}`})))};let t=e.filter((i)=>i.status==="passed");if(t.length===0)return{status:"missing",diagnostics:[]};if(t.every((i)=>i.partial===!0))return{status:"partial",diagnostics:[{message:`Hardware-backed fields not fully covered: ${[...new Set(t.flatMap((i)=>i.untestedHardwareFields??[]))].join(", ")}`}]};return{status:"passed",diagnostics:[]}},zm=(e,t,i,n)=>e.filter((o)=>o.pipelineFingerprint===t.pipelineFingerprint&&o.kind===i&&(n===void 0||o.nodeId===n)),Kv=(e,t,i)=>e.flatMap((n)=>{let o=[];for(let s of n.nodes){if(i!==void 0&&s.id!==i)continue;let r=s.kind==="code"?"code-test":"ui-test",g=s.kind==="code"?"code":"ui";o.push({scope:"node",kind:r,sourceDirectory:n.sourceDirectory,pipelineFingerprint:n.pipelineFingerprint,nodeId:s.id,...Tm(zm(t,n,g,s.id))})}if(i===void 0)o.push({scope:"pipeline",kind:"pipeline-flow",sourceDirectory:n.sourceDirectory,pipelineFingerprint:n.pipelineFingerprint,...Tm(zm(t,n,"pipeline"))});return o}),Lv={passed:"PASS",failed:"FAIL",missing:"MISSING",partial:"PARTIAL",infrastructure_error:"ERROR"},Mv=(e)=>[e.sourceDirectory,e.nodeId,e.kind].filter(Boolean).join("/"),$v=(e)=>{let t={project:0,pipeline:1,node:2};return[...e].toSorted((i,n)=>t[i.scope]-t[n.scope]||(i.sourceDirectory??"").localeCompare(n.sourceDirectory??"")||(i.nodeId??"").localeCompare(n.nodeId??"")||i.kind.localeCompare(n.kind))},qv=(e)=>e.message.split(`
|
|
121
|
+
`).map((t)=>` ${t}`),Kn=(e)=>e.flatMap((t)=>[`${Lv[t.status]} ${Mv(t)}`,...t.diagnostics.flatMap(qv),...t.truncatedDiagnosticCount===void 0?[]:[` ${t.truncatedDiagnosticCount} more diagnostics not shown`]]).join(`
|
|
122
|
+
`),e5=(e)=>{if(e.some((t)=>t.status==="infrastructure_error"))return 2;if(e.some((t)=>t.status==="failed"||t.status==="missing"||t.status==="partial"))return 1;return 0};async function dl(e,t=al){let i;try{e.signal?.throwIfAborted(),i=await t.loadSource(e.sourceRoot,e.environment??process.env),e.signal?.throwIfAborted()}catch(s){let r=[{scope:"project",kind:"source",status:"failed",diagnostics:[{message:s instanceof Error?s.message:String(s)}]}];return{exitCode:1,results:r,output:e.json===!0?JSON.stringify({exitCode:1,results:r}):Kn(r)}}if(i.pipelines.length===0){let s=[{scope:"project",kind:"source",status:"failed",diagnostics:[{message:`No pipeline source found under ${e.sourceRoot}/pipelines`}]}];return{exitCode:1,results:s,output:e.json===!0?JSON.stringify({exitCode:1,results:s}):Kn(s)}}let n=Qv(Dv(i),e.pipeline,e.node),o=await St.mkdtemp(Xt.join(ll.tmpdir(),"toloka-check-"));try{let s=n.pipelines.length===1?n.pipelines[0]:void 0,r={...e.environment??process.env};delete r.POTATO_API_KEY;let g={...r,[sm]:o,...s===void 0?{}:{[ja]:s.pipelineFingerprint},...n.nodeId===void 0?{}:{[Da]:n.nodeId},...e.pipeline===void 0&&e.node===void 0?{}:{[Qa]:"1"}},[a,l,I]=await Promise.all([t.runTypeScript(e.sourceRoot,r,e.signal),_v(i,n.pipelines,n.nodeId,t.typecheckUi),t.runVitest({sourceRoot:e.sourceRoot,evidenceDirectory:o,environment:g,inventory:n.pipelines,signal:e.signal})]),d=await gm(o),u=$v([{scope:"project",kind:"source",status:"passed",diagnostics:[]},Om("project-types",a),...l,Om("test-runner",I),...Kv(n.pipelines,d,n.nodeId)]),c=e5(u);return{exitCode:c,results:u,source:i,output:e.json===!0?JSON.stringify({exitCode:c,results:u}):Kn(u)}}catch(s){let r=[{scope:"project",kind:"test-runner",status:"infrastructure_error",diagnostics:[{message:s instanceof Error?s.message:String(s)}]}];return{exitCode:2,results:r,source:i,output:e.json===!0?JSON.stringify({exitCode:2,results:r}):Kn(r)}}finally{await St.rm(o,{recursive:!0,force:!0})}}var t5=(e)=>{if(e===null)return!0;let t=e.toString();if(t.includes("node_modules/")||t.includes(".git/")||t.includes("test-results/")||t.includes("coverage/")||t.includes("dist/")||t.includes(".cache/")||t.includes(".toloka-check-project-")||t.includes(".toloka-project-")||t.includes(".pipeline-source-"))return!1;return/(?:^|\/)(?:package\.json|tsconfig[^/]*\.json)$/u.test(t)||/\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs|json|jsonl|csv)$/u.test(t)},i5=(e)=>e==="project"||e==="pipeline"||e==="node",n5=(e)=>e==="source"||e==="project-types"||e==="ui-types"||e==="code-test"||e==="ui-test"||e==="pipeline-flow"||e==="test-runner",o5=(e)=>e==="passed"||e==="failed"||e==="missing"||e==="partial"||e==="infrastructure_error",s5=(e)=>{b(typeof e==="object"&&e!==null,"Fresh check returned invalid diagnostics");let t=Reflect.get(e,"message"),i=Reflect.get(e,"severity"),n=Reflect.get(e,"setting"),o=Reflect.get(e,"line"),s=Reflect.get(e,"column"),r=Reflect.get(e,"code");return b(typeof t==="string","Fresh check diagnostic has no message"),b(i===void 0||i==="error"||i==="warning","Fresh check diagnostic has invalid severity"),b(n===void 0||typeof n==="string","Fresh check diagnostic has invalid setting"),b(o===void 0||Number.isInteger(o),"Fresh check diagnostic has invalid line"),b(s===void 0||Number.isInteger(s),"Fresh check diagnostic has invalid column"),b(r===void 0||typeof r==="string","Fresh check diagnostic has invalid code"),{message:t,...i===void 0?{}:{severity:i},...n===void 0?{}:{setting:n},...o===void 0?{}:{line:Number(o)},...s===void 0?{}:{column:Number(s)},...r===void 0?{}:{code:r}}},r5=(e)=>{b(typeof e==="object"&&e!==null,"Fresh check returned an invalid result");let t=Reflect.get(e,"scope"),i=Reflect.get(e,"kind"),n=Reflect.get(e,"status"),o=Reflect.get(e,"diagnostics"),s=Reflect.get(e,"sourceDirectory"),r=Reflect.get(e,"pipelineFingerprint"),g=Reflect.get(e,"nodeId"),a=Reflect.get(e,"truncatedDiagnosticCount");return b(i5(t),"Fresh check returned an invalid scope"),b(n5(i),"Fresh check returned an invalid kind"),b(o5(n),"Fresh check returned an invalid status"),b(Array.isArray(o),"Fresh check returned invalid diagnostics"),b(s===void 0||typeof s==="string","Fresh check returned an invalid source directory"),b(r===void 0||typeof r==="string","Fresh check returned an invalid pipeline fingerprint"),b(g===void 0||typeof g==="string","Fresh check returned an invalid node id"),b(a===void 0||Number.isInteger(a)&&Number(a)>=0,"Fresh check returned an invalid truncated count"),{scope:t,kind:i,status:n,diagnostics:o.map(s5),...s===void 0?{}:{sourceDirectory:s},...r===void 0?{}:{pipelineFingerprint:r},...g===void 0?{}:{nodeId:g},...a===void 0?{}:{truncatedDiagnosticCount:Number(a)}}},g5=(e,t)=>{b(typeof e==="object"&&e!==null,"Fresh check returned invalid JSON");let i=Reflect.get(e,"exitCode"),n=Reflect.get(e,"results");b(i===0||i===1||i===2,"Fresh check returned an invalid exit code"),b(Array.isArray(n),"Fresh check returned no results");let o=n.map(r5);return{exitCode:i,results:o,output:t?JSON.stringify({exitCode:i,results:o}):Kn(o)}},cl=async(e)=>{let t=gl.fileURLToPath(new URL("./bin.ts","file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/check.ts")),i=Ws.existsSync(t)?t:gl.fileURLToPath("file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/check.ts"),n=await St.mkdtemp(Xt.join(ll.tmpdir(),"toloka-check-watch-result-")),o=Xt.join(n,"result.json"),s;try{return s=await Il(e.sourceRoot,i,["--source-root",e.sourceRoot,"check",...e.pipeline===void 0?[]:[e.pipeline],...e.node===void 0?[]:["--node",e.node],"--json"],{...process.env.PATH===void 0?{}:{PATH:process.env.PATH},...e.environment??process.env,[$t]:o},e.signal,"bun"),g5(JSON.parse(await St.readFile(o,"utf8")),e.json===!0)}catch(r){let g=[s?.stderr,s?.stdout,r instanceof Error?r.message:String(r)].filter(Boolean).join(`
|
|
123
|
+
`);throw Error(`Fresh check process returned unreadable output: ${g}`,{cause:r})}finally{await St.rm(n,{recursive:!0,force:!0})}};async function Km(e,t,i=al,n){let{promise:o,resolve:s,reject:r}=Promise.withResolvers(),g=!1,a=!1,l=!1,I,d=()=>{if(l=!0,a=!1,clearTimeout(I),C.close(),!g)s()},u=(A)=>{clearTimeout(I),C.close(),r(A)},c=async()=>{if(g){a=!0;return}g=!0;try{do{a=!1;let A=i===al?await cl({...e,signal:n}):await dl({...e,signal:n},i);if(!l)await t(A)}while(a&&n?.aborted!==!0)}catch(A){if(!l)u(A)}finally{if(g=!1,l)s()}},C=Ws.watch(e.sourceRoot,{recursive:!0},(A,m)=>{if(!t5(m))return;if(a=!0,g)return;clearTimeout(I),I=setTimeout(()=>void c(),100)});if(C.once("error",u),n?.aborted===!0)d();else n?.addEventListener("abort",d,{once:!0}),c();try{await o}finally{n?.removeEventListener("abort",d)}}var Ae=require("fs/promises"),$m=require("os"),qt=require("path");class Ln extends Error{constructor(e,t){super(e,t);this.name="CredentialsError"}}var qm=(e)=>e.HOME??$m.homedir(),a5=(e)=>e.XDG_CONFIG_HOME??qt.join(qm(e),".config"),Ne=(e=process.env)=>e.TOLOKA_CREDENTIALS_FILE??qt.join(a5(e),"toloka","credentials.json"),ep=(e=process.env)=>qt.join(qm(e),".toloka","credentials.json"),ys=(e=process.env)=>qt.dirname(Ne(e)),Lm=(e)=>{let t=e.length;while(t>0&&e.charCodeAt(t-1)===47)t-=1;return t===e.length?e:e.slice(0,t)},bt=(e)=>{let t=Lm(e.trim());try{let i=new URL(t);return i.hash="",i.search="",Lm(i.toString())}catch{return t}},hs=(e,t)=>typeof e==="object"&&e!==null?Reflect.get(e,t):void 0,l5=(e)=>{if(typeof e!=="object"||e===null)return;let t=Reflect.get(e,"id");if(typeof t!=="string"||t.length===0)return;let i=Reflect.get(e,"name");if(i!==void 0&&typeof i!=="string")return;return i===void 0?{id:t}:{id:t,name:i}},I5=(e)=>{if(e===void 0||typeof e!=="object"||e===null||Array.isArray(e))return;let t=Object.create(null);for(let[i,n]of Object.entries(e)){if(i.length===0)return;let o=l5(n);if(o===void 0)return;Object.defineProperty(t,i,{value:o,writable:!0,enumerable:!0,configurable:!0})}return t},d5=(e,t)=>{let i=I5(e);if(i===void 0)return;if(typeof t==="string"){if(t.length===0||!Object.hasOwn(i,t))return;return{current:t,projects:i}}if(t!==void 0)return;return Object.keys(i).length===0?{}:{projects:i}},c5=(e)=>{let t=hs(e,"baseUrl"),i=hs(e,"apiKey");if(typeof t!=="string"||t.length===0)return;if(typeof i!=="string"||i.length===0)return;let n=hs(e,"current"),o=hs(e,"projects");if(n===void 0&&o===void 0)return{baseUrl:t,apiKey:i};let s=d5(o,n);if(s===void 0)return;return{baseUrl:t,apiKey:i,...s}};async function fs(e){let t;try{t=await Ae.readFile(e,"utf8")}catch(i){if(i instanceof Error&&"code"in i&&i.code==="ENOENT")return"missing";return"invalid"}try{let i=c5(JSON.parse(t));return i===void 0?"invalid":{credentials:i}}catch{return"invalid"}}async function Cl(e=process.env){let t=Ne(e),i=await fs(t);if(i!=="missing"){if(i==="invalid")throw new Ln(`Invalid credentials file at ${t}. Run toloka logout, then toloka login.`);return{credentials:i.credentials,path:t,legacy:!1}}if(e.TOLOKA_CREDENTIALS_FILE!==void 0)return;let n=ep(e),o=await fs(n);if(o==="missing")return;if(o==="invalid")throw new Ln(`Invalid credentials file at ${n}. Run toloka logout, then toloka login.`);return{credentials:o.credentials,path:n,legacy:!0}}async function Mn(e,t){try{return{found:await Cl(e)}}catch(i){if(!(i instanceof Ln)||t===void 0)throw i;return{found:void 0,warning:i.message}}}async function tp(e=process.env){return(await Cl(e))?.credentials}async function xt(e=process.env){let t=await Cl(e);if(t!==void 0)return t;throw new Ln(`No stored credentials found at ${Ne(e)}. Run toloka login.`)}var C5=(e)=>{let t=e.projects,i=t!==void 0&&Object.keys(t).length>0;return{baseUrl:e.baseUrl,apiKey:e.apiKey,...e.current===void 0?{}:{current:e.current},...i?{projects:t}:{}}},Mm=async(e)=>{try{let t=await Ae.lstat(e);b(!t.isSymbolicLink(),`Refusing to write through symbolic link ${e}.`)}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return;throw t}};async function ei(e){let t=qt.dirname(e);await Mm(t),await Mm(e),await Ae.mkdir(t,{recursive:!0,mode:448}),await Ae.chmod(t,448)}async function Vs(e,t=process.env){let i=Ne(t);return await ei(i),await Ae.writeFile(i,`${JSON.stringify(C5(e),null,2)}
|
|
124
|
+
`,{mode:384}),await Ae.chmod(i,384),i}var u5=async(e)=>{try{return await Ae.stat(e),!0}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return!1;throw t}};async function ip(e=process.env){let t=[],i=[Ne(e),...e.TOLOKA_CREDENTIALS_FILE===void 0?[ep(e)]:[]];for(let n of i){if(!await u5(n))continue;await Ae.rm(n,{force:!0}),t.push(n)}return t}var m5=16,np=(e)=>e.length>m5?`${e.slice(0,4)}${"*".repeat(e.length-8)}${e.slice(-4)}`:"*".repeat(e.length);var M="Missing project ID. Pass --project-id, set TOLOKA_PROJECT_ID, set projectId in toloka.json, or run toloka project add.",p5="No project selected. Run toloka project add, or cd into a checkout.",op="project add writes the machine registry; unset --api-key / --base-url / POTATO_API_KEY / POTATO_BASE_URL, or run login against that platform first.",A5=/^[^/\s]+$/u,Bs=(e)=>{let t=e.trim();return b(t.length>0&&A5.test(t),"Project alias must be non-empty and contain no / or whitespace."),t},Ze=(e)=>{if(e===void 0)return;let t=e.trim();return t.length===0?void 0:t},Z5=(e,t,i)=>Ze(e?.baseUrl)??Ze(t?.POTATO_BASE_URL)??Wt(t??{})??Ze(i?.baseUrl),$n=(e,t)=>e!==void 0&&Object.hasOwn(e,t)?e[t]:void 0,b5=(e,t,i)=>{if(!i||t?.projects===void 0)return{};if(t.current!==void 0){let n=$n(t.projects,t.current);if(n?.id===e)return n.name===void 0?{alias:t.current}:{alias:t.current,name:n.name}}for(let n of Object.keys(t.projects).toSorted()){let o=$n(t.projects,n);if(o?.id!==e)continue;return o.name===void 0?{alias:n}:{alias:n,name:o.name}}return{}};function Ui(e={}){let t=e.flags??{},i=e.environment??{},n=e.stored,o=e.effectiveBaseUrl??Z5(t,i,n),s=n!==void 0&&o!==void 0&&bt(o)===bt(n.baseUrl),g=[{id:Ze(t.projectId),source:"flag"},{id:Ze(i.TOLOKA_PROJECT_ID),source:"toloka-project-id"},{id:Ze(i.POTATO_PROJECT_ID),source:"potato-project-id"},{id:Ze(e.state?.projectId),source:"toloka.json"},{id:s&&n.current!==void 0?Ze(n.projects?.[n.current]?.id):void 0,source:"registry"}].find((a)=>a.id!==void 0);if(g?.id===void 0)return;return{id:g.id,source:g.source,...b5(g.id,n,s)}}var ml=(e,t)=>{if(e===void 0)return"Project: (none). Run toloka project add.";let i=e.alias===void 0?"":`alias ${e.alias}, `,n=e.source!=="registry"&&t?.current!==void 0?`; registry current is ${t.current}`:"";return`Project: ${e.id} (${i}from ${e.source}${n})`},Rs=(e,t,i)=>{let n=Ze(e.apiKey)??Ze(t.POTATO_API_KEY),o=Ze(e.baseUrl)??Ze(t.POTATO_BASE_URL)??Wt(t);b(n===void 0||n===i.apiKey,op),b(o===void 0||bt(o)===bt(i.baseUrl),op)},Gs=async(e,t)=>{await Vs(e,t)},sp=(e,t,i)=>{let n=Object.assign(Object.create(null),e.projects??{},{[t]:i.name===void 0?{id:i.id}:i});return{...e,current:t,projects:n}},ul=async(e,t,i)=>{b(e?.prompt,i);let n=(await e.prompt(t)).trim();return b(n.length>0,i),n};async function rp(e){let t=e.limit??20,i=await e.client.projects.listPage({limit:t}),n=i.projects.map((s)=>{let r=e.context?.id===s.id?"*":" ",g=e.context?.id===s.id&&e.context.alias!==void 0?` ${e.context.alias}`:"";return`${r} ${s.id} ${s.name}${g}`});if(i.pagination.hasMore)n.push(`Showing ${i.projects.length} of ${i.pagination.total} projects. Raise --limit to see more.`);let o=n.length===0?"No projects visible.":n.join(`
|
|
125
|
+
`);return e.io.stdout(o),{output:o}}async function gp(e){let t=await xt(e.environment);Rs(e.flags??{},e.environment,t.credentials);let i=Bs(e.alias??await ul(e.io,"Alias: ","Missing project alias. Pass an alias or run this in a terminal.")),n=Ze(e.projectId)??await ul(e.io,"Project id: ","Missing project ID. Pass a project id or run this in a terminal."),o=$n(t.credentials.projects,i);b(o===void 0||o.id===n,`Alias ${i} already points at ${o?.id}. Run toloka project remove ${i} first.`),await e.afterPreflight?.();let s=await e.client.projects.get({projectId:n});await Gs(sp(t.credentials,i,{id:s.id,name:s.name}),e.environment);let r=`Using project ${s.id} as ${i}.`;return e.io?.stdout(r),{output:r,alias:i,projectId:s.id}}async function ap(e){let t=await xt(e.environment);Rs(e.flags??{},e.environment,t.credentials);let i=Bs(e.alias),n=$n(t.credentials.projects,i);b(n,`Unknown project alias ${i}.`),await Gs({...t.credentials,current:i},e.environment);let o=`Using project ${n.id} as ${i}.`;return e.io?.stdout(o),{output:o}}async function lp(e){let t=await xt(e.environment);Rs(e.flags??{},e.environment,t.credentials);let i=Bs(e.alias),n=Object.assign(Object.create(null),t.credentials.projects??{});b($n(n,i),`Unknown project alias ${i}.`),delete n[i];let o=t.credentials.current===i?void 0:t.credentials.current;await Gs({baseUrl:t.credentials.baseUrl,apiKey:t.credentials.apiKey,...o===void 0?{}:{current:o},...Object.keys(n).length===0?{}:{projects:n}},e.environment);let s=`Removed local alias ${i}.`;return e.io?.stdout(s),{output:s}}function Ip(e){let t=Ui(e),i=t===void 0?p5:ml(t,e.stored);return e.io?.stdout(i),t===void 0?{output:i}:{output:i,project:t}}var W5=(e)=>{let t=[...new Set(e.map((i)=>i.teamId))];return t.length===1?t[0]:void 0},h5=async(e,t)=>{let i=Ze(t);if(i!==void 0)return i;let n=[];for await(let s of e.projects.listAll())n.push(s);let o=W5(n);return b(o,"Missing team id. Pass --team-id. Visible projects do not share a single team, or none are visible."),o},f5=async(e,t,i,n)=>{if(t===void 0){try{await Lt(e,{projectId:i.id,pipelines:{},datasets:{}})}catch(o){let s=o instanceof Error?o.message:String(o);throw Error([`Created project ${i.id} as ${n}.`,`Failed to write toloka.json: ${s}`].join(`
|
|
126
|
+
`),{cause:o})}return}if(t.projectId===i.id)return;return`Checkout still uses ${t.projectId}; it overrides the new registry current.`};async function dp(e){let t=await xt(e.environment);Rs(e.flags??{},e.environment,t.credentials);let i=Bs(e.alias??await ul(e.io,"Alias: ","Missing project alias. Pass an alias or run this in a terminal."));b(t.credentials.projects?.[i]===void 0,`Alias ${i} already exists. Run toloka project remove ${i} first.`);let n=e.sourceRoot===void 0?void 0:await Re(e.sourceRoot);await e.afterPreflight?.();let o=await h5(e.client,e.teamId),s=await e.client.projects.create({teamId:o,name:Ze(e.name)??i});try{await Gs(sp(t.credentials,i,{id:s.id,name:s.name}),e.environment)}catch(a){let l=a instanceof Error?a.message:String(a);throw Error([`Created ${s.id} but failed to update the local registry: ${l}`,`Run: toloka project add ${i} ${s.id}`].join(`
|
|
127
|
+
`),{cause:a})}let r=[`Created project ${s.id} as ${i}.`];if(e.sourceRoot!==void 0){let a=await f5(e.sourceRoot,n,s,i);if(a!==void 0)r.push(a)}let g=r.join(`
|
|
128
|
+
`);return e.io?.stdout(g),{output:g,projectId:s.id,alias:i}}var ti="https://platform.toloka.ai",y5=/^(?:prestable|pr-\d+)$/u,Wt=(e)=>{let t=e.ENV?.trim();if(t===void 0||!y5.test(t))return;return`https://${t}.platform.toloka-test.ai`},V5="https://console.toloka.ai",B5="https://prestable.console.toloka-test.ai",cp=(e)=>{let t;try{t=new URL(e).host}catch{return}if(t==="platform.toloka.ai")return V5;if(t.endsWith(".platform.toloka-test.ai"))return B5;return},R5=["Missing API key. Run toloka login once to store credentials for this machine:",""," toloka login","","It explains how to generate an API key and where it is saved. To override per command,","pass --api-key or set POTATO_API_KEY. Run toloka auth-status to see what is in effect."].join(`
|
|
129
|
+
`);function pl(e,t,i,n){let o=e.apiKey??i.POTATO_API_KEY??n?.apiKey,s=e.baseUrl??i.POTATO_BASE_URL??Wt(i)??n?.baseUrl??ti,r=Ui({flags:e,state:t,environment:i,stored:n,effectiveBaseUrl:s});return b(o,R5),{apiKey:o,baseUrl:s,...r===void 0?{}:{projectId:r.id}}}var G5=(e)=>{let t=cp(e);return[...t===void 0?[`An API key identifies you to ${e}. Generate one in the console that`,"serves this platform, under Company -> API Keys -> Generate API Key."]:[`An API key identifies you to ${e}. To generate one:`,"",` 1. open ${t}`," 2. go to Company -> API Keys"," 3. press Generate API Key and copy it"],"","The key is shown once. Treat it like a password: it is stored with owner-only","permissions and never printed back to you."].join(`
|
|
130
|
+
`)};async function Cp(e={}){let t=e.environment??process.env,i=e.write??(()=>{return}),n=bt(e.baseUrl??t.POTATO_BASE_URL??Wt(t)??ti),o=e.apiKey;if(o===void 0)b(e.prompt,"Missing API key. Pass --api-key, or set POTATO_API_KEY, when stdin is not a terminal."),i(`
|
|
131
|
+
${G5(n)}
|
|
132
|
+
`),o=(await e.prompt("API key: ",{mask:!0})).trim();b(o.length>0,"No API key entered.");let s={baseUrl:n,apiKey:o},r=e.probe?.(s)??ut(s),g;try{let u=await r.projects.listPage({limit:1});g=`Authenticated against ${n}: ${u.pagination.total} project(s) visible.`}catch(u){let c=u instanceof Error?u.message:String(u);throw Error([`Could not authenticate against ${n}: ${c}`,"","Nothing was saved. Check that the key was copied whole and has not been revoked."].join(`
|
|
133
|
+
`),{cause:u})}let a=Ne(t),l=await fs(a),I=typeof l==="object"&&bt(l.credentials.baseUrl)===bt(n)?{baseUrl:n,apiKey:o,...l.credentials.current===void 0?{}:{current:l.credentials.current},...l.credentials.projects===void 0?{}:{projects:l.credentials.projects}}:s,d=await Vs(I,t);return{credentialsFile:d,baseUrl:n,output:[g,`Saved credentials to ${d}.`,"","toloka reads them automatically. --api-key and POTATO_API_KEY still win when set."].join(`
|
|
134
|
+
`)}}async function up(e=process.env){let t=await ip(e);return{removed:t,output:t.length===0?`No stored credentials found at ${Ne(e)}.`:`Removed ${t.join(", ")}.
|
|
135
|
+
|
|
136
|
+
This does not revoke the key. Delete it in console.toloka.ai to do that.`}}var mp=(e)=>e.find((t)=>t!==void 0),w5=(e,t,i,n)=>mp([e.flagApiKey===void 0?void 0:{value:e.flagApiKey,source:"from --api-key"},t.POTATO_API_KEY===void 0?void 0:{value:t.POTATO_API_KEY,source:"from POTATO_API_KEY"},i===void 0?void 0:{value:i.credentials.apiKey,source:`stored in ${n}`}]),F5=(e,t,i)=>{let n=Wt(t);return mp([e.flagBaseUrl===void 0?void 0:{value:e.flagBaseUrl.replace(/\/+$/u,""),source:"from --base-url"},t.POTATO_BASE_URL===void 0?void 0:{value:t.POTATO_BASE_URL,source:"from POTATO_BASE_URL"},n===void 0?void 0:{value:n,source:`from ENV=${t.ENV}`},i===void 0?void 0:{value:i.credentials.baseUrl,source:"stored"}])??{value:ti,source:"default"}};async function pp(e={}){let t=e.environment??process.env,i=e.credentialLookup??await Mn(t,e.flagApiKey??t.POTATO_API_KEY),{found:n,warning:o}=i,s=n?.path??Ne(t),r=w5(e,t,n,s),g=F5(e,t,n),a=ml(e.project,n?.credentials),l=o===void 0?[]:[o,""];if(r===void 0)return l.push("Not logged in.","","Run toloka login to store an API key for this machine.","",a),{authenticated:!1,output:l.join(`
|
|
137
|
+
`)};let{value:I,source:d}=g;if(l.push(`Platform: ${I} (${d})`,`API key: ${e.showToken===!0?r.value:np(r.value)} (${r.source})`,a),t.POTATO_API_KEY!==void 0&&n!==void 0)l.push("",`POTATO_API_KEY is set, so the key stored in ${n.path} is ignored.`);if(n?.legacy===!0)l.push("",`Credentials still live at the old path ${n.path}. Run toloka login to move them to ${Ne(t)}.`);let u=e.probe?.({baseUrl:I,apiKey:r.value})??ut({baseUrl:I,apiKey:r.value});try{let c=await u.projects.listPage({limit:1});return l.push("",`Reachable: ${c.pagination.total} project(s) visible.`),{authenticated:!0,output:l.join(`
|
|
138
|
+
`)}}catch(c){let C=c instanceof Error?c.message:String(c);return l.push("",`Not reachable: ${C}`,"","Run toloka login to store a working key."),{authenticated:!1,output:l.join(`
|
|
139
|
+
`)}}}var WZ=require("crypto"),li=require("fs/promises"),ir=require("path");var Oi=require("path");function Zp(){let e=H5();return async(t)=>{for(let i of t)i.module=e(i.filename);return t}}function H5(e=process.argv[1]?Oi.dirname(process.argv[1]):process.cwd(),t=Oi.sep==="\\"){let i=t?Ap(e):e;return(n)=>{if(!n)return;let o=t?Ap(n):n,{dir:s,base:r,ext:g}=Oi.posix.parse(o);if(g===".js"||g===".mjs"||g===".cjs")r=r.slice(0,-1*g.length);let a=decodeURIComponent(r);if(!s)s=".";let l=s.lastIndexOf("/node_modules");if(l>-1)return`${s.slice(l+14).replace(/\//g,".")}:${a}`;if(s.startsWith(i)){let I=s.slice(i.length+1).replace(/\//g,".");return I?`${I}:${a}`:a}return a}}function Ap(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var Al=(e)=>{if("flags"in e){let t=bp(e.flags),i=Wp(e.flags);return{...e,featureFlags:t,featureFlagPayloads:i}}{let t=e.featureFlags??{},i=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([o,s])=>[o,ws(s)])),n=Object.fromEntries(Object.entries(t).map(([o,s])=>[o,v5(o,s,i[o])]));return{...e,featureFlags:t,featureFlagPayloads:i,flags:n}}};function v5(e,t,i){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:i?JSON.stringify(i):void 0,description:void 0}}}var bp=(e)=>Object.fromEntries(Object.entries(e??{}).map(([t,i])=>[t,qn(i)]).filter(([,t])=>t!==void 0)),Wp=(e)=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter((i)=>{let n=t[i];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map((i)=>{let n=t[i].metadata?.payload;return[i,n?ws(n):void 0]}))},qn=(e)=>e===void 0?void 0:e.variant??e.enabled,ws=(e)=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var k5=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],eo=(e,t=[])=>{let i={},n=(o)=>{if(e[o]!==void 0)i[o]=e[o]};return k5.forEach(n),t.forEach(n),i};var Ge=function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.AiQueue="ai_queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e}({});function Zl(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var Y5="NativeGzipValidationError",N5=31,X5=139,S5=8,x5=(e)=>e.length>=2&&e[0]===N5&&e[1]===X5;var to,J5=()=>{if(to)return to;to=[];for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;to[e]=t>>>0}return to},E5=(e)=>{let t=J5(),i=4294967295;for(let n=0;n<e.length;n++)i=t[(i^e[n])&255]^i>>>8;return(4294967295^i)>>>0},Fs=(e)=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name=Y5,t},U5=async(e,t)=>{if(e.size<18)Fs("too-short");let i=new Uint8Array(await e.slice(0,10).arrayBuffer());if(!x5(i)||i[2]!==S5)Fs("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());if(n.getUint32(0,!0)!==E5(t))Fs("invalid-crc");let o=t.length>>>0;if(n.getUint32(4,!0)!==o)Fs("invalid-size")};async function ii(e,t=!0,i){try{let n=new TextEncoder().encode(e),o=new globalThis.CompressionStream("gzip"),s=o.writable.getWriter(),r=s.write(n).then(()=>s.close()).catch(async(l)=>{try{await s.abort(l)}catch{}throw l}),g=new Response(o.readable).blob(),[a]=await Promise.all([g,r]);return await U5(a,n),a}catch(n){if(i?.rethrow)throw n;if(t)console.error("Failed to gzip compress data",n);return null}}var O5=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],hp=function(e,t=[]){if(!e)return!1;let i=e.toLowerCase();return O5.concat(t).some((n)=>{let o=n.toLowerCase();return i.indexOf(o)!==-1})};function Ti(e){let t=[];return JSON.stringify(e,function(i,n){if(typeof n=="bigint")return n.toString();if(typeof n=="function"||typeof n=="symbol")return;if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){while(t.length>0&&t[t.length-1]!==this)t.pop();if(t.includes(n))return"[Circular]";t.push(n)}return n})??"null"}var z5=Array.isArray,fp=Object.prototype,ax=fp.hasOwnProperty,Hs=fp.toString,st=z5||function(e){return Hs.call(e)==="[object Array]"};var io=(e)=>e===Object(e)&&!st(e);var ni=(e)=>e===void 0,ht=(e)=>Hs.call(e)=="[object String]",yp=(e)=>ht(e)&&e.trim().length===0,Vp=(e)=>e===null;var no=(e)=>Hs.call(e)=="[object Number]"&&e===e;var Bp=(e)=>Hs.call(e)==="[object Boolean]";var Rp=(e)=>e instanceof Error;function vs(e){return e===null||typeof e!="object"}function oi(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function Gp(e){return oi(e,"ErrorEvent")}function zi(e){return typeof Event<"u"&&j5(e,Event)}function wp(e){return oi(e,"Object")}function j5(e,t){try{return e instanceof t}catch{return!1}}function oo(e,t,i,n,o){if(t>i)n.warn("min cannot be greater than max."),t=i;if(no(e))if(e>i)return n.warn(" cannot be greater than max: "+i+". Using max value instead."),i;else{if(!(e<t))return e;return n.warn(" cannot be less than min: "+t+". Using min value instead."),t}return n.warn(" must be a number. using max or fallback. max: "+i+", fallback: "+o),oo(o||i,t,i,n)}var D5=86400000,Q5=1,_5=10;function Fp(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??Q5,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??_5}}class bl{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=oo(e.bucketSize,0,100,e._logger),this._refillRate=oo(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=oo(e.refillInterval,0,D5,e._logger)}_applyRefill(e,t){let i=t-e.lastAccess,n=Math.floor(i/this._refillInterval);if(n>0){let o=n*this._refillRate;e.tokens=Math.min(e.tokens+o,this._bucketSize),e.lastAccess=e.lastAccess+n*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),i=String(e),n=this._buckets[i];if(n)this._applyRefill(n,t);else n={tokens:this._bucketSize,lastAccess:t},this._buckets[i]=n;if(n.tokens===0)return!0;if(n.tokens--,n.tokens===0)this._onBucketRateLimited?.(e);return n.tokens===0}stop(){this._buckets={}}}/*! For license information please see uuidv7.mjs.LICENSE.txt */class si{constructor(e){this.bytes=e}static ofInner(e){if(e.length===16)return new si(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,i,n){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(n)||e<0||t<0||i<0||n<0||e>281474976710655||t>4095||i>1073741823||n>4294967295)throw RangeError("invalid field value");let o=new Uint8Array(16);return o[0]=e/1099511627776,o[1]=e/4294967296,o[2]=e/16777216,o[3]=e/65536,o[4]=e/256,o[5]=e,o[6]=112|t>>>8,o[7]=t,o[8]=128|i>>>24,o[9]=i>>>16,o[10]=i>>>8,o[11]=i,o[12]=n>>>24,o[13]=n>>>16,o[14]=n>>>8,o[15]=n,new si(o)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;default:break}if(t){let i=new Uint8Array(16);for(let n=0;n<16;n+=4){let o=parseInt(t.substring(2*n,2*n+8),16);i[n+0]=o>>>24,i[n+1]=o>>>16,i[n+2]=o>>>8,i[n+3]=o}return new si(i)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)if(e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]),t===3||t===5||t===7||t===9)e+="-";return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every((t)=>t===0)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every((t)=>t===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new si(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let i=this.bytes[t]-e.bytes[t];if(i!==0)return Math.sign(i)}return 0}}class vp{constructor(e){this.timestamp=0,this.counter=0,this.random=e??K5()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let i=this.generateOrAbortCore(e,t);if(i===void 0)this.timestamp=0,i=this.generateOrAbortCore(e,t);return i}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return si.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,si.ofInner(e)}}var K5=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),Hp,we=()=>L5().toString(),L5=()=>(Hp||(Hp=new vp)).generate();class Wl{add(e){let t=we(),i=++this.nextId;return this.promiseByIds[t]={id:i,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map((i)=>i.promise),t=e.length;while(t>0)await Promise.all(e),e=Object.values(this.promiseByIds).map((i)=>i.promise),t=e.length}getPromises(e=[],t=this.nextId){let i=new Set(e);return Object.values(this.promiseByIds).filter((n)=>n.id<=t&&!i.has(n.promise)).map((n)=>n.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}function M5(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var kp=(e,t,i)=>{function n(s,...r){t(()=>{let g=i[s];g(e,...r)})}return{debug:(...s)=>{n("debug",...s)},info:(...s)=>{n("log",...s)},warn:(...s)=>{n("warn",...s)},error:(...s)=>{n("error",...s)},critical:(...s)=>{i.error(e,...s)},createLogger:(s)=>kp(`${e} ${s}`,t,i)}},$5=(e)=>e();function Pp(e,t=$5){return kp(e,t,M5())}var Di="Mobile",Ps="iOS",ji="Android",xp="Tablet",Wx=ji+" "+xp;var ek="Apple",hx=ek+" Watch",Jp="Safari",Ys="BlackBerry",Ep="Samsung",tk=Ep+"Browser",ik=Ep+" Internet",Ns="Chrome",nk=Ns+" OS",ok=Ns+" "+Ps,Up="Internet Explorer",sk=Up+" "+Di,fl="Opera",fx=fl+" Mini",Op="Edge",rk="Microsoft "+Op,yl="Firefox",gk=yl+" "+Ps,Vl="Nintendo",Bl="PlayStation",ks="Xbox",ak=ji+" "+Di,lk=Di+" "+Jp,so="Windows",Ik=so+" Phone";var Tp="Generic",yx=Tp+" "+Di.toLowerCase(),Vx=Tp+" "+xp.toLowerCase(),dk="Konqueror",ck="Oculus Browser",Yp="Vivaldi",Ck="Yandex",Np="Whale",uk="DuckDuckGo",mk="Pale Moon",Xp="Waterfox",Sp="Brave",pk="Google Search App",_="(\\d+(\\.\\d+)?)",hl=new RegExp("Version/"+_);var Bx=new RegExp(ks,"i"),Rx=new RegExp(Bl+" \\w+","i"),Gx=new RegExp(Vl+" \\w+","i"),Ak=new RegExp(Ys+"|PlayBook|BB10","i"),Zk={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"};var wx={[sk]:[new RegExp("rv:"+_)],[rk]:[new RegExp(Op+"?\\/"+_)],[Ns]:[new RegExp("("+Ns+"|CrMo)\\/"+_)],[ok]:[new RegExp("CriOS\\/"+_)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+_)],[Jp]:[hl],[lk]:[hl],[fl]:[new RegExp("("+fl+"|OPR)\\/"+_)],[yl]:[new RegExp(yl+"\\/"+_)],[gk]:[new RegExp("FxiOS\\/"+_)],[dk]:[new RegExp("Konqueror[:/]?"+_,"i")],[Ys]:[new RegExp(Ys+" "+_),hl],[ak]:[new RegExp("android\\s"+_,"i")],[ik]:[new RegExp(tk+"\\/"+_)],[ck]:[new RegExp("OculusBrowser\\/"+_)],[Yp]:[new RegExp(Yp+"\\/"+_)],[Ck]:[new RegExp("YaBrowser\\/"+_)],[Np]:[new RegExp(Np+"\\/"+_)],[Sp]:[new RegExp(Sp+"\\/"+_)],[uk]:[new RegExp("(DuckDuckGo|Ddg)\\/"+_)],[mk]:[new RegExp("PaleMoon\\/"+_)],[Xp]:[new RegExp(Xp+"\\/"+_)],[pk]:[new RegExp("GSA\\/"+_)],[Up]:[new RegExp("(rv:|MSIE )"+_)],Mozilla:[new RegExp("rv:"+_)]};var Fx=[[new RegExp(ks+"; "+ks+" (.*?)[);]","i"),(e)=>[ks,e&&e[1]||""]],[new RegExp(Vl,"i"),[Vl,""]],[new RegExp(Bl,"i"),[Bl,""]],[Ak,[Ys,""]],[new RegExp(so,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[Ik,""];if(new RegExp(Di).test(t)&&!/IEMobile\b/.test(t))return[so+" "+Di,""];let i=/Windows NT ([0-9.]+)/i.exec(t);if(i&&i[1]){let n=i[1],o=Zk[n]||"";if(/arm/i.test(t))o="RT";return[so,o]}return[so,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(e)=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[Ps,t.join(".")]}return[Ps,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(e)=>{let t="";if(e&&e.length>=3)t=ni(e[2])?e[3]:e[2];return["watchOS",t]}],[new RegExp("("+ji+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+ji+")","i"),(e)=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[ji,t.join(".")]}return[ji,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(e)=>{let t=["Mac OS X",""];if(e&&e[1]){let i=[e[1],e[2],e[3]||"0"];t[1]=i.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[nk,""]],[/Linux|debian/i,["Linux",""]]];var zp="utf8",bk=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Wk(e){return typeof e=="string"&&bk.test(e)}function Xs(e,t){return Wk(e)?e:t()}function jp(e){return e?.replace(/\/+$/,"")}async function Dp(e,t){let i=null;for(let n=0;n<t.retryCount+1;n++){if(n>0)await new Promise((o)=>setTimeout(o,t.retryDelay));try{return await e()}catch(o){if(i=o,!t.retryCheck(o))throw o}}throw i}function Rl(){return new Date().toISOString()}function de(e,t){let i=setTimeout(e,t);return i?.unref&&i?.unref(),i}var Qp=(e)=>e instanceof Error;function Gl(e){return Promise.all(e.map((t)=>(t??Promise.resolve()).then((i)=>({status:"fulfilled",value:i}),(i)=>({status:"rejected",reason:i}))))}var fk={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Ux=fk.info;function wl(e){if(Bp(e))return{boolValue:e};if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e))return{intValue:e};return{doubleValue:e}}if(typeof e=="string")return{stringValue:e};if(st(e))return{arrayValue:{values:e.map((t)=>wl(t))}};try{return{stringValue:JSON.stringify(e)}}catch{return{stringValue:String(e)}}}function ro(e){let t=[];for(let i in e){let n=e[i];if(!(Vp(n)||ni(n)))t.push({key:i,value:wl(n)})}return t}var go=[0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,1e4];function Fl(e){return String(e)+"000000"}function Hl(e,t,i,n){let o="";if(n)o=Object.keys(n).sort().map((r)=>`${JSON.stringify(r)}:${JSON.stringify(n[r])}`).join(",");return`${e}\x00${t}\x00${i??""}\x00${o}`}function _p(e,t){for(let i=0;i<t.length;i++)if(e<=t[i])return i;return t.length}function vl(e,t,i){return{...e.resourceAttributes,"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":i}}function kl(e,t,i,n){return{resourceMetrics:[{resource:{attributes:ro(t)},scopeMetrics:[{scope:{name:i,version:n},metrics:e}]}]}}function Ss(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1000}}var Kp=1;class xs{constructor(e,t,i){this._instance=e,this._config=t,this._logger=i,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,i){this._capture({name:e,type:"count",value:t,unit:i?.unit,attributes:i?.attributes})}gauge(e,t,i){this._capture({name:e,type:"gauge",value:t,unit:i?.unit,attributes:i?.attributes})}histogram(e,t,i){this._capture({name:e,type:"histogram",value:t,unit:i?.unit,attributes:i?.attributes})}flush(){let e=this._flushPromise,i=(async()=>{if(e)await e.catch(()=>{});await this._doFlush()})().finally(()=>{if(this._flushPromise===i)this._flushPromise=null});return this._flushPromise=i,i}drainWindow(){if(this._series.size===0)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){if(this._instance.isDisabled||this._instance.optedOut)return;let t=this._runBeforeSend(e);if(t===null)return;if(!t.name||typeof t.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof t.value!="number"||!Number.isFinite(t.value))return void this._logger.warn(`Dropping metric '${t.name}': value must be a finite number`);if(t.type==="count"&&t.value<0)return void this._logger.warn(`Dropping count '${t.name}': counters are monotonic, value must be >= 0`);let i,n;try{i=t.attributes?{...t.attributes}:void 0,n=Hl(t.type,t.name,t.unit,i)}catch(r){this._logger.warn(`Dropping metric '${t.name}': attributes could not be serialized`,r);return}let o=this._series.get(n);if(!o){if(!this._admitNewSeries())return;o={name:t.name,type:t.type,unit:t.unit,attributes:i,windowStartMs:Date.now()},this._series.set(n,o)}let s=this._typeByName.get(t.name);if(s===void 0)this._typeByName.set(t.name,t.type);else if(s!==t.type&&!this._typeCollisionWarned.has(t.name))this._typeCollisionWarned.add(t.name),this._logger.warn(`Metric name '${t.name}' is already used as a ${s}; recording it as a ${t.type} too will blend both series in charts. Use a distinct name.`);this._fold(o,t.value),this._armFlushTimer()}_admitNewSeries(){if(this._series.size<this._config.maxSeriesPerFlush)return!0;if(!this._seriesCapWarned)this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`);return!1}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{if(!e.hist)e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(go.length+1).fill(0)};let i=e.hist;i.count+=1,i.sum+=t,i.min=Math.min(i.min,t),i.max=Math.max(i.max,t),i.bucketCounts[_p(t,go)]+=1;break}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let i=st(t)?t:[t],n=e;for(let o of i)try{let s=o(n);if(!s)return this._logger.info("Metric was rejected in beforeSend function"),null;n=s}catch(s){return this._logger.error("Error in beforeSend function for metric:",s),null}return n}_armFlushTimer(){if(this._flushTimer)return;this._flushTimer=de(()=>{this._flushTimer=void 0,this.flush().catch((e)=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs)}_clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}async _doFlush(){if(this._series.size===0)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,i=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t!==this._generation)return;switch(i.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",i.error);return}}_buildPayload(e){return kl(this._buildMetrics(e),vl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(e){let t=Fl(Date.now()),i=new Map;for(let n of e.values()){let o=Hl(n.type,n.name,n.unit,void 0),s=i.get(o);if(!s){if(s={name:n.name,...n.unit&&{unit:n.unit}},n.type==="count")s.sum={aggregationTemporality:Kp,isMonotonic:!0,dataPoints:[]};else if(n.type==="gauge")s.gauge={dataPoints:[]};else s.histogram={aggregationTemporality:Kp,dataPoints:[]};i.set(o,s)}let r=ro(n.attributes??{}),g=Fl(n.windowStartMs);if(n.type==="count"){let a={attributes:r,startTimeUnixNano:g,timeUnixNano:t,asDouble:n.total??0};s.sum.dataPoints.push(a)}else if(n.type==="gauge"){let a={attributes:r,timeUnixNano:t,asDouble:n.last??0};s.gauge.dataPoints.push(a)}else if(n.hist){let a={attributes:r,startTimeUnixNano:g,timeUnixNano:t,count:n.hist.count,sum:n.hist.sum,min:n.hist.min,max:n.hist.max,bucketCounts:n.hist.bucketCounts,explicitBounds:go};s.histogram.dataPoints.push(a)}}return Array.from(i.values())}_mergeWindowBack(e){for(let[t,i]of e){let n=this._series.get(t);if(!n){if(this._admitNewSeries())this._series.set(t,i);continue}switch(n.windowStartMs=Math.min(n.windowStartMs,i.windowStartMs),n.type){case"count":n.total=(n.total??0)+(i.total??0);break;case"gauge":break;case"histogram":if(i.hist)if(n.hist){n.hist.count+=i.hist.count,n.hist.sum+=i.hist.sum,n.hist.min=Math.min(n.hist.min,i.hist.min),n.hist.max=Math.max(n.hist.max,i.hist.max);for(let o=0;o<n.hist.bucketCounts.length;o++)n.hist.bucketCounts[o]+=i.hist.bucketCounts[o]}else n.hist=i.hist;break}}}}class Pl{constructor(){this.events={},this.events={}}on(e,t){if(!this.events[e])this.events[e]=[];return this.events[e].push(t),()=>{this.events[e]=this.events[e].filter((i)=>i!==t)}}emit(e,t){for(let i of this.events[e]||[])i(t);for(let i of this.events["*"]||[])i(e,t)}}var Ve={};TW(Ve,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>_s,DOMExceptionCoercer:()=>gA,EXCEPTION_STEP_INTERNAL_FIELDS:()=>ao,ErrorCoercer:()=>Ts,ErrorEventCoercer:()=>aA,ErrorPropertiesBuilder:()=>Us,EventCoercer:()=>IA,ExceptionStepsBuffer:()=>CA,ObjectCoercer:()=>Ds,PrimitiveCoercer:()=>Qs,PromiseRejectionEventCoercer:()=>dA,ReduceableCache:()=>cA,StringCoercer:()=>zs,chromeStackLineParser:()=>Yl,createDefaultStackParser:()=>Xl,createStackParser:()=>rA,geckoStackLineParser:()=>Nl,getUtf8ByteLength:()=>uA,nodeStackLineParser:()=>iA,opera10StackLineParser:()=>qp,opera11StackLineParser:()=>eA,resolveExceptionStepsConfig:()=>Sl,reverseAndStripFrames:()=>sA,stripReservedExceptionStepFields:()=>zk,winjsStackLineParser:()=>$p});var Js,Lp,Es;function Mp(e){let t=globalThis._posthogChunkIds;if(!t)return;let i=Object.keys(t);if(Es&&i.length===Lp)return Es;return Lp=i.length,Es=i.reduce((n,o)=>{if(!Js)Js={};let s=Js[o];if(s)n[s[0]]=s[1];else{let r=e(o);for(let g=r.length-1;g>=0;g--){let l=r[g]?.filename,I=t[o];if(l&&I){n[l]=I,Js[o]=[l,I];break}}}return n},{}),Es}var Rk=4;class Us{constructor(e,t,i=[]){this.coercers=e,this.stackParser=t,this.modifiers=i}buildFromUnknown(e,t={}){let n=t&&t.mechanism||{handled:!0,type:"generic"},s=this.buildCoercingContext(n,t,0).apply(e),r=this.buildParsingContext(t),g=this.parseStacktrace(s,r);return{$exception_list:this.convertToExceptionList(g,n),$exception_level:"error"}}async modifyFrames(e){for(let t of e)if(t.stacktrace&&t.stacktrace.frames&&st(t.stacktrace.frames))t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames);return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let i;if(e.cause!=null)i=this.parseStacktrace(e.cause,t);let n;if(e.stack!=""&&e.stack!=null)n=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap);return{...e,cause:i,stack:n}}applyChunkIds(e,t){return e.map((i)=>{if(i.filename&&t)i.chunk_id=t[i.filename];return i})}applyCoercers(e,t){for(let i of this.coercers)if(i.match(e))return i.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let i of this.modifiers)t=await i(t);return t}convertToExceptionList(e,t){let i={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};if(e.stack)i.stacktrace={type:"raw",frames:e.stack};let n=[i];if(e.cause!=null)n.push(...this.convertToExceptionList(e.cause,{...t,handled:!0}));return n}buildParsingContext(e){return{chunkIdMap:Mp(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,i=0){let n=(s,r)=>{if(!(r<=Rk))return;{let g=this.buildCoercingContext(e,t,r);return this.applyCoercers(s,g)}};return{...t,syntheticException:i==0?t.syntheticException:void 0,mechanism:e,apply:(s)=>n(s,i),next:(s)=>n(s,i+1)}}}var re="?";function rt(e,t,i,n,o){let s={platform:e,filename:t,function:i==="<anonymous>"?re:i,in_app:!0};if(!ni(n))s.lineno=n;if(!ni(o))s.colno=o;return s}var Os=(e,t)=>{let i=e.indexOf("safari-extension")!==-1,n=e.indexOf("safari-web-extension")!==-1;return i||n?[e.indexOf("@")!==-1?e.split("@")[0]:re,i?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var Gk=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,wk=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Fk=/\((\S*)(?::(\d+))(?::(\d+))\)/,Yl=(e,t)=>{let i=Gk.exec(e);if(i){let[,o,s,r]=i;return rt(t,o,re,+s,+r)}let n=wk.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let g=Fk.exec(n[2]);if(g)n[2]=g[1],n[3]=g[2],n[4]=g[3]}let[s,r]=Os(n[1]||re,n[2]);return rt(t,r,s,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var Hk=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,vk=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Nl=(e,t)=>{let i=Hk.exec(e);if(i){if(i[3]&&i[3].indexOf(" > eval")>-1){let r=vk.exec(i[3]);if(r)i[1]=i[1]||"eval",i[3]=r[1],i[4]=r[2],i[5]=""}let o=i[3],s=i[1]||re;return[s,o]=Os(s,o),rt(t,o,s,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}};var kk=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,$p=(e,t)=>{let i=kk.exec(e);return i?rt(t,i[2],i[1]||re,+i[3],i[4]?+i[4]:void 0):void 0};var Pk=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,qp=(e,t)=>{let i=Pk.exec(e);return i?rt(t,i[2],i[3]||re,+i[1]):void 0},Yk=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,eA=(e,t)=>{let i=Yk.exec(e);return i?rt(t,i[5],i[3]||i[4]||re,+i[1],+i[2]):void 0};var Nk=/^\s*[-]{4,}$/,Xk=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,Sk=/^Promise\.(?:all|any)$/,xk=/^index \d+$/,Jk="node:internal/promise",iA=(e,t)=>{let i=e.match(Xk);if(i){let n,o,s,r,g;if(i[1]){s=i[1];let I=s.lastIndexOf(".");if(s[I-1]===".")I--;if(I>0){n=s.slice(0,I),o=s.slice(I+1);let d=n.indexOf(".Module");if(d>0)s=s.slice(d+1),n=n.slice(0,d)}r=void 0}if(o)r=n,g=o;if(o==="<anonymous>")g=void 0,s=void 0;if(s===void 0)g=g||re,s=r?`${r}.${g}`:g;let a=i[2]?.startsWith("file://")?i[2].slice(7):i[2],l=i[5]==="native";if(a?.match(/\/[A-Z]:/))a=a.slice(1);if(!a&&i[5]&&!l)a=i[5];if(Sk.test(s)&&xk.test(a||""))a=Jk;return{filename:a?decodeURI(a):void 0,module:void 0,function:s,lineno:tA(i[3]),colno:tA(i[4]),in_app:Ek(a||"",l),platform:t}}if(e.match(Nk))return{filename:e,platform:t}};function Ek(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function tA(e){return parseInt(e||"",10)||void 0}var nA=/\(error: (.*)\)/,oA=50;function sA(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,oA).map((i)=>({...i,filename:i.filename||Uk(t).filename,function:i.function||re}))}function Uk(e){return e[e.length-1]||{}}function Xl(){return rA("web:javascript",Yl,Nl)}function rA(e,...t){return(i,n=0)=>{let o=[],s=i.split(`
|
|
140
|
+
`);for(let r=n;r<s.length;r++){let g=s[r];if(g.length>1024)continue;let a=nA.test(g)?g.replace(nA,"$1"):g;if(!a.match(/\S*Error: /)){for(let l of t){let I=l(a,e);if(I){o.push(I);break}}if(o.length>=oA)break}}return sA(o)}}class gA{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let i=ht(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return oi(e,"DOMException")}isDOMError(e){return oi(e,"DOMError")}}class Ts{match(e){return Rp(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let i=e.message;if(i.error&&typeof i.error.message=="string")return String(i.error.message);return String(i)}getStack(e){return e.stacktrace||e.stack||void 0}}class aA{constructor(){}match(e){return Gp(e)&&e.error!=null}coerce(e,t){let i=t.apply(e.error);if(!i)return{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0};return i}}var Ok=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class zs{match(e){return typeof e=="string"}coerce(e,t){let[i,n]=this.getInfos(e);return{type:i??"Error",value:n??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",i=e,n=e.match(Ok);if(n)t=n[1],i=n[2];return[t,i]}}var lA=["fatal","error","warning","log","info","debug"];function js(e,t=40){let i=Object.keys(e);if(i.sort(),!i.length)return"[object has no keys]";for(let n=i.length;n>0;n--){let o=i.slice(0,n).join(", ");if(!(o.length>t)){if(n===i.length)return o;return o.length<=t?o:`${o.slice(0,t)}...`}}return""}class Ds{match(e){return typeof e=="object"&&e!==null}coerce(e,t){let i=this.getErrorPropertyFromObject(e);if(i)return t.apply(i);return{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return zi(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){let n=`'${e.name}' captured as exception`;if("message"in e&&typeof e.message=="string")n+=` with message: '${e.message}'`;return n}if("message"in e&&typeof e.message=="string")return e.message;let t=this.getObjectClassName(e),i=js(e);return`${t&&t!=="Object"?`'${t}'`:"Object"} captured as exception with keys: ${i}`}isSeverityLevel(e){return ht(e)&&!yp(e)&&lA.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];if(Qp(i))return i}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(t){return}}}class IA{match(e){return zi(e)}coerce(e,t){let i=e.constructor.name;return{type:i,value:`${i} captured as exception with keys: ${js(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class Qs{match(e){return vs(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class dA{match(e){return oi(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!zi(e))return!1;try{let t=e.detail;return t!=null&&typeof t=="object"&&"reason"in t}catch{return!1}}coerce(e,t){let i=this.getUnhandledRejectionReason(e);if(vs(i))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(i)}`,stack:t.syntheticException?.stack,synthetic:!0};return t.apply(i)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}class cA{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t===void 0)return;return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){while(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;if(e)this._cache.delete(e)}}}var ao={MESSAGE:"$message",TIMESTAMP:"$timestamp"},Tk=new Set([ao.MESSAGE,ao.TIMESTAMP]),_s={enabled:!0,max_bytes:32768};function Sl(e){if(!e)return{..._s};return{enabled:e.enabled??_s.enabled,max_bytes:jk(e.max_bytes,_s.max_bytes)}}function zk(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,o)=>{if(Tk.has(o))return t.push(o),n;return n[o]=e[o],n},{}),droppedKeys:t}}class CA{constructor(e){this._entries=[],this._totalBytes=0,this._config=Sl(e)}setConfig(e){this._config=Sl(e),this._trimToMaxBytes()}add(e){let t=Dk(e);if(!t)return;let i=uA(t.json);if(i>this._config.max_bytes)return;this._entries.push({step:t.step,bytes:i}),this._totalBytes+=i,this._trimToMaxBytes()}getAttachable(){return this._entries.map((e)=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let e=this._entries.shift();if(e)this._totalBytes-=e.bytes}}}function jk(e,t){if(!no(e)||e===1/0||e===-1/0)return t;let i=Math.floor(e);if(i<0)return t;return i}function Dk(e){let t;try{t=Ti(e)}catch{return}try{let i=JSON.parse(t);if(!io(i))return;let n=i,o=n[ao.MESSAGE],s=n[ao.TIMESTAMP];if(!ht(o)||o.trim().length===0)return;if(!ht(s)&&!no(s))return;return{step:n,json:t}}catch{return}}function uA(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),i=0;for(let n=0;n<t.length;n++)if(t[n]==="%")i+=1,n+=2;else i+=1;return i}class Jt extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class ri extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}var AA=(e,t)=>{for(let i of Object.keys(t))if(i.startsWith("$feature/")||i==="$active_feature_flags")e[i]=t[i]};async function mA(e){if(e instanceof Jt){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function Qk(e){return typeof e=="object"&&(e instanceof Jt||ZA(e))}function ZA(e){return e instanceof ri}function _k(e){if(e instanceof Jt)return e.status===502||e.status===504;if(!(e instanceof ri))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}function Qi(e){return typeof e=="object"&&e instanceof Jt&&e.status===413}function lo(e){if(e instanceof Jt)return e.status===408||e.status===429||e.status>=500;return ZA(e)}function pA(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var xl="default";class Ks{getErrorPropertiesBuilder(){if(!this._errorPropertiesBuilder)this._errorPropertiesBuilder=this.createErrorPropertiesBuilder();return this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new Us([new Ts,new Ds,new zs,new Qs],Xl())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new Wl,this._events=new Pl,this._isInitialized=!1;let i=typeof e=="string"?e.trim():"",n=typeof t.host=="string"?t.host.trim():"",o=!i;if(this._logger=Pp("[PostHog]",this.logMsgIfDebug.bind(this)),o)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=i,this.host=jp(n||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1000),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3000,retryCheck:lo},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3000,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||o,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!Zl()||(t?.disableCompression??!1)}logMsgIfDebug(e){if(this.isDebug)e()}wrap(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Ge.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Ge.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Ge.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let t=this.on("*",(i,n)=>this._logger.info(i,n));this.removeDebugCallback=()=>{t(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},i={...t,...this.getCommonEventProperties()};if(AA(i,t),e.event==="$feature_flag_called"&&i.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled())i=eo(i);return{distinct_id:e.distinct_id,event:e.event,properties:i}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,i){this.wrap(()=>{let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",n,i)})}async identifyStatelessImmediate(e,t,i){let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",n,i)}captureStateless(e,t,i,n){this.wrap(()=>{let o=this.buildPayload({distinct_id:e,event:t,properties:i});this.enqueue("capture",o,n)})}async captureStatelessImmediate(e,t,i,n){let o=this.buildPayload({distinct_id:e,event:t,properties:i});await this.sendImmediate("capture",o,n)}aliasStateless(e,t,i,n){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});this.enqueue("alias",o,n)})}async aliasStatelessImmediate(e,t,i,n){let o=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",o,n)}groupIdentifyStateless(e,t,i,n,o,s){this.wrap(()=>{let r=this.buildPayload({distinct_id:o||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...s||{}}});this.enqueue("capture",r,n)})}async groupIdentifyStatelessImmediate(e,t,i,n,o,s){let r=this.buildPayload({distinct_id:o||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...s||{}}});await this.sendImmediate("capture",r,n)}async getRemoteConfig(){await this._initPromise;let e=this.host;if(e==="https://us.i.posthog.com")e="https://us-assets.i.posthog.com";else if(e==="https://eu.i.posthog.com")e="https://eu-assets.i.posthog.com";let t=`${e}/array/${this.apiKey}/config`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,i,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((n)=>n.json()).catch((n)=>{this._logger.error("Remote config could not be loaded",n),this._events.emit("error",n)})}async getFlags(e,t={},i={},n={},o={},s=!1){await this._initPromise;let r=s?"&config=true":"",g=`${this.host}/flags/?v=2${r}`,a={token:this.apiKey,distinct_id:e,groups:t,person_properties:i,group_properties:n,...o};if(i.$device_id)a.$device_id=i.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)a.evaluation_contexts=this.evaluationContexts;let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(a)};return this._logger.info("Flags URL",g),this.fetchWithRetry(g,l,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:_k},this.featureFlagsRequestTimeoutMs).then((I)=>I.json()).then((I)=>({success:!0,response:Al(I)})).catch((I)=>(this._events.emit("error",I),{success:!1,error:this.categorizeRequestError(I)}))}categorizeRequestError(e){if(e instanceof Jt)return{type:"api_error",statusCode:e.status};if(e instanceof ri){let t=e.error;if(t instanceof Error&&(t.name==="AbortError"||t.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,i={},n={},o={},s){await this._initPromise;let r=await this.getFeatureFlagDetailStateless(e,t,i,n,o,s);if(r===void 0)return{response:void 0,requestId:void 0};let g=qn(r.response);if(g===void 0)g=!1;return{response:g,requestId:r.requestId}}async getFeatureFlagDetailStateless(e,t,i={},n={},o={},s){await this._initPromise;let r=await this.getFeatureFlagDetailsStateless(t,i,n,o,s,[e]);if(r===void 0)return;return{response:r.flags[e],requestId:r.requestId,evaluatedAt:r.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,i={},n={},o={},s){await this._initPromise;let r=await this.getFeatureFlagPayloadsStateless(t,i,n,o,s,[e]);if(!r)return;let g=r[e];if(g===void 0)return null;return g}async getFeatureFlagPayloadsStateless(e,t={},i={},n={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,i,n,o,s)).payloads}async getFeatureFlagsStateless(e,t={},i={},n={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,i,n,o,s)}async getFeatureFlagsAndPayloadsStateless(e,t={},i={},n={},o,s){await this._initPromise;let r=await this.getFeatureFlagDetailsStateless(e,t,i,n,o,s);if(!r)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:r.featureFlags,payloads:r.featureFlagPayloads,requestId:r.requestId}}async getFeatureFlagDetailsStateless(e,t={},i={},n={},o,s){await this._initPromise;let r={geoip_disable:o??this.disableGeoip};if(s)r.flag_keys_to_evaluate=s;let g=await this.getFlags(e,t,i,n,r);if(!g.success)return;let a=g.response;if(a.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(a.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:a?.requestId,quotaLimited:a.quotaLimited};return a}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},n=(await this.fetchWithRetry(e,t).then((o)=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,r=Error(s);this._logger.error(r),this._events.emit("error",Error(s));return}return o.json()}).catch((o)=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;if(n)this._logger.info("Surveys fetched from API: ",JSON.stringify(n));return n??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(Ge.Props);return this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Ge.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Ge.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return xl}persistedQueueKeyForRoute(e){return Ge.Queue}getActiveQueueRoutes(){return[xl]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,i){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,i);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);let o=this.persistedQueueKeyForRoute(this.getQueueRouteKey(n)),s=this.getPersistedProperty(o)||[];if(s.length>=this.maxQueueSize)s.shift(),this._logger.warn("Queue is full, the oldest event is dropped.");if(s.push({message:n}),this.setPersistedProperty(o,s),this._events.emit(e,n),s.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=de(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(e,t,i){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,i);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);try{await this.sendBatch([n],void 0,this.getQueueRouteKey(n))}catch(o){this._events.emit("error",o)}}normalizeMessage(e){let{type:t,library:i,library_version:n,...o}=e,s=pA(o.properties)?o.properties:void 0;if(i!==void 0&&s?.$lib===void 0)s={...s||{},$lib:i};if(n!==void 0&&s?.$lib_version===void 0)s={...s||{},$lib_version:n};if(s)o.properties=s;return o.uuid=Xs(o.uuid,we),o}prepareMessage(e,t){let i={...e,timestamp:t?.timestamp?t?.timestamp:Rl(),uuid:Xs(t?.uuid,we)};if(t?.disableGeoip??this.disableGeoip){if(!pA(i.properties))i.properties={};i.properties.$geoip_disable=!0}if(i.distinctId)i.distinct_id=i.distinctId,delete i.distinctId;return i}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){if(this.pendingFlushPromise)return;this.flush().catch(async(e)=>{await mA(e)})}async waitForPendingPromises(e,t=[]){let i=t.filter((o)=>!!o),n=0;while(!0){let o=this.promiseQueue.getPromises([...i,...this.flushPromises],e);if(o.length===0)return;if(n>0)this._logger.debug(`flush() re-checking ${o.length} pending promise(s) before flushing`);await Promise.all(o.map((s)=>s.catch(()=>{}))),n++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,i=this.promiseQueue.maxId,n=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(i,[t,n])}).then(()=>Gl([t])).then(()=>{if(this.pendingFlushPromise===n)this.pendingFlushPromise=null;return this._flush()});return this.pendingFlushPromise=n,this.flushPromise=n,this.flushPromises.add(n),this.addPendingPromise(n),Gl([n]).then(()=>{if(this.flushPromises.delete(n),this.pendingFlushPromise===n)this.pendingFlushPromise=null;if(this.flushPromise===n)this.flushPromise=null}),n}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};if(e&&e!=="")t["User-Agent"]=e;return t}async sendBatch(e,t,i=xl){let n={api_key:this.apiKey,batch:e,sent_at:Rl()};if(this.historicalMigration)n.historical_migration=!0;let o=Ti(n),s=`${this.host}/batch/`,r=this.disableCompression?null:await ii(o,this.isDebug),g={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...r!==null&&{"Content-Encoding":"gzip"}},body:r||o};await(await this.fetchWithRetry(s,g,t)).body?.cancel()?.catch(()=>{})}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getActiveQueueRoutes();if(!e.some((n)=>this.getRouteQueue(n).length>0))return;let t=[],i;for(let n of e)try{await this._flushRoute(n,t)}catch(o){if(i===void 0)i=o}if(i!==void 0)throw i;this._events.emit("flush",t)}async _flushRoute(e,t){let i=this.persistedQueueKeyForRoute(e),n=this.getPersistedProperty(i)||[];if(!n.length)return;let o=n.length,s=0;while(n.length>0&&s<o){let r=n.slice(0,this.maxBatchSize),g=r.map((I)=>I.message===void 0?I.message:this.normalizeMessage(I.message)),a=async()=>{let d=(this.getPersistedProperty(i)||[]).slice(r.length);this.setPersistedProperty(i,d),n=d,this._dequeuedMessagesCount+=r.length,await this.flushStorage()},l={retryCheck:(I)=>{if(Qi(I))return!1;return lo(I)}};try{await this.sendBatch(g,l,e)}catch(I){if(Qi(I)&&g.length>1){this.maxBatchSize=Math.max(1,Math.floor(g.length/2)),this._logger.warn(`Received 413 when sending batch of size ${g.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(I instanceof ri))await a();throw this._events.emit("error",I),I}await a(),t.push(...g),s+=g.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await ii(t,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(i,o,{retryCheck:(s)=>{if(Qi(s))return!1;return lo(s)}}),{kind:"ok"}}catch(s){if(Qi(s))return{kind:"too-large"};if(s instanceof ri)return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await ii(t,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(i,o,{retryCheck:(s)=>{if(Qi(s))return!1;return lo(s)}}),{kind:"ok"}}catch(s){if(Qi(s))return{kind:"too-large"};if(lo(s))return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async fetchWithRetry(e,t,i,n){let o=t.body?t.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,zp)}catch{if(o instanceof Blob)s=o.size;else s=new TextEncoder().encode(o).length}return await Dp(async()=>{let r=new AbortController,g=n??this.requestTimeout,a=de(()=>r.abort(),g),l=null;try{l=await this.fetch(e,{signal:r.signal,...t})}catch(d){throw new ri(d)}finally{clearTimeout(a)}if(t.mode!=="no-cors"&&(l.status<200||l.status>=400))throw new Jt(l,s);return l},{...this._retryOptions,...i})}async _shutdown(e=30000){await this._initPromise;let t=!1;if(this.clearFlushTimer(),this.disabled)return;let i=async()=>{try{await this.promiseQueue.join();while(!0){if(!this.getActiveQueueRoutes().some((r)=>this.getRouteQueue(r).length>0))break;let s=this._dequeuedMessagesCount;if(await this.flush(),t)break;if(this._dequeuedMessagesCount===s){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(o){if(!Qk(o))throw o;await mA(o)}},n;try{return await Promise.race([new Promise((o,s)=>{n=de(()=>{this._logger.error("Timed out while shutting down PostHog"),t=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),i()])}finally{clearTimeout(n)}}async shutdown(e=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var hA=require("fs"),fA=require("readline"),Ls=new Ve.ReduceableCache(25),yA=new Ve.ReduceableCache(20),Jl=7,qk=1000,eP=1e4;async function VA(e){let t={};for(let o=e.length-1;o>=0;o--){let s=e[o],r=s?.filename;if(!s||typeof r!="string"||typeof s.lineno!="number"||oP(r)||sP(s))continue;if(!t[r])t[r]=[];t[r].push(s.lineno)}let i=Object.keys(t);if(i.length==0)return e;let n=[];for(let o of i){if(yA.get(o))continue;let s=t[o];if(!s)continue;s.sort((a,l)=>a-l);let r=gP(s);if(r.every((a)=>rP(o,a)))continue;let g=aP(Ls,o,{});n.push(tP(o,r,g))}if(await Promise.all(n).catch(()=>{}),e&&e.length>0)iP(e,Ls);return Ls.reduce(),e}function tP(e,t,i){return new Promise((n)=>{let o=hA.createReadStream(e),s=fA.createInterface({input:o});function r(){o.destroy(),n()}let g=0,a=0,l=t[a];if(l===void 0)return void r();let I=l[0],d=l[1];function u(){yA.set(e,1),s.close(),s.removeAllListeners(),r()}o.on("error",u),s.on("error",u),s.on("close",r),s.on("line",(c)=>{if(g++,g<I)return;if(i[g]=lP(c,0),g>=d){if(a===t.length-1){s.close(),s.removeAllListeners();return}a++;let C=t[a];if(C===void 0){s.close(),s.removeAllListeners();return}I=C[0],d=C[1]}})})}function iP(e,t){for(let i of e)if(i.filename&&i.context_line===void 0&&typeof i.lineno=="number"){let n=t.get(i.filename);if(n===void 0)continue;nP(i.lineno,i,n)}}function nP(e,t,i){if(t.lineno===void 0||i===void 0)return;t.pre_context=[];for(let o=BA(e);o<e;o++){let s=i[o];if(s===void 0)return void bA(t);t.pre_context.push(s)}if(i[e]===void 0)return void bA(t);t.context_line=i[e];let n=RA(e);t.post_context=[];for(let o=e+1;o<=n;o++){let s=i[o];if(s===void 0)break;t.post_context.push(s)}}function bA(e){delete e.pre_context,delete e.context_line,delete e.post_context}function oP(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function sP(e){if(e.lineno!==void 0&&e.lineno>eP)return!0;if(e.colno!==void 0&&e.colno>qk)return!0;return!1}function rP(e,t){let i=Ls.get(e);if(i===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(i[n]===void 0)return!1;return!0}function gP(e){if(!e.length)return[];let t=0,i=e[0];if(typeof i!="number")return[];let n=WA(i),o=[];while(!0){if(t===e.length-1){o.push(n);break}let s=e[t+1];if(typeof s!="number")break;if(s<=n[1])n[1]=s+Jl;else o.push(n),n=WA(s);t++}return o}function WA(e){return[BA(e),RA(e)]}function BA(e){return Math.max(1,e-Jl)}function RA(e){return e+Jl}function aP(e,t,i){let n=e.get(t);if(n===void 0)return e.set(t,i),i;return n}function lP(e,t){let i=e,n=i.length;if(n<=150)return i;if(t>n)t=n;let o=Math.max(t-60,0);if(o<5)o=0;let s=Math.min(o+140,n);if(s>n-5)s=n;if(s===n)o=Math.max(s-140,0);if(i=i.slice(o,s),o>0)i=`...${i}`;if(s<n)i+="...";return i}var _i=require("path");function GA(e=process.cwd()){let t=_i.sep==="\\",i=(o)=>t?o.replace(/\\/g,"/"):o,n=i(e);return async(o)=>{for(let s of o)if(!(!s.filename||s.filename.startsWith("node:")||s.filename.startsWith("data:"))){if(_i.isAbsolute(s.filename))s.filename=i(_i.relative(n,i(s.filename)))}return o}}var wA="5.46.1";var ft={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};class gi{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),!t)return;if(!t.enabled)return!1;return t.variant??!0}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let i=this._flags[t];if(i)e[t]=i}return this._cloneWith(e)}only(e){let t={},i=[];for(let n of e){let o=this._flags[n];if(o)t[n]=o;else i.push(n)}if(i.length>0)this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${i.join(", ")}`);return this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[i,n]of Object.entries(this._flags)){let o=n.enabled===!1?!1:n.variant??!0;if(e[`$feature/${i}`]=o,n.enabled)t.push(i)}if(t.length>0)t.sort(),e.$active_feature_flags=t;return e}_cloneWith(e){return new gi({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),this._distinctId==="")return;if(this._isSlice&&!(e in this._flags))return;let t=this._flags[e],i=t===void 0?void 0:t.enabled===!1?!1:t.variant??!0,n={$feature_flag:e,$feature_flag_response:i,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:i,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};if(t?.hasExperiment!==void 0)n.$feature_flag_has_experiment=t.hasExperiment;if(t?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0)n.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt;let o=[];if(this._errorsWhileComputing)o.push(ft.ERRORS_WHILE_COMPUTING);if(this._quotaLimited)o.push(ft.QUOTA_LIMITED);if(t===void 0)o.push(ft.FLAG_MISSING);if(o.length>0)n.$feature_flag_error=o.join(",");this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:i,groups:this._groups,disableGeoip:this._disableGeoip,properties:n})}}async function FA(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");let i=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(i)).map((o)=>o.toString(16).padStart(2,"0")).join("")}var IP=60000,dP=1152921504606847000,cP=["is_not","is_set"];class Ki extends Error{constructor(e){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,Ki.prototype)}}function PA(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class x extends Error{constructor(e){super(e);PA(this,x)}}class gt extends Error{constructor(e){super(e);PA(this,gt)}}class El{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:i,timeout:n,host:o,customHeaders:s,...r}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=n,this.projectApiKey=i,this.host=o,this.poller=void 0,this.fetch=r.fetch||fetch,this.onError=r.onError,this.customHeaders=s,this.onLoad=r.onLoad,this.onMinimalFlagCalledEvents=r.onMinimalFlagCalledEvents,this.cacheProvider=r.cacheProvider,this.strictLocalEvaluation=r.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){if(this.debugMode)e()}createEvaluationContext(e,t={},i={},n={},o={}){return{distinctId:e,groups:t,personProperties:i,groupProperties:n,evaluationCache:o}}async getFeatureFlag(e,t,i={},n={},o={}){await this.loadFeatureFlags();let s,r;if(!this.loadedSuccessfullyOnce)return s;if(r=this.featureFlagsByKey[e],r!==void 0){let g=this.createEvaluationContext(t,i,n,o);try{s=(await this.computeFlagAndPayloadLocally(r,g)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${s}`))}catch(a){if(a instanceof gt||a instanceof x)this.logMsgIfDebug(()=>console.debug(`${a.name} when computing flag locally: ${e}: ${a.message}`));else if(a instanceof Error)this.onError?.(Error(`Error computing flag locally: ${e}: ${a}`))}}return s}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let i={},n={},o=this.featureFlags.length==0,s=t?t.map((g)=>this.featureFlagsByKey[g]).filter(Boolean):this.featureFlags,r={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(s.map(async(g)=>{try{let{value:a,payload:l}=await this.computeFlagAndPayloadLocally(g,r);if(i[g.key]=a,l)n[g.key]=l}catch(a){if(a instanceof gt||a instanceof x)this.logMsgIfDebug(()=>console.debug(`${a.name} when computing flag locally: ${g.key}: ${a.message}`));else if(a instanceof Error)this.onError?.(Error(`Error computing flag locally: ${g.key}: ${a}`));o=!0}})),{response:i,payloads:n,fallbackToFlags:o}}async computeFlagAndPayloadLocally(e,t,i={}){let{matchValue:n,skipLoadCheck:o=!1}=i;if(!o)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=n!==void 0?n:await this.computeFlagValueLocally(e,t);let r=this.getFeatureFlagPayload(e.key,s);return{value:s,payload:r}}async computeFlagValueLocally(e,t){let{distinctId:i,groups:n,personProperties:o,groupProperties:s}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new x("Flag has experience continuity enabled");let g=(e.filters||{}).aggregation_group_type_index;if(g!=null){let a=this.groupTypeMapping[String(g)];if(!a)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${g} for feature flag ${e.key}`)),new x("Flag has unknown group type index");if(!(a in n))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;if(e.bucketing_identifier==="device_id"&&(o?.$device_id===void 0||o?.$device_id===null||o?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let l=s[a];return await this.matchFeatureFlagProperties(e,n[a],l,t)}{let a=this.getBucketingValueForFlag(e,i,o);if(a===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new x(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,a,o,t)}}getBucketingValueForFlag(e,t,i){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier==="device_id"){let n=i?.$device_id;if(n==null||n==="")return;return n}return t}getFeatureFlagPayload(e,t){let i=null;if(t!==!1&&t!=null){if(typeof t=="boolean")i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null;else if(typeof t=="string")i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null;if(i!=null){if(typeof i=="object")return i;if(typeof i=="string")try{return JSON.parse(i)}catch{}return i}}return null}async evaluateFlagDependency(e,t,i){let{evaluationCache:n}=i,o=e.key;if(!this.featureFlagsByKey)throw new x("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new x(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=e.dependency_chain;if(!Array.isArray(s))throw new x(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new x(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let g of s){if(!(g in n)){let l=this.featureFlagsByKey[g];if(l)if(l.active)try{let I=await this.computeFlagValueLocally(l,i);n[g]=I}catch(I){throw new x(`Error evaluating flag dependency '${g}' for flag '${o}': ${I}`)}else n[g]=!1;else throw new x(`Missing flag dependency '${g}' for flag '${o}'`)}if(n[g]==null)throw new x(`Dependency '${g}' could not be evaluated`)}let r=n[o];return this.flagEvaluatesToExpectedValue(e.value,r)}flagEvaluatesToExpectedValue(e,t){if(typeof e=="boolean")return e===t||typeof t=="string"&&t!==""&&e===!0;if(typeof e=="string")return t===e;return!1}async matchFeatureFlagProperties(e,t,i,n){let o=e.filters||{},s=o.groups||[],r=o.aggregation_group_type_index,g=o.early_exit??!1,{groups:a,groupProperties:l}=n,I=!1,d;for(let u of s)try{let c=u.aggregation_group_type_index!==void 0?u.aggregation_group_type_index:r,C=i,A=t;if(c!==r){if(c!=null){let p=this.groupTypeMapping[String(c)];if(!p||!(p in a)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${c} not available`));continue}if(!(p in l)){I=!0;continue}C=l[p],A=a[p]}}let m=await this.isConditionMatch(e,A,u,C,n);if(m==="match"){let p=u.variant,Z=o.multivariate?.variants||[];d=p&&Z.some((W)=>W.key===p)?p:await this.getMatchingVariant(e,A)||!0;break}if(g&&m==="out_of_rollout_bound")return!1}catch(c){if(c instanceof gt)throw c;if(c instanceof x)I=!0;else throw c}if(d!==void 0)return d;if(I)throw new x("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,i,n,o){let s=i.rollout_percentage,r=(g)=>{this.logMsgIfDebug(()=>console.warn(g))};if((i.properties||[]).length>0){for(let g of i.properties){let a=g.type,l=!1;if(a==="cohort"){let I=await NA(g,n,this.cohorts,this.debugMode,(d)=>this.evaluateFlagDependency(d,n,o));l=g.operator==="not_in"?!I:I}else l=a==="flag"?await this.evaluateFlagDependency(g,n,o):YA(g,n,r);if(!l)return"no_match"}if(s==null)return"match"}if(s!=null&&await HA(e.key,t)>s/100)return"out_of_rollout_bound";return"match"}async getMatchingVariant(e,t){let i=await HA(e.key,t,"variant"),n=this.variantLookupTable(e).find((o)=>i>=o.valueMin&&i<o.valueMax);if(n)return n.key}variantLookupTable(e){let t=[],i=0,n=0;return((e.filters||{}).multivariate?.variants||[]).forEach((r)=>{n=i+r.rollout_percentage/100,t.push({valueMin:i,valueMax:n,key:r.key}),i=n}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((t,i)=>(t[i.key]=i,t),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.(e.minimalFlagCalledEvents===!0)}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter((i)=>i.ensure_experience_continuity);if(t.length>0)console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map((i)=>i.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(t){return this.onError?.(Error(`Failed to load from cache: ${t}`)),!1}}async loadFeatureFlags(e=!1){if(this.loadedSuccessfullyOnce&&!e)return;if(!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((t)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${t}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(IP,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(i){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${i}`))}if(!e){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Ki(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new Ki(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Ki(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let i=await t.json()??{};if(!("flags"in i))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(i)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let n={flags:i.flags??[],groupTypeMapping:i.group_type_mapping||{},cohorts:i.cohorts||{},minimalFlagCalledEvents:i.minimal_flag_called_events===!0};if(this.updateFlagState(n),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(n)}catch(o){this.onError?.(Error(`Failed to store in cache: ${o}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(n.flags);break}default:return}}catch(e){if(e instanceof Ki)this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let i={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(t)i["If-None-Match"]=t;return{method:e,headers:i}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),i=null;if(this.timeout&&typeof this.timeout=="number"){let n=new AbortController;i=de(()=>{n.abort()},this.timeout),t.signal=n.signal}try{let n=this.fetch;return n(e,t)}finally{clearTimeout(i)}}async stopPoller(e=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();if(t instanceof Promise)await Promise.race([t,new Promise((i,n)=>setTimeout(()=>n(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(t){this.onError?.(Error(`Error during cache shutdown: ${t}`))}}}async function HA(e,t,i=""){let n=await FA(`${e}.${t}${i}`);return parseInt(n.slice(0,15),16)/dP}function YA(e,t,i){let{key:n,value:o}=e,s=e.operator||"exact";if(n in t){if(s==="is_not_set")return!1}else{if(s==="is_not_set")return!0;throw new x(`Property ${n} not found in propertyValues`)}let r=t[n];if(r==null&&!cP.includes(s)){if(i)i(`Property ${n} cannot have a value of null/undefined with the ${s} operator`);return!1}function g(l,I){if(Array.isArray(l))return l.map((d)=>String(d).toLowerCase()).includes(String(I).toLowerCase());return String(l).toLowerCase()===String(I).toLowerCase()}function a(l,I,d){if(d==="gt")return l>I;if(d==="gte")return l>=I;if(d==="lt")return l<I;if(d==="lte")return l<=I;throw Error(`Invalid operator: ${d}`)}switch(s){case"exact":return g(o,r);case"is_not":return!g(o,r);case"is_set":return n in t;case"icontains":return String(r).toLowerCase().includes(String(o).toLowerCase());case"not_icontains":return!String(r).toLowerCase().includes(String(o).toLowerCase());case"regex":return vA(String(o))&&String(r).match(String(o))!==null;case"not_regex":return vA(String(o))&&String(r).match(String(o))===null;case"gt":case"gte":case"lt":case"lte":{let l=typeof o=="number"?o:parseFloat(String(o)),I;if(I=typeof r=="number"?r:r!=null?parseFloat(String(r)):NaN,Number.isFinite(l)&&Number.isFinite(I))return a(I,l,s);return a(String(r),String(o),s)}case"is_date_after":case"is_date_before":{if(typeof o=="boolean")throw new x("Date operations cannot be performed on boolean values");let l=AP(String(o));if(l==null)l=kA(o);if(l==null)throw new x(`Invalid date: ${o}`);let I=kA(r);if(["is_date_before"].includes(s))return I<l;return I>l}case"semver_eq":return Xe(ge(String(r)),ge(String(o)))===0;case"semver_neq":return Xe(ge(String(r)),ge(String(o)))!==0;case"semver_gt":return Xe(ge(String(r)),ge(String(o)))>0;case"semver_gte":return Xe(ge(String(r)),ge(String(o)))>=0;case"semver_lt":return Xe(ge(String(r)),ge(String(o)))<0;case"semver_lte":return Xe(ge(String(r)),ge(String(o)))<=0;case"semver_tilde":{let l=ge(String(r)),{lower:I,upper:d}=uP(String(o));return Xe(l,I)>=0&&Xe(l,d)<0}case"semver_caret":{let l=ge(String(r)),{lower:I,upper:d}=mP(String(o));return Xe(l,I)>=0&&Xe(l,d)<0}case"semver_wildcard":{let l=ge(String(r)),{lower:I,upper:d}=pP(String(o));return Xe(l,I)>=0&&Xe(l,d)<0}default:throw new x(`Unknown operator: ${s}`)}}function CP(e,t){if(!(e in t))throw new gt(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function NA(e,t,i,n=!1,o){let s=String(e.value);CP(s,i);let r=i[s];return XA(r,t,i,n,o)}async function XA(e,t,i,n=!1,o){if(!e)return!0;let{type:s,values:r}=e;if(!r||r.length===0)return!0;let g=!1;if("values"in r[0]){for(let a of r)try{let l=await XA(a,t,i,n,o);if(s==="AND"){if(!l)return!1}else if(l)return!0}catch(l){if(l instanceof gt)throw l;if(l instanceof x){if(n)console.debug(`Failed to compute property ${a} locally: ${l}`);g=!0}else throw l}if(g)throw new x("Can't match cohort without a given cohort property value");return s==="AND"}for(let a of r)try{let l;if(a.type==="cohort")l=await NA(a,t,i,n,o);else if(a.type==="flag"){if(!o)throw new x(`Flag dependency '${a.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);l=await o(a)}else l=YA(a,t);let I=a.negation||!1;if(s==="AND"){if(!l&&!I)return!1;if(l&&I)return!1}else{if(l&&!I)return!0;if(!l&&I)return!0}}catch(l){if(l instanceof gt)throw l;if(l instanceof x){if(n)console.debug(`Failed to compute property ${a} locally: ${l}`);g=!0}else throw l}if(g)throw new x("can't match cohort without a given cohort property value");return s==="AND"}function vA(e){try{return new RegExp(e),!0}catch(t){return!1}}function SA(e,t){if(!/^\d+$/.test(e))throw new x(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new x(`Invalid semver: ${t}`);return parseInt(e,10)}function ge(e){let i=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!i||i.startsWith("."))throw new x(`Invalid semver: ${e}`);let n=i.split("."),o=(a)=>{if(a===void 0||a==="")return 0;return SA(a,e)},s=o(n[0]),r=o(n[1]),g=o(n[2]);return[s,r,g]}function Xe(e,t){for(let i=0;i<3;i++){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1}return 0}function uP(e){let t=ge(e),i=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:i,upper:n}}function mP(e){let t=ge(e),[i,n,o]=t,s=[i,n,o],r;return r=i>0?[i+1,0,0]:n>0?[0,n+1,0]:[0,0,o+1],{lower:s,upper:r}}function pP(e){let i=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!i)throw new x(`Invalid wildcard semver: ${e}`);let n=i.split("."),o=(a)=>{try{return SA(a,e)}catch{throw new x(`Invalid wildcard semver: ${e}`)}},s=o(n[0]),r,g;if(n.length===1)r=[s,0,0],g=[s+1,0,0];else{let a=o(n[1]);r=[s,a,0],g=[s,a+1,0]}return{lower:r,upper:g}}function kA(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new x(`${e} is in an invalid date format`)}throw new x(`The date provided ${e} must be a string, number, or date object`)}function AP(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,i=e.match(t),n=new Date(new Date().toISOString());if(!i)return null;{if(!i.groups)return null;let o=parseInt(i.groups.number);if(o>=1e4)return null;let s=i.groups.interval;if(s=="h")n.setUTCHours(n.getUTCHours()-o);else if(s=="d")n.setUTCDate(n.getUTCDate()-o);else if(s=="w")n.setUTCDate(n.getUTCDate()-7*o);else if(s=="m")n.setUTCMonth(n.getUTCMonth()-o);else{if(s!="y")return null;n.setUTCFullYear(n.getUTCFullYear()-o)}return n}}function ZP(e,t){let i=!1;return Object.assign((n)=>{let s=global.process.listeners("uncaughtException").filter((r)=>r.name!=="domainUncaughtExceptionClear"&&r._posthogErrorHandler!==!0).length===0;if(e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!i&&s)i=!0,t(n)},{_posthogErrorHandler:!0})}function xA(e,t){globalThis.process?.on("uncaughtException",ZP(e,t))}function JA(e){globalThis.process?.on("unhandledRejection",(t)=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var bP=2000;class at{constructor(e,t,i){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=i,this._rateLimiter=new bl({...Fp(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return io(e)&&"__posthog_previously_captured_error"in e&&e.__posthog_previously_captured_error===!0}static async buildEventMessage(e,t,i,n,o){let s={...o},r=e.buildFromUnknown(t,i);return r.$exception_list=await e.modifyFrames(r.$exception_list),{event:"$exception",distinctId:n,properties:{...r,...s},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())xA(this.onException.bind(this),this.onFatalError.bind(this)),JA(this.onException.bind(this))}onException(e,t){this.client.addPendingPromise((async()=>{if(!at.isPreviouslyCapturedError(e)){let i=await at.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),o=i.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(o))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:o});return this.client._capturePreparedEvent(i,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(bP),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class Ul{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t!==null?t:void 0}constructor(){this._memoryStorage={}}}function WP(e){return e==="v0"||e==="v1"}function EA(){let e=typeof process<"u"?process.env?.POSTHOG_CAPTURE_MODE:void 0;return WP(e)?e:"v0"}var Io="analytics",co="ai";function UA(e){return typeof e.event=="string"&&e.event.startsWith("$ai_")}class Li extends Error{constructor({requestId:e,drops:t,retryExhausted:i,cause:n}){super(Li.buildMessage(e,t,i,n)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=i,this.cause=n}static buildMessage(e,t,i,n){let o=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${i.length} undelivered`;if(n instanceof Error)o+=` (${n.message})`;return o}}function Ol(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function hP(e){return typeof e=="string"?e:void 0}var fP=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:Ol},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:Ol},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:Ol},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:hP}],yP=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function VP(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function BP(e){if(typeof e=="string"){let i=new Date(e);return Number.isNaN(i.getTime())?new Date().toISOString():e}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function OA(e,t,i){if(i!==void 0&&!(t in e))e[t]=i}function RP(e){let i={...VP(e.properties)?e.properties:{}},n={};for(let{property:s,optionKey:r,coerce:g}of fP)if(s in i){let a=g(i[s]);if(a!==void 0)n[r]=a;delete i[s]}let o={};for(let{property:s,field:r}of yP)if(s in i){let g=i[s];if(typeof g=="string")o[r]=g;delete i[s]}return delete i.$lib,delete i.$lib_version,OA(i,"$set",e.$set),OA(i,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:BP(e.timestamp),...o,options:n,properties:i}}function TA(e,{createdAt:t,historicalMigration:i}){let n={created_at:t,batch:e.map(RP)};if(i)n.historical_migration=!0;return n}var GP="/i/v1/analytics/events",wP=30000,FP=new Set([408,500,502,503,504]);class Tl{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??wP,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??((i)=>new Promise((n)=>de(n,i))),this.generateRequestId=t.generateRequestId??we,this.compress=t.compress??ii}async sendV1Batch(e){if(e.length===0)return;let t=this.generateRequestId(),i=new Date(this.now()).toISOString(),{batch:n}=TA(e,{createdAt:i,historicalMigration:this.config.historicalMigration}),o=`${this.config.host}${GP}`,s=[],r=n,g=Math.max(1,this.config.maxAttempts);for(let a=1;a<=g;a++){let l=a===g,I=Ti({created_at:i,...this.config.historicalMigration?{historical_migration:!0}:{},batch:r}),d;try{d=await this.sendOnce(o,I,a,t)}catch(m){if(l)return this.surfaceBatchFailure(t,s,r,m);await this.sleep(this.backoffDelay(a));continue}let{status:u}=d;if(u<200||u>=300){if(!l&&FP.has(u)){let p=this.parseRetryAfter(d);await this.cancelBody(d),await this.sleep(this.backoffDelay(a,p));continue}let m=await this.buildHttpError(d,u);return this.surfaceBatchFailure(t,s,r,m)}let c;try{c=await this.parseResponse(d)}catch{return this.surfaceBatchFailure(t,s,r,Error(`Capture V1 returned an unparseable ${u} response body`))}let C=this.classify(r,c,s);if(C.length===0)return this.surfacePartialDrops(t,s);if(l)return void this.onError(new Li({requestId:t,drops:s,retryExhausted:C.map((m)=>m.uuid)}));r=C;let A=this.parseRetryAfter(d);await this.sleep(this.backoffDelay(a,A))}}async sendOnce(e,t,i,n){let o=this.buildHeaders(i,n),s=t;if(this.config.compressionEnabled){let a=await this.compress(t,this.config.isDebug);if(a!==null)s=a,o["Content-Encoding"]="gzip"}let r=new AbortController,g=de(()=>r.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:o,body:s,signal:r.signal})}finally{clearTimeout(g)}}buildHeaders(e,t){let i=`${this.config.libraryId}/${this.config.libraryVersion}`,n={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":i,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};if(this.config.userAgent)n["User-Agent"]=this.config.userAgent;return n}classify(e,t,i){let n=t.results??{},o=[];for(let s of e){let r=n[s.uuid];if(r){if(r.result==="drop")i.push({uuid:s.uuid,details:r.details??void 0});else if(r.result==="retry")o.push(s)}}return o}backoffDelay(e,t){let i=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);if(t===void 0)return i;return Math.max(i,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let i=t.trim();if(/^\d+$/.test(i)){let s=parseInt(i,10);return Number.isFinite(s)&&s>0?1000*s:void 0}let n=Date.parse(i);if(Number.isNaN(n))return;let o=n-this.now();return o>0?o:void 0}async parseResponse(e){let t=await e.text(),i=JSON.parse(t);if(typeof i!="object"||i===null||Array.isArray(i))throw Error("unexpected response shape");let n=i.results;if(n!==void 0&&(typeof n!="object"||n===null||Array.isArray(n)))throw Error("unexpected results shape");return{results:n??{}}}async buildHttpError(e,t){let i="";try{i=(await e.text()).slice(0,512)}catch{}let n=i?`: ${i}`:"";return Error(`Capture V1 request failed with HTTP ${t}${n}`)}surfaceBatchFailure(e,t,i,n){this.onError(new Li({requestId:e,drops:t,retryExhausted:i.map((o)=>o.uuid),cause:n}))}surfacePartialDrops(e,t){if(t.length>0)this.onError(new Li({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}var HP=100,zA=30000,vP=50000,kP=50,PP=500,YP="https://us.i.posthog.com",jA=new Set;function Ms(e,t){if(jA.has(e))return;jA.add(e),console.warn(`[PostHog] ${t}`)}function NP(e){return typeof e=="string"?e.trim():""}function XP(e){return(typeof e=="string"?e.trim():"")||void 0}function SP(e){return(typeof e=="string"?e.trim():"")||YP}function xP(e){return(Array.isArray(e)?e:[e]).filter((i)=>typeof i=="string"&&i.trim().length>0)}function JP(e){if(!e)return{};let t={};for(let[n,o]of Object.entries(e))t[`$feature/${n}`]=o;let i=Object.keys(e).filter((n)=>e[n]!==!1).sort();if(i.length>0)t.$active_feature_flags=i;return t}class zl extends Ks{constructor(e,t={}){let i=NP(e),n={...t,maxQueueSize:t.maxQueueSize??1e4,flushInterval:t.flushInterval??5000,host:SP(t.host),personalApiKey:XP(t.secretKey??t.personalApiKey)};if(super(i,n),this._memoryStorage=new Ul,this._minimalFlagCalledEvents=!1,this.options=n,this.captureMode=EA(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof n.featureFlagsPollingInterval=="number"?Math.max(n.featureFlagsPollingInterval,HP):zA,typeof n.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(n.waitUntilDebounceMs,0);if(typeof n.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(n.waitUntilMaxWaitMs,0);if(!this.disabled&&n.personalApiKey){if(n.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(n.enableLocalEvaluation!==!1)this.featureFlagsPoller=new El({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:n.personalApiKey,projectApiKey:i,timeout:n.requestTimeout??1e4,host:this.host,fetch:n.fetch,onError:(s)=>{this._events.emit("error",s)},onLoad:(s)=>{this._events.emit("localEvaluationFlagsLoaded",s)},onMinimalFlagCalledEvents:(s)=>{this._minimalFlagCalledEvents=s},customHeaders:this.getCustomHeaders(),cacheProvider:n.flagDefinitionCacheProvider,strictLocalEvaluation:n.strictLocalEvaluation})}this.errorTracking=new at(this,n,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=n.maxCacheSize||vP}enqueue(e,t,i){super.enqueue(e,t,i),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let s,r=new Promise((g)=>{s=g});try{e(r)}catch{return}this._waitUntilCycle={resolve:s,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,i=this.options.waitUntilMaxWaitMs??PP,n=t>=i;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(n)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??kP;this._waitUntilCycle.timer=de(()=>{this.resolveWaitUntilFlush()},o)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;if(e)clearTimeout(e.timer),this._waitUntilCycle=void 0;return e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){return this.captureMode==="v1"&&UA(e)?co:Io}persistedQueueKeyForRoute(e){return e===co?Ge.AiQueue:Ge.Queue}getActiveQueueRoutes(){return this.captureMode==="v1"?[Io,co]:[Io]}async sendBatch(e,t,i=Io){if(this.captureMode!=="v1"||i===co)return super.sendBatch(e,t,i);let n=e.filter((o)=>o!==void 0);await this.getV1Sender().sendV1Batch(n)}getV1Sender(){if(!this._v1Sender)this._v1Sender=new Tl({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3000,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:(e)=>this._events.emit("error",e)});return this._v1Sender}getLibraryVersion(){return wA}get metrics(){if(!this._metrics)this._metrics=new xs(this,Ss(this.options.metrics),this._logger);return this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();if(this.options.isServer??!0)e.$is_server=!0;return e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,i){if(typeof e=="string")this._logger.warn(t);if(e.event==="$exception"&&!e._originatedFromCaptureException)this._logger.warn(i)}_sendPreparedEvent(e,t,i,n){return this.addPendingPromise(this._prepareEventMessage(t,n).then(({distinctId:o,event:s,properties:r,options:g})=>{let a={timestamp:g.timestamp,disableGeoip:g.disableGeoip,uuid:g.uuid},l={distinctId:o,event:s,properties:{...r,...this.getCommonEventProperties()}};return i?this.sendImmediate(e,l,a):this.enqueue(e,l,a)}).catch((o)=>{if(o)console.error(o)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:i}){let{$set:n,$set_once:o,$anon_distinct_id:s,...r}=t,l={$set:n||r,$set_once:o||{},$anon_distinct_id:s??void 0};this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:l,disableGeoip:i},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:i}){let{$set:n,$set_once:o,$anon_distinct_id:s,...r}=t,l={$set:n||r,$set_once:o||{},$anon_distinct_id:s??void 0};await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:l,disableGeoip:i},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:i={}}){if(Object.keys(t).length===0&&Object.keys(i).length===0)return;let n={};if(Object.keys(t).length>0)n.$set=t;if(Object.keys(i).length>0)n.$set_once=i;this.capture({distinctId:e,event:"$set",properties:n})}unsetPersonProperties({distinctId:e,properties:t}){let i=xP(t);if(i.length===0)return;this.capture({distinctId:e,event:"$set",properties:{$unset:i}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=zA){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((t)=>{let i=setTimeout(()=>{n(),t(!1)},e),n=this._events.on("localEvaluationFlagsLoaded",(o)=>{clearTimeout(i),n(),t(o>0)})})}_resolveDistinctId(e,t){if(typeof e=="string")return{distinctId:e,options:t};return{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,i={},n){if(this.disabled)return void this._logger.warn("The client is disabled");let o=i.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let V=this._flagOverrides[e];if(V===void 0)return;let B=this._payloadOverrides?.[e];return{key:e,enabled:V!==!1,variant:typeof V=="string"?V:void 0,payload:B}}let{groups:s,disableGeoip:r}=i,{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=i,I=this.addLocalPersonAndGroupProperties(t,s,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(t,s,this.personPropertiesForLocalEvaluation(t,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let u,c=!1,C,A,m,p,Z,W,h;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let V=this.featureFlagsPoller?.featureFlagsByKey[e];if(V)try{let B=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(V,d,{matchValue:n});if(B){c=!0;let F=B.value;p=V.id,W="Evaluated locally",h=V.has_experiment,u={key:e,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:B.payload??void 0}}}catch(B){if(B instanceof gt||B instanceof x)this._logger?.info(`${B.name} when computing flag locally: ${e}: ${B.message}`);else throw B}}if(!c&&!g){let V=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,a,l,r,[e]);if(V===void 0)m=ft.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=V.minimalFlagCalledEvents===!0,C=V.requestId,A=V.evaluatedAt;let B=[];if(V.errorsWhileComputingFlags)B.push(ft.ERRORS_WHILE_COMPUTING);if(V.quotaLimited?.includes("feature_flags"))B.push(ft.QUOTA_LIMITED);let F=V.flags[e];if(F===void 0)B.push(ft.FLAG_MISSING);else{p=F.metadata?.id,Z=F.metadata?.version,W=F.reason?.description??F.reason?.code,h=F.metadata?.has_experiment;let R;if(F.metadata?.payload!==void 0)try{R=JSON.parse(F.metadata.payload)}catch{R=F.metadata.payload}u={key:e,enabled:F.enabled,variant:F.variant,payload:R}}if(B.length>0)m=B.join(",")}}if(o){let V=u===void 0?void 0:u.enabled===!1?!1:u.variant??!0,B={$feature_flag:e,$feature_flag_response:V,$feature_flag_id:p,$feature_flag_version:Z,$feature_flag_reason:W,locally_evaluated:c,[`$feature/${e}`]:V,$feature_flag_request_id:C,$feature_flag_evaluated_at:c?Date.now():A};if(h!==void 0)B.$feature_flag_has_experiment=h;if(c&&this.featureFlagsPoller){let F=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(F!==void 0)B.$feature_flag_definitions_loaded_at=F}if(m)B.$feature_flag_error=m;this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:V,groups:s,disableGeoip:r,properties:B})}if(u!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides)u={...u,payload:this._payloadOverrides[e]};return u}async getFeatureFlag(e,t,i){Ms("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return n.variant??!0}async getFeatureFlagPayload(e,t,i,n){if(Ms("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let o=await this._getFeatureFlagResult(e,t,{...n,sendFeatureFlagEvents:!1},i);if(o===void 0)return;return o.payload??null}async getFeatureFlagResult(e,t,i){let{distinctId:n,options:o}=this._resolveDistinctId(t,i);if(!n)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult(e,n,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let i=await t.json();if(typeof i=="string")try{return JSON.parse(i)}catch(n){}return i}async isFeatureEnabled(e,t,i){Ms("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return!!(n.variant??!0)||!1}async getAllFlags(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(i,n)).featureFlags||{}}async getAllFlagsAndPayloads(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:r}=n||{},{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=n||{},I=this.addLocalPersonAndGroupProperties(i,o,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(i,o,this.personPropertiesForLocalEvaluation(i,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let u=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,r),c={},C={},A=!0;if(u)c=u.response,C=u.payloads,A=u.fallbackToFlags;if(A&&!g){let m=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,a,l,s,r);c={...c,...m.flags||{}},C={...C,...m.payloads||{}}}if(this._flagOverrides!==void 0)c={...c,...this._flagOverrides};if(this._payloadOverrides!==void 0)C={...C,...this._payloadOverrides};return{featureFlags:c,featureFlagPayloads:C}}async evaluateFlags(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new gi({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new gi({host:this._getFeatureFlagEvaluationsHost(),distinctId:i,flags:{}});let{groups:o,disableGeoip:s,flagKeys:r}=n||{},{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=n||{},I=this.addLocalPersonAndGroupProperties(i,o,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(i,o,this.personPropertiesForLocalEvaluation(i,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let u={},c,C,A=!1,m=!1,p=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,r),Z=new Set;if(p)for(let[h,f]of Object.entries(p.response)){let V=this.featureFlagsPoller?.featureFlagsByKey[h];u[h]={key:h,enabled:f!==!1,variant:typeof f=="string"?f:void 0,payload:p.payloads[h],id:V?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:V?.has_experiment},Z.add(h)}if((p?p.fallbackToFlags:!0)&&!g){let h=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,a,l,s,r);if(h){this._minimalFlagCalledEvents=h.minimalFlagCalledEvents===!0,c=h.requestId,C=h.evaluatedAt,A=Boolean(h.errorsWhileComputingFlags),m=Array.isArray(h.quotaLimited)&&h.quotaLimited.includes("feature_flags");for(let[f,V]of Object.entries(h.flags)){if(Z.has(f))continue;let B;if(V.metadata?.payload!==void 0)try{B=JSON.parse(V.metadata.payload)}catch{B=V.metadata.payload}u[f]={key:f,enabled:V.enabled,variant:V.variant,payload:B,id:V.metadata?.id,version:V.metadata?.version,reason:V.reason?.description??V.reason?.code,locallyEvaluated:!1,hasExperiment:V.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[h,f]of Object.entries(this._flagOverrides)){if(f===void 0){delete u[h];continue}let V=u[h];u[h]={key:h,enabled:f!==!1,variant:typeof f=="string"?f:void 0,payload:V?.payload,id:V?.id,version:V?.version,reason:V?.reason,locallyEvaluated:V?.locallyEvaluated??!1,hasExperiment:V?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[h,f]of Object.entries(this._payloadOverrides)){let V=u[h];if(V)u[h]={...V,payload:f}}return new gi({host:this._getFeatureFlagEvaluationsHost(),distinctId:i,groups:o,disableGeoip:s,flags:u,requestId:c,evaluatedAt:C,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:A,quotaLimited:m})}_shouldSendMinimalFlagCalledEvent(e,t){return e==="$feature_flag_called"&&this._minimalFlagCalledEvents&&t.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:i,response:n,groups:o,disableGeoip:s,properties:r}=e,g=o&&Object.keys(o).length>0?`_${JSON.stringify(Object.entries(o).sort(([l],[I])=>l<I?-1:l>I?1:0))}`:"",a=`${i}_${n}${g}`;if(t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(a))return;if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(this.distinctIdHasSentFlagCalls[t]instanceof Set)this.distinctIdHasSentFlagCalls[t].add(a);else this.distinctIdHasSentFlagCalls[t]=new Set([a]);this.capture({distinctId:t,event:"$feature_flag_called",properties:r,groups:o,disableGeoip:s})}_getFeatureFlagEvaluationsHost(){if(!this._featureFlagEvaluationsHost)this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:(e)=>this._captureFlagCalledEventIfNeeded(e),logWarning:(e)=>{if(this.options.featureFlagsLogWarnings!==!1)console.warn(`[PostHog] ${e}`)}};return this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:i,distinctId:n,disableGeoip:o}){this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:o},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:i,distinctId:n,disableGeoip:o}){await this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:o},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=(i)=>Object.fromEntries(i.map((n)=>[n,!0]));if(e===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){if("flags"in e){if(e.flags===!1)this._flagOverrides=void 0;else if(Array.isArray(e.flags))this._flagOverrides=t(e.flags);else if(e.flags!==void 0)this._flagOverrides={...e.flags}}if("payloads"in e){if(e.payloads===!1)this._payloadOverrides=void 0;else if(e.payloads!==void 0)this._payloadOverrides={...e.payloads}}return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if("flags"in t){let i=t.flags;if(i===!1||Array.isArray(i)||typeof i=="object"&&i!==null)return!0}if("payloads"in t){let i=t.payloads;if(i===!1||typeof i=="object"&&i!==null)return!0}return!1}withContext(e,t,i){if(!this.context)return t();return this.context.run(e,t,i)}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??30000),i=this._consumeWaitUntilCycle();if(await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics)await Promise.race([this._metrics.flush().catch(()=>{}),new Promise((n)=>de(n,Math.max(0,t-Date.now())))]),this._metrics.reset();try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},i?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},n=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;n=de(()=>{o.abort()},this.options.requestTimeout),i.signal=o.signal}try{return await this.fetch(t,i)}catch(o){this._events.emit("error",o);return}finally{if(n)clearTimeout(n)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let i={},n={};for(let[o,s]of Object.entries(e))if(wp(s)&&t&&o in t){let r={};for(let[g,a]of Object.entries(s))r[String(g)]=String(a);n[String(o)]=r}else i[String(o)]=String(s);return{personProperties:i,groupProperties:n}}async getFeatureFlagsForEvent(e,t,i,n){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let o=n?.personProperties||{},s=n?.groupProperties||{},r=n?.flagKeys;if(n?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let a={};for(let[l,I]of Object.entries(t||{}))a[l]=String(I);return await this.getAllFlags(e,{groups:a,personProperties:o,groupProperties:s,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:r})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let a={};for(let[l,I]of Object.entries(t||{}))a[l]=String(I);return await this.getAllFlags(e,{groups:a,personProperties:o,groupProperties:s,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:r})}return(await super.getFeatureFlagsStateless(e,t,o,s,i)).flags}addLocalPersonAndGroupProperties(e,t,i,n){let o={...i||{}},s={};if(t)for(let r of Object.keys(t))s[r]={$group_key:t[r],...n?.[r]||{}};return{allPersonProperties:o,allGroupProperties:s}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,i,n){return{distinctId:e,groups:t||{},personProperties:i||{},groupProperties:n||{},evaluationCache:{}}}captureException(e,t,i,n,o){if(!at.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");this.addPendingPromise(at.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,i).then((r)=>this._capturePreparedEvent({...r,uuid:n,flags:o},!1)))}}async captureExceptionImmediate(e,t,i,n){if(!at.isPreviouslyCapturedError(e)){let o=Error("PostHog syntheticException");return this.addPendingPromise(at.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:o},t,i).then((s)=>this.captureImmediate({...s,flags:n})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:i,event:n,properties:o,groups:s,flags:r,sendFeatureFlags:g,timestamp:a,disableGeoip:l,uuid:I}=e,d=this.context?.get(),u=t.includeContextProperties??!0,c=i||d?.distinctId,C=u?{...this.props,...d?.properties||{},...o||{}}:{...o||{}};if(!c)c=we(),C.$process_person_profile=!1;if(u&&d?.sessionId&&!C.$session_id)C.$session_id=d.sessionId;let A=this._shouldSendMinimalFlagCalledEvent(n,C)?eo(C):C,m=this._runBeforeSend({distinctId:c,event:n,properties:A,groups:s,flags:r,sendFeatureFlags:g,timestamp:a,disableGeoip:l,uuid:I});if(!m)return Promise.reject(null);let p=await Promise.resolve().then(async()=>{if(r){if(g)console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`.");return r._getEventProperties()}if(g){Ms("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let Z=typeof g=="object"?g:void 0,W=await this.getFeatureFlagsForEvent(m.distinctId,s,l,Z);return JP(W)}return{}}).catch(()=>({})).then((Z)=>{let W=m.groups||s;return{...Z,...m.properties||{},...W!==void 0&&Object.keys(W).length>0?{$groups:W}:{}}});if(m.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof p.$raw_user_agent=="string"){if(hp(p.$raw_user_agent,this.options.custom_blocked_useragents||[]))m.event="$bot_pageview",p.$browser_type="bot"}return{distinctId:m.distinctId,event:m.event,properties:p,options:{timestamp:m.timestamp,disableGeoip:m.disableGeoip,uuid:m.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let i=Array.isArray(t)?t:[t],n=e;for(let o of i){if(n=o(n),!n)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!n.properties||Object.keys(n.properties).length===0){let s=`Event '${n.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return n}}var DA=require("async_hooks");class jl{constructor(){this.storage=new DA.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,i){return this.storage.run(this.resolve(e,i),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let i=this.get()||{};return{distinctId:e.distinctId??i.distinctId,sessionId:e.sessionId??i.sessionId,properties:{...i.properties||{},...e.properties||{}}}}}function EP(e,{organization:t,projectId:i,prefix:n,severityAllowList:o=["error"],sendExceptionsToPostHog:s=!0}={}){return(r)=>{if(!(o==="*"||o.includes(r.level)))return r;if(!r.tags)r.tags={};let a=r.tags[QA.POSTHOG_ID_TAG];if(a===void 0)return r;let l=e.options.host??"https://us.i.posthog.com",I=new URL(`/project/${e.apiKey}/person/${a}`,l).toString();r.tags["PostHog Person URL"]=I;let d=r.exception?.values||[],u=d.map((C)=>({...C,stacktrace:C.stacktrace?{...C.stacktrace,type:"raw",frames:(C.stacktrace.frames||[]).map((A)=>({...A,platform:"node:javascript"}))}:void 0})),c={$exception_message:d[0]?.value||r.message,$exception_type:d[0]?.type,$exception_level:r.level,$exception_list:u,$sentry_event_id:r.event_id,$sentry_exception:r.exception,$sentry_exception_message:d[0]?.value||r.message,$sentry_exception_type:d[0]?.type,$sentry_tags:r.tags};if(t&&i)c.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+i+"&query="+r.event_id;if(s)e.capture({event:"$exception",distinctId:a,properties:c});return r}}class QA{static#i=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,i,n,o){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(s,r){let g=r()?.getClient()?.getDsn()?.projectId;s(EP(e,{organization:t,projectId:g,prefix:i,severityAllowList:n,sendExceptionsToPostHog:o??!0}))}}}class Dl extends zl{getLibraryId(){return"posthog-node"}initializeContext(){return new jl}createErrorPropertiesBuilder(){return new Ve.ErrorPropertiesBuilder([new Ve.EventCoercer,new Ve.ErrorCoercer,new Ve.ObjectCoercer,new Ve.StringCoercer,new Ve.PrimitiveCoercer],Ve.createStackParser("node:javascript",Ve.nodeStackLineParser),[Zp(),VA,GA()])}}var Se=(e)=>{if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"},Mi=(e)=>{if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="0"||t==="false"||t==="no"||t==="off"};var ie=require("fs/promises"),Ce=require("path");var $s={name:"@toloka-platform/sdk",version:"0.1.0-preview.8",private:!1,description:"Preview. Build, inspect, and operate Toloka pipeline projects as TypeScript source. The public API may change.",license:"Apache-2.0",bin:{toloka:"bin/toloka.js"},files:["README.md","bin","docs","dist","examples","openapi/gen","skills","src"],type:"module",main:"./src/index.ts",exports:{".":"./src/index.ts","./testing":"./src/testing/index.ts","./checks":"./src/checks/index.ts","./examples/face-image-collection":"./examples/face-image-collection/pipeline.ts"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/",tag:"preview"},scripts:{build:"bun ./scripts/build-cli.ts ./dist/cli",generate:"orval --config ./openapi/orval.config.js",prepack:"bun run build","sync-skill-catalog":"bun ./scripts/sync-skill-catalog.ts","sync-task-ui-declarations":"bun ./scripts/sync-task-ui-declarations.ts",test:"vitest run","test:browser":"vitest run --config vitest.browser.config.ts",typecheck:"tsc --noEmit"},dependencies:{"@inquirer/select":"5.2.1","@typescript/vfs":"1.6.2",ajv:"8.17.1","ajv-formats":"3.0.1",commander:"15.0.0","es-toolkit":"1.42.0","jsonpath-rfc9535":"1.3.0","oxc-parser":"0.138.0","posthog-node":"5.46.1","typescript-api":"npm:typescript@6.0.3"},devDependencies:{"@types/node":"24.10.1",orval:"7.17.0",playwright:"1.56.1",typescript:"7.0.2",vitest:"4.1.0",yaml:"2.9.0"},peerDependencies:{playwright:">=1.56.1 <2",vitest:">=4.1.0 <5"},peerDependenciesMeta:{playwright:{optional:!0},vitest:{optional:!0}},engines:{bun:"1.4.0"}};var _A=require("fs/promises"),KA=require("path"),qs=(e,...t)=>e instanceof Error&&("code"in e)&&typeof e.code==="string"&&t.includes(e.code),er=(e)=>qs(e,"ENOENT"),$i=async(e)=>{try{return await _A.lstat(e)}catch(t){if(er(t))return;throw t}},Co=async(e,t,i="write")=>{let n=e;for(let o of t.split("/")){n=KA.join(n,o);let s=await $i(n);if(s===void 0)return;b(!s.isSymbolicLink(),`Refusing to ${i} through symbolic link ${n}.`)}};var qA=require("crypto"),q=require("fs/promises"),ce=require("path"),eZ=require("url");var OP=(e)=>{let t=typeof e.body==="string"?e.body:e.body===void 0?void 0:JSON.stringify(e.body);return t===void 0||t.length===0?void 0:t},uo=(e)=>{if(e instanceof te){let t=OP(e);return t===void 0?e.message:`${e.message}
|
|
141
|
+
${t}`}return e instanceof Error?e.message:String(e)};var Ql=eZ.fileURLToPath(new URL("../../skills","file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/skill.ts")),tr="catalog.json",en=".agents/skills",qi="SKILL.md",tZ="skills",LA=500,MA=1048576,iZ=64,TP=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u,zP=/^[a-f0-9]{64}$/u,nZ=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),$A=(e)=>Array.isArray(e)&&e.every((t)=>typeof t==="string"),_l=(e)=>typeof e==="string"&&e.trim().length>0,jP=(e)=>typeof e==="string"&&e.length<=iZ&&TP.test(e),DP=(e)=>!e.includes("\\")&&!e.includes("\x00")&&e.split("/").every((t)=>t.length>0&&t!=="."&&t!==".."),QP=(e,t)=>{b(nZ(e),t("every skill must be an object."));let{id:i,name:n,description:o,tags:s,version:r,digest:g,files:a}=e;return b(jP(i),t(`skill id ${JSON.stringify(i)} must be at most ${iZ} lowercase letters, digits, and single hyphens.`)),b(_l(n),t(`skill ${i} needs a name.`)),b(_l(o),t(`skill ${i} needs a description.`)),b($A(s),t(`skill ${i} tags must be strings.`)),b(_l(r),t(`skill ${i} needs a version.`)),b(typeof g==="string"&&zP.test(g),t(`skill ${i} digest must be the sha256 hex digest of its files.`)),b($A(a)&&a.includes(qi),t(`skill ${i} files must include ${qi}.`)),b(a.every(DP),t(`skill ${i} files must be relative paths inside its directory.`)),b(new Set(a).size===a.length,t(`skill ${i} lists a file more than once.`)),{id:i,name:n,description:o,tags:s,version:r,digest:g,files:a}},_P=(e,t)=>{try{return JSON.parse(e)}catch(i){throw Error(`Invalid skill catalog ${t}: ${uo(i)}`)}},oZ=async(e)=>{try{return(await q.stat(e)).isFile()}catch(t){if(qs(t,"ENOENT","ENOTDIR"))return!1;throw t}},sZ=async(e)=>{let t=ce.join(e,tZ);if(await oZ(ce.join(t,tr)))return t;let i=ce.dirname(e);return i===e?void 0:sZ(i)};async function KP(e=process.argv[1]){let t=e===void 0?void 0:await q.realpath(e),i=t===void 0?void 0:await sZ(ce.dirname(t));if(i!==void 0)return i;let n=t===void 0?"process.argv[1] names no runtime entry":`none exists between ${t} and the filesystem root`;return b(await oZ(ce.join(Ql,tr)),`Cannot locate the bundled skill catalog. An installed @toloka-platform/sdk must ship ${tZ}/${tr} in a directory above its runtime entry, but ${n}, and the source checkout catalog ${Ql} is absent. Reinstall @toloka-platform/sdk.`),Ql}var Kl=async()=>LP(await KP());async function LP(e){let t=ce.join(e,tr),i=(g)=>`Invalid skill catalog ${t}: ${g}`,{size:n}=await q.stat(t);b(n<=MA,i(`the manifest is ${n} bytes; the limit is ${MA} bytes.`));let o=_P(await q.readFile(t,"utf8"),t);b(nZ(o)&&Array.isArray(o.skills),i("expected an object with a skills array.")),b(o.skills.length<=LA,i(`${o.skills.length} skills exceed the limit of ${LA}.`));let s=o.skills.map((g)=>QP(g,i)),r=new Set;for(let g of s)b(!r.has(g.id),i(`skill id ${g.id} appears more than once.`)),r.add(g.id);return{root:e,manifestPath:t,skills:s}}async function rZ(e,t){let i=qA.createHash("sha256");for(let n of t.toSorted())i.update(n),i.update("\x00"),i.update(await q.readFile(ce.join(e,n))),i.update("\x00");return i.digest("hex")}var MP=(e,t)=>{let i=t.trim().toLowerCase().split(/\s+/u).filter(Boolean);if(i.length===0)return[];return e.map((n,o)=>{let s=[n.id,n.name,n.description,...n.tags].join(`
|
|
142
|
+
`).toLowerCase();return{skill:n,index:o,score:i.filter((r)=>s.includes(r)).length}}).filter(({score:n})=>n>0).toSorted((n,o)=>o.score-n.score||n.index-o.index).map(({skill:n})=>n)};async function $P(e,t){let i=ce.join(e,en,t.id);if(await $i(i)===void 0)return"not-installed";try{return await rZ(i,t.files)===t.digest?"current":"stale"}catch(n){if(qs(n,"ENOENT","ENOTDIR"))return"stale";throw n}}var gZ=({sourceRoot:e,skills:t})=>Promise.all(t.map(async(i)=>({...i,status:await $P(e,i)}))),qP=async(e,t,i,n)=>{await e(i,n);try{await e(t,i)}catch(o){try{await e(n,i)}catch(s){throw Error(`Failed to replace ${i}; the previous version is preserved at ${n}. ${uo(s)}`,{cause:o})}throw o}await q.rm(n,{recursive:!0,force:!0})};async function eY({catalog:e,sourceRoot:t,skillId:i,force:n=!1,rename:o=q.rename}){let s=e.skills.find((d)=>d.id===i);b(s,`Skill ${JSON.stringify(i)} is not in the catalog. Run \`toloka skill list\` to see the available skills.`);let r=`${en}/${s.id}`;await Co(t,r);let g=ce.join(t,r),a=await $i(g);b(a===void 0||n,`${r} already exists. Re-run with --force to replace it with the catalog version of ${s.id}.`);let l=ce.dirname(g);await q.mkdir(l,{recursive:!0});let I=await q.mkdtemp(ce.join(l,`.${s.id}.tmp-`));try{for(let d of s.files){let u=ce.join(I,d);await q.mkdir(ce.dirname(u),{recursive:!0}),await q.copyFile(ce.join(e.root,s.id,d),u)}if(b(await rZ(I,s.files)===s.digest,`Skill ${s.id} failed its digest check: the packaged files do not match the catalog digest ${s.digest}. Nothing was installed.`),a===void 0)await o(I,g);else await qP(o,I,g,`${I}.backup`)}catch(d){throw await q.rm(I,{recursive:!0,force:!0}),d}return{skill:s,directory:g,replaced:a!==void 0}}var aZ=(e,t)=>{if(t)return JSON.stringify(e,void 0,2);let i=Math.max(...e.map((o)=>o.id.length)),n=Math.max(...e.map((o)=>o.status.length));return e.flatMap((o)=>[`${o.id.padEnd(i)} ${o.status.padEnd(n)} ${o.name}`,` ${o.description}`]).join(`
|
|
143
|
+
`)};async function lZ({sourceRoot:e,json:t,io:i}){let n=await Kl();i.stdout(aZ(await gZ({sourceRoot:e,skills:n.skills}),t))}async function IZ({sourceRoot:e,query:t,json:i,io:n}){let o=await Kl(),s=await gZ({sourceRoot:e,skills:MP(o.skills,t)});if(i||s.length>0){n.stdout(aZ(s,i));return}n.stdout(`No skills match ${JSON.stringify(t)}. Run \`toloka skill list\` to see the catalog.`)}async function dZ({sourceRoot:e,skillId:t,force:i,io:n}){let o=await Kl(),s=await eY({catalog:o,sourceRoot:e,skillId:t,force:i}),r=`${en}/${s.skill.id}`,g=s.skill.files.length;n.stdout(`${s.replaced?"Replaced":"Installed"} ${s.skill.id} in ${r} (${g} ${g===1?"file":"files"}). Start with ${r}/${qi}.`)}var Fe=$s.version,_e="@toloka-platform/sdk",ql="toloka-bootstrap",CZ=`.claude/skills/${ql}/SKILL.md`,uZ=`.cursor/rules/${ql}.mdc`,ai="AGENTS.md",tY=[CZ,uZ,ai],tn={begin:"<toloka>",end:"</toloka>"},Ll={begin:"<!-- toloka:begin -->",end:"<!-- toloka:end -->"},Ml=/<!-- toloka:sdk-version ([^\s>]+) -->/u,mZ=["toloka-build","toloka-pipeline-as-code"].flatMap((e)=>[{file:`.claude/skills/${e}/SKILL.md`,directory:`.claude/skills/${e}`},{file:`.cursor/rules/${e}.mdc`}]),nn=async(e)=>{try{return await ie.readFile(e,"utf8")}catch(t){if(er(t))return;throw t}},$l=async(e)=>{try{return(await ie.lstat(e)).isDirectory()}catch(t){if(er(t))return!1;throw t}},eI=(e)=>Ml.test(e),pZ=`Generated by \`${_e}\` version \`${Fe}\`.
|
|
144
|
+
<!-- toloka:sdk-version ${Fe} -->`,iY=`${tn.begin}
|
|
59
145
|
|
|
60
146
|
## Toloka Agent Bootstrap
|
|
61
147
|
|
|
62
|
-
${
|
|
148
|
+
${pZ}
|
|
63
149
|
Re-run \`toloka init\` to refresh this block. Keep your own instructions outside it.
|
|
64
150
|
|
|
65
151
|
This repository works with the Toloka platform through the \`toloka\` CLI. Before starting a Toloka task:
|
|
66
152
|
|
|
67
153
|
1. Run \`toloka --help\`, then \`toloka <resource> --help\` for the resource you need.
|
|
68
154
|
2. Run \`toloka skill search <query>\` to find a bundled skill for the task; \`toloka skill list\` shows every skill and whether it is installed.
|
|
69
|
-
3. Run \`toloka skill install <skill-id>\` and read \`${
|
|
155
|
+
3. Run \`toloka skill install <skill-id>\` and read \`${en}/<skill-id>/${qi}\` before acting; add \`--force\` to refresh a stale skill.
|
|
70
156
|
4. Follow the installed skill. When no skill matches, continue with the CLI help and never invent commands or SDK helpers.
|
|
71
157
|
5. To report a Toloka platform problem or unexpected failure to support, run \`toloka skill search report-issue\` and install \`toloka-report-issue\` before collecting evidence.
|
|
72
158
|
|
|
73
|
-
${
|
|
159
|
+
${tn.end}`,AZ=`# Toloka Agent Bootstrap pointer
|
|
74
160
|
|
|
75
|
-
${
|
|
161
|
+
${pZ}
|
|
76
162
|
|
|
77
|
-
Read the \`${
|
|
78
|
-
`,
|
|
79
|
-
name: ${
|
|
80
|
-
description: Toloka platform work with the toloka CLI and ${
|
|
163
|
+
Read the \`${tn.begin}\` block in \`${ai}\` at the source root and follow it before doing Toloka work. It tells you to run \`toloka --help\`, search the bundled Skill Catalog with \`toloka skill search <query>\`, install the match with \`toloka skill install <skill-id>\`, and read \`${en}/<skill-id>/${qi}\` before acting.
|
|
164
|
+
`,nY=`---
|
|
165
|
+
name: ${ql}
|
|
166
|
+
description: Toloka platform work with the toloka CLI and ${_e}, such as pipeline projects, datasets, runs, secrets, and issue reporting. Use when the user mentions Toloka or the toloka CLI. Start by reading the ${tn.begin} Agent Bootstrap block in ${ai}, then find and install the matching skill.
|
|
81
167
|
---
|
|
82
168
|
|
|
83
|
-
${
|
|
84
|
-
description: Toloka Agent Bootstrap pointer for the toloka CLI and ${
|
|
169
|
+
${AZ}`,oY=`---
|
|
170
|
+
description: Toloka Agent Bootstrap pointer for the toloka CLI and ${_e}
|
|
85
171
|
alwaysApply: true
|
|
86
172
|
---
|
|
87
173
|
|
|
88
|
-
${
|
|
174
|
+
${AZ}`,cZ=(e,t,i)=>{let n=e.indexOf(t.begin),o=e.indexOf(t.end);if(n===-1&&o===-1)return;return b(n!==-1&&o!==-1&&n<o,`Malformed Toloka block in ${i}: expected one ${t.begin} followed by one ${t.end}. Repair the file by hand, then re-run \`toloka init\`.`),b(!e.includes(t.begin,n+t.begin.length)&&!e.includes(t.end,o+t.end.length),`Multiple Toloka blocks in ${i}: keep exactly one ${t.begin} ... ${t.end} block, then re-run \`toloka init\`.`),{beginIndex:n,endIndex:o+t.end.length}},sY=(e,t)=>{let i=cZ(e,tn,t),n=cZ(e,Ll,t);b(i===void 0||n===void 0,`Ambiguous Toloka blocks in ${t}: both ${tn.begin} and ${Ll.begin} are present. Keep one, then re-run \`toloka init\`.`);let o=e.includes(`\r
|
|
89
175
|
`)?`\r
|
|
90
176
|
`:`
|
|
91
|
-
`,s=
|
|
92
|
-
`,
|
|
93
|
-
`),
|
|
94
|
-
`,{mode:384}),await
|
|
95
|
-
${
|
|
177
|
+
`,s=iY.replaceAll(`
|
|
178
|
+
`,o),r=i??n;if(r!==void 0)return`${e.slice(0,r.beginIndex)}${s}${e.slice(r.endIndex)}`;if(e.length===0)return`${s}${o}`;let g=e.endsWith(`${o}${o}`)?"":e.endsWith(o)?o:`${o}${o}`;return`${e}${g}${s}${o}`},rY=async(e)=>{if(await $l(Ce.join(e,"node_modules",_e)))return!0;let t=await nn(Ce.join(e,"package.json"));if(t===void 0)return!1;let i=JSON.parse(t);return b(typeof i==="object"&&i!==null,"package.json must contain a JSON object."),["dependencies","devDependencies"].some((n)=>{let o=Reflect.get(i,n);return typeof o==="object"&&o!==null&&typeof Reflect.get(o,_e)==="string"})},gY=async(e,t)=>{if(await nn(e)===t)return!1;return await ie.mkdir(Ce.dirname(e),{recursive:!0}),await ie.writeFile(e,t,"utf8"),!0},aY=async(e,t)=>{let i=Ce.join(e,t),n=await nn(i);b(n===void 0||eI(n),`Refusing to overwrite ${i}: it carries no \`<!-- toloka:sdk-version ... -->\` marker, so it is not a pointer generated by ${_e}. Move it aside, then re-run \`toloka init\`.`)},lY=async(e)=>(await Promise.all(mZ.map(async(i)=>{let n=Ce.join(e,i.file);if(await $i(n)===void 0)return;return await Co(e,i.file,"remove legacy agent entry point"),eI(await ie.readFile(n,"utf8"))?i:void 0}))).filter((i)=>i!==void 0),IY=async(e,t)=>{if(await ie.rm(Ce.join(e,t.file),{force:!0}),t.directory===void 0)return;let i=Ce.join(e,t.directory);if((await ie.readdir(i)).length===0)await ie.rmdir(i)},dY=(e,t,i,n)=>[`${i.length===0&&n.length===0?"Agent entry points are up to date":"Initialized agent entry points"} for ${_e} ${Fe} in ${e}:`,...t.map((o)=>` ${o}`),...n.map((o)=>` removed ${o} (replaced by the ${ai} Agent Bootstrap)`)].join(`
|
|
179
|
+
`),cY=async(e,t)=>{if(t===void 0)return;let i=await Re(e);if(b(i===void 0||i.projectId===t,`This directory is already bound to ${i?.projectId}.`),i!==void 0)return;return await Lt(e,{projectId:t,pipelines:{},datasets:{}}),"toloka.json"};async function ZZ(e,t={}){await ie.mkdir(e,{recursive:!0});let i=await ie.realpath(e),n=Ce.join(i,ai),o=await nn(n),s=sY(o??"",n),[r,g]=await Promise.all([$l(Ce.join(i,".claude")),$l(Ce.join(i,".cursor","rules"))]),l=[...r||!r&&!g&&o===void 0?[{relativePath:CZ,source:nY}]:[],...g?[{relativePath:uZ,source:oY}]:[]],I=[...l,{relativePath:ai,source:s}];await Promise.all(I.map((Z)=>Co(i,Z.relativePath))),await Promise.all(l.map((Z)=>aY(i,Z.relativePath)));let d=await lY(i),u=await cY(i,t.projectId),c=u===void 0?[]:[u];for(let Z of I)if(await gY(Ce.join(i,Z.relativePath),Z.source))c.push(Z.relativePath);for(let Z of d)await IY(i,Z);let C=d.map((Z)=>Z.file),A=await rY(i),m=[...I.map((Z)=>Z.relativePath),...u===void 0?[]:[u]],p=A?void 0:`Warning: ${_e} is not listed in dependencies or devDependencies in ${Ce.join(i,"package.json")}. Run \`bun add --dev ${_e}\` before using \`toloka\`, then re-run \`toloka init\`.`;return{targetDirectory:i,files:m,writtenFiles:c,removedFiles:C,sdkVersion:Fe,dependencyReady:A,output:dY(i,m,c,C),...p===void 0?{}:{warning:p}}}async function bZ(e){let t=[],i=new Set,n=(s,r)=>{t.push(s);let g=Ml.exec(r)?.[1];if(g!==void 0)i.add(g)};for(let{file:s}of mZ){let r=await nn(Ce.join(e,s));if(r!==void 0&&eI(r))n(s,r)}for(let s of tY){let r=await nn(Ce.join(e,s));if(r===void 0)continue;let g=Ml.exec(r)?.[1];if(r.includes(Ll.begin)||g!==void 0&&g!==Fe)n(s,r)}if(t.length===0)return;return`Warning: Agent instructions generated by ${i.size===0?`an earlier ${_e} build`:`${_e} ${[...i].toSorted().join(", ")}`} are out of date (${t.join(", ")}). The installed ${Fe} manages one Agent Bootstrap in ${ai} plus pointer files. Re-run \`toloka init\`.`}var CY="phc_kqHt0f53B5MVqURyzWpW1aNlbOmYt1YbUYza0JPcg19",uY="https://eu.posthog.com",mY={"--source-root":!0,"--api-key":!0,"--base-url":!0,"--project-id":!0};function pY(e){let t=e.TOLOKA_TELEMETRY??process.env.TOLOKA_TELEMETRY;if(Mi(t))return!1;if(Se(t))return!0;if(Se(e.DO_NOT_TRACK??process.env.DO_NOT_TRACK))return!1;if(Se(e.CI??process.env.CI))return!1;if(Se(process.env.VITEST))return!1;return!0}var AY={project:{list:!0,add:!0,switch:!0,current:!0,remove:!0,create:!0},pipeline:{list:!0,run:!0,status:!0,runs:!0,cost:!0,cancel:!0,results:!0},dataset:{list:!0,fields:!0,load:!0,upload:!0},secret:{set:!0},skill:{list:!0,search:!0,install:!0},config:{get:!0,set:!0}},ZY={apply:!0,check:!0,"auth-status":!0,config:!0,help:!0,import:!0,init:!0,login:!0,logout:!0,plan:!0,status:!0,validate:!0,report:!0,version:!0,whoami:!0},tI=(e)=>{let t=e[0];if(t===void 0)return"help";let i=AY[t];if(i===void 0)return ZY[t]===!0?t:"unknown";let n=e[1];return n!==void 0&&i[n]===!0?`${t} ${n}`:t};function nr(e){if(e.includes("-v")||e.includes("--version"))return"version";let t=[];for(let i=0;i<e.length;i+=1){let n=e[i];if(n===void 0)continue;if(n==="--help"||n==="-h")break;if(n.startsWith("-")){if(mY[n]===!0)i+=1;continue}t.push(n)}return tI(t)}function bY(e){if(e===void 0)return{error_code:"command_failed"};if(e instanceof te||e instanceof Zi)return{error_code:e.code};return{error_code:e instanceof Error?"error":"unknown"}}var WY=(e)=>ir.join(ir.dirname(Ne(e)),"anonymous-id"),hY=async(e)=>{let t=WY(e);await ei(t);try{let n=(await li.readFile(t,"utf8")).trim();if(n.length>0)return await li.chmod(t,384),n}catch(n){if(!(n instanceof Error&&("code"in n)&&n.code==="ENOENT"))throw n}let i=WZ.randomUUID();return await li.writeFile(t,`${i}
|
|
180
|
+
`,{mode:384}),await li.chmod(t,384),i},fY=()=>({shouldIdentify:!1,issueReportingEnabled:!1,identifyCurrentUser(){},captureCommand(){},async submitIssueReport(){b(!1,"Issue reporting is disabled. Re-run with TOLOKA_TELEMETRY=1.")},async shutdown(){}});function hZ(e){let{environment:t}=e;if(e.client===void 0&&!pY(t))return fY();let{client:i,distinctId:n}=e,o,s=[],r=(I)=>{s.push(I)};i?.on?.("error",r);let g=async()=>{if(i!==void 0&&n!==void 0)return;if(i===void 0){let I=new Dl(CY,{host:uY,flushAt:1,flushInterval:0});I.on("error",r),i=I}n??=await hY(t)},a=()=>({sdk_version:Fe,bun_version:typeof process.versions.bun==="string"?process.versions.bun:void 0,actor:"user",channel:"cli"}),l=g().catch(()=>{});return{issueReportingEnabled:!0,shouldIdentify:!0,identifyCurrentUser(I){l=l.then(()=>{if(i===void 0||n===void 0)return;if(o===I.id)return;if(o=I.id,n!==I.id)i.alias({distinctId:I.id,alias:n});n=I.id}).catch(()=>{})},captureCommand(I){l=l.then(()=>{if(i===void 0||n===void 0)return;let d=a();if(I.outcome==="failed"){let u=bY(I.error);i.capture({distinctId:n,event:"sdk_cli_command_failed",disableGeoip:!0,properties:{...d,command:tI(I.command.split(" ")),duration_ms:I.durationMs,exit_code:I.exitCode,...u}});return}i.capture({distinctId:n,event:"sdk_cli_command_completed",disableGeoip:!0,properties:{...d,command:tI(I.command.split(" ")),duration_ms:I.durationMs,exit_code:I.exitCode,outcome:I.outcome}})}).catch(()=>{})},submitIssueReport(I){let d=l.then(async()=>{b(i&&n,"PostHog issue reporting could not be initialized."),s.length=0,i.capture({distinctId:n,event:"sdk_cli_issue_report_submitted",disableGeoip:!0,properties:{...a(),report_id:I.reportId,report_text:I.reportText,report_length_bytes:new TextEncoder().encode(I.reportText).length,authored_by:I.authoredBy,platform:I.platform,$process_person_profile:!1}}),await i.flush();let u=s[0];if(s.length=0,u!==void 0)throw u});return l=d.catch(()=>{}),d},async shutdown(){try{await l,await i?.shutdown(2000)}catch{}}}}var rI=require("child_process"),sr=require("events"),HZ=require("fs"),gn=require("fs/promises"),rn=require("path"),vZ=require("url");var sn=require("fs/promises"),fZ=require("path");var on="auto-update",yZ={autoUpdate:!0};class or extends Error{constructor(e,t){super(e,t);this.name="SettingsError"}}var VZ=(e=process.env)=>fZ.join(ys(e),"settings.json"),yY=(e)=>{let t=typeof e==="object"&&e!==null?Reflect.get(e,"autoUpdate"):void 0;if(typeof t!=="boolean")return yZ;return{autoUpdate:t}};async function mo(e=process.env){try{return yY(JSON.parse(await sn.readFile(VZ(e),"utf8")))}catch{return yZ}}async function VY(e,t=process.env){let i=VZ(t);return await ei(i),await sn.writeFile(i,`${JSON.stringify({autoUpdate:e.autoUpdate},null,2)}
|
|
181
|
+
`,{mode:384}),await sn.chmod(i,384),i}var BY=(e)=>{if(Se(e))return!0;if(Mi(e))return!1;throw new or(`Expected a boolean (true or false), got ${JSON.stringify(e)}.`)},RY=(e)=>`${on}=${e.autoUpdate}`,iI=(e,t)=>{if(t===void 0||t.length===0)return{output:RY(e)};if(t!==on)throw new or(`Unknown setting "${t}". Known settings: ${on}.`);return{output:String(e.autoUpdate)}};async function BZ(e,t,i){if(t!==on)throw new or(`Unknown setting "${t}". Known settings: ${on}.`);let n={autoUpdate:BY(i)};return await VY(n,e),{settings:n,output:`Set ${on} to ${n.autoUpdate}.`}}var GY=86400000,wY=86400000,oI=$s.name,kZ="https://registry.npmjs.org/",FY={config:!0,help:!0,version:!0},PZ=(e=process.env)=>rn.join(ys(e),"auto-update.json"),HY=()=>kZ,vY=(e)=>new URL(encodeURIComponent(e),kZ).toString(),RZ=(e)=>{let t=/^(\d+)\.(\d+)\.(\d+)(?:-preview\.(\d+))?$/u.exec(e);if(t===null)return;let[,i,n,o,s]=t;return[Number(i),Number(n),Number(o),s===void 0?Number.POSITIVE_INFINITY:Number(s)]},kY=(e,t)=>{let i=RZ(e),n=RZ(t);if(i===void 0||n===void 0)return;let o=Math.max(i.length,n.length);for(let s=0;s<o;s+=1){let r=i[s]??0,g=n[s]??0;if(r<g)return-1;if(r>g)return 1}return 0},GZ=(e)=>{if(typeof e!=="object"||e===null||Array.isArray(e))return;let t={};for(let[i,n]of Object.entries(e)){if(typeof n!=="string")return;t[i]=n}return t},PY=(e)=>{if(typeof e!=="object"||e===null)return;let t=GZ(Reflect.get(e,"dist-tags")),i=GZ(Reflect.get(e,"time"));if(t===void 0&&i===void 0)return{};return{...t===void 0?{}:{"dist-tags":t},...i===void 0?{}:{time:i}}},YY=(e)=>{let t=e["dist-tags"];if(t===void 0)return;let i=t.preview;if(typeof i==="string"&&i.length>0)return i;let n=t.latest;return typeof n==="string"&&n.length>0?n:void 0},NY=(e,t)=>{let i=e.time?.[t];if(typeof i!=="string"||i.length===0)return;let n=new Date(i);return Number.isNaN(n.getTime())?void 0:n},XY=(e)=>{if(typeof e!=="object"||e===null)return;let t=Reflect.get(e,"lastCheckedAt");if(typeof t!=="string"||t.length===0)return;let i=new Date(t);if(Number.isNaN(i.getTime()))return;return{lastCheckedAt:t}};async function SY(e=process.env){try{return XY(JSON.parse(await gn.readFile(PZ(e),"utf8")))}catch{return}}async function xY(e,t=process.env){let i=PZ(t);return await ei(i),await gn.writeFile(i,`${JSON.stringify(e,null,2)}
|
|
182
|
+
`,{mode:384}),await gn.chmod(i,384),i}var wZ=`${rn.sep}install${rn.sep}global${rn.sep}`,JY=(e=process.argv[1],t=vZ.fileURLToPath("file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/auto-update.ts"))=>[e,t].some((i)=>{if(typeof i!=="string")return!1;try{return HZ.realpathSync(i).includes(wZ)}catch{return i.includes(wZ)}});function EY(e,t){if(Se(e.TOLOKA_SKIP_AUTO_UPDATE))return!1;let i=e.TOLOKA_AUTO_UPDATE;if(Mi(i))return!1;if(Se(i))return!0;if(e[$t]!==void 0)return!1;if(Se(e.CI))return!1;if(Se(e.VITEST))return!1;return t.autoUpdate}var UY=(e)=>{let t=nr(e);return FY[t]===!0||t.startsWith("config ")},FZ=async(e)=>{if(e===null)return"";let t=[];return e.on("data",(i)=>{t.push(typeof i==="string"?Buffer.from(i):i)}),await sr.once(e,"end").catch(()=>{return}),Buffer.concat(t).toString("utf8")};class sI extends Error{constructor(e){super(e);this.name="RegistryError"}}var OY=async(e)=>{let t=await fetch(e,{headers:{accept:"application/json"},signal:AbortSignal.timeout(3000)});if(!t.ok)throw new sI(`npm registry responded ${t.status}`);let i=PY(await t.json());if(i===void 0)throw new sI("npm registry returned invalid package metadata");return i},TY=async({packageName:e,version:t,registry:i,environment:n})=>{let o=rI.spawn(process.execPath,["add","--global",`${e}@${t}`,`--registry=${i}`],{env:{...process.env,...n},stdio:["ignore","pipe","pipe"]}),[s,r,g]=await Promise.all([sr.once(o,"close"),FZ(o.stdout),FZ(o.stderr)]),a=s[0];if(a===0)return;let l=[g.trim(),r.trim()].filter((I)=>I.length>0).join(`
|
|
183
|
+
`);throw Error(l.length>0?`bun add --global failed: ${l}`:`bun add --global exited ${String(a)}`)},zY=async({argv:e,environment:t})=>{let i=process.argv[1],n=rI.spawn(process.execPath,i===void 0?[...e]:[i,...e],{env:{...process.env,...t,TOLOKA_SKIP_AUTO_UPDATE:"1"},stdio:"inherit"}),[o]=await sr.once(n,"close");return typeof o==="number"?o:1},nI=()=>({status:"continue"}),jY=async(e)=>{let{argv:t,environment:i,hooks:n}=e;if(UY(t))return{status:"skip"};if(!await(n.isGlobalInstall??(()=>JY()))())return{status:"skip"};let s=await mo(i);if(!EY(i,s))return{status:"skip"};let r=n.now?.()??new Date,g=await SY(i);if(g!==void 0){let a=new Date(g.lastCheckedAt).getTime();if(r.getTime()-a<GY)return{status:"skip"}}return{status:"check",now:r}},DY=async(e)=>{let{environment:t,io:i,now:n,currentVersion:o,fetchRegistry:s}=e;try{await xY({lastCheckedAt:n.toISOString()},t)}catch{}let r;try{r=await s(vY(oI))}catch(I){return i.stderr(`Auto-update check failed: ${I instanceof Error?I.message:String(I)}.`),{status:"skip"}}let g=YY(r);if(g===void 0)return{status:"skip"};let a=kY(o,g);if(a===void 0||a>=0)return{status:"skip"};let l=NY(r,g);if(l===void 0)return{status:"skip"};if(n.getTime()-l.getTime()<wY)return{status:"skip"};return{status:"update",currentVersion:o,version:g}};async function YZ(e){let{argv:t,environment:i,io:n,hooks:o={}}=e,s=await jY({argv:t,environment:i,hooks:o});if(s.status==="skip")return nI();let r=await DY({environment:i,io:n,now:s.now,currentVersion:e.currentVersion??Fe,fetchRegistry:o.fetchRegistry??OY});if(r.status==="skip")return nI();let g=o.install??TY;try{await g({packageName:oI,version:r.version,registry:HY(),environment:i})}catch(l){return n.stderr(`Auto-update to ${r.version} failed: ${l instanceof Error?l.message:String(l)}.`),nI()}return n.stderr(`Updated ${oI} from ${r.currentVersion} to ${r.version}.`),{status:"reexec",exitCode:await(o.reexec??zY)({argv:t,environment:i})}}var an=require("fs/promises"),Zo=require("path");var xZ=Symbol("sourceReference"),JZ={code:!0,connect:!0,definePipeline:!0,field:!0,generation:!0,match:!0,pipeline:!0,quorum:!0,root:!0},QY={arguments:!0,await:!0,break:!0,case:!0,catch:!0,class:!0,const:!0,continue:!0,debugger:!0,default:!0,delete:!0,do:!0,else:!0,enum:!0,eval:!0,export:!0,extends:!0,false:!0,finally:!0,for:!0,function:!0,if:!0,implements:!0,import:!0,in:!0,instanceof:!0,interface:!0,let:!0,new:!0,null:!0,package:!0,private:!0,protected:!0,public:!0,return:!0,static:!0,super:!0,switch:!0,this:!0,throw:!0,true:!0,try:!0,typeof:!0,var:!0,void:!0,while:!0,with:!0,yield:!0};function Et(e,t){return e<t?-1:e>t?1:0}function NZ(e){let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function EZ(e){return e.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").split(/[^A-Za-z0-9]+/).filter(Boolean)}function UZ(e,t){let[i,...n]=EZ(e),s=`${(i??t).toLowerCase()}${n.map((g)=>`${g.slice(0,1).toUpperCase()}${g.slice(1).toLowerCase()}`).join("")}`,r=/^\d/.test(s)?`_${s}`:s;return Object.hasOwn(QY,r)?`${r}Value`:r}function _Y(e,t){return EZ(e).map((i)=>i.toLowerCase()).join("-")||t}function gI(e,t,i){let n=new Map,o=new Set;for(let a of e){b(!o.has(a.key),`Naming key "${a.key}" is duplicated`),o.add(a.key);let l=t(a),I=n.get(l)??[];I.push(a),n.set(l,I)}let s=new Set(n.keys()),r=new Set,g=new Map;for(let[a,l]of[...n.entries()].toSorted(([I],[d])=>Et(I,d))){let I=l.toSorted((d,u)=>Et(d.key,u.key));for(let d of I){let u=a;if(I.length>1||i!==void 0&&Object.hasOwn(i,u))u=`${a}_${NZ(d.key)}`;let c=2;while(r.has(u)||i!==void 0&&Object.hasOwn(i,u)||u!==a&&s.has(u))u=`${a}_${NZ(d.key)}_${c}`,c+=1;r.add(u),g.set(d.key,u)}}return g}function KY(e){return typeof e==="object"&&e!==null&&xZ in e}function ne(e){return" ".repeat(e)}function xe(e,t=0){if(KY(e))return e.name;if(b(e!==void 0,"Cannot emit an undefined source value"),typeof e==="number")b(Number.isFinite(e),"Cannot emit a non-finite number");if(e===null||typeof e!=="object"){let o=JSON.stringify(e);return b(o!==void 0,`Cannot emit a ${typeof e} source value`),o}if(Array.isArray(e)){if(e.length===0)return"[]";return`[
|
|
184
|
+
${e.map((s)=>`${ne(t+1)}${xe(s,t+1)}`).join(`,
|
|
96
185
|
`)}
|
|
97
|
-
${ne(t)}]`}let
|
|
98
|
-
${
|
|
186
|
+
${ne(t)}]`}let i=Object.entries(e).filter(([,o])=>o!==void 0).toSorted(([o],[s])=>Et(o,s));if(i.length===0)return"{}";return`{
|
|
187
|
+
${i.map(([o,s])=>{let r=o==="__proto__"?`[${JSON.stringify(o)}]`:/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(o)?o:JSON.stringify(o);return`${ne(t+1)}${r}: ${xe(s,t+1)}`}).join(`,
|
|
99
188
|
`)}
|
|
100
|
-
${ne(t)}}`}function
|
|
189
|
+
${ne(t)}}`}function po(e,t){return{field:t(e.id),optional:e.optional}}function rr(e,t){let{fieldProxyId:i,relations:n,...o}=e;return{...o,field:t(i),...n===void 0?{}:{relations:n.map(({id:s,...r})=>({...r,field:t(s)}))}}}function aI(e,t){let{targetEntity:i,...n}=e;return{...n,targetEntity:t(i)}}function XZ(e,t){return{...e,gradedEntities:e.gradedEntities.map((i)=>aI(i,t))}}function LY(e,t){switch(e.type){case"root":{let{datasetId:i,itemFilter:n,startedFieldProxies:o,completedFieldProxies:s,...r}=e.settings;return{...r,started:o.output.map((g)=>po(g,t)),completed:s.input.map((g)=>po(g,t))}}case"code":{let{fieldProxies:i,...n}=e.settings;return{...n,input:i.input.map((o)=>po(o,t)),output:i.output.map((o)=>po(o,t))}}case"generation":{let{entities:i,qualityCriteria:n,exam:o,...s}=e.settings;return{...s,entities:{input:i.input.map((r)=>rr(r,t)),output:i.output.map((r)=>rr(r,t))},qualityCriteria:n.map((r)=>aI(r,t)),...o===void 0?{}:{exam:XZ(o,t)}}}case"match":{let{conditions:i,fieldProxies:n,...o}=e.settings;return{...o,conditions:i.map(({predicates:s,...r})=>({...r,predicates:s.map(({fieldProxyId:g,...a})=>({...a,field:t(g)}))})),input:n.input.map((s)=>po(s,t))}}case"quorum":{let{entities:i,qualityCriteria:n,exam:o,...s}=e.settings;return{...s,entities:{input:i.input.map((r)=>rr(r,t)),output:i.output.map((r)=>rr(r,t))},qualityCriteria:n.map((r)=>aI(r,t)),...o===void 0?{}:{exam:XZ(o,t)}}}}}function MY(e,t,i,n){let o=new Set,r=LY(e,(I)=>{let d=n.get(I);return b(d,`Node "${e.id}" references unknown field "${I}"`),o.add(d),{name:d,[xZ]:!0}}),g=[...o].toSorted(Et),a=[`import { ${e.type} } from '@toloka-platform/sdk';`,...g.length===0?[]:["",`import { ${g.join(", ")} } from '../../fields';`]],l=e.type==="root"?[`${ne(1)}${xe(r,1)}`,`${ne(1)}${xe({id:e.id},1)}`]:[`${ne(1)}${xe(e.settings.about.name,1)}`,`${ne(1)}${xe(r,1)}`,`${ne(1)}${xe({id:e.id},1)}`];return{binding:t,path:i,source:`${a.join(`
|
|
101
190
|
`)}
|
|
102
191
|
|
|
103
192
|
export const ${t} = ${e.type}(
|
|
104
|
-
${
|
|
193
|
+
${l.join(`,
|
|
105
194
|
`)}
|
|
106
195
|
);
|
|
107
|
-
`}}function
|
|
196
|
+
`}}function OZ(e,t){if(e.length===0)return`export {};
|
|
108
197
|
`;return`import { field } from '@toloka-platform/sdk';
|
|
109
198
|
|
|
110
|
-
${e.map((n)=>{let
|
|
199
|
+
${e.map((n)=>{let o=t(n),s=[`${ne(1)}${xe(n.name,1)}`,`${ne(1)}${xe(n.jsonSchema,1)}`,...n.options===void 0?[]:[`${ne(1)}${xe(n.options,1)}`]];return{binding:o,source:`export const ${o} = field(
|
|
111
200
|
${s.join(`,
|
|
112
201
|
`)}
|
|
113
|
-
);`}}).toSorted((n,
|
|
202
|
+
);`}}).toSorted((n,o)=>Et(n.binding,o.binding)).map(({source:n})=>n).join(`
|
|
114
203
|
|
|
115
204
|
`)}
|
|
116
|
-
`}function
|
|
117
|
-
${ne(3)}${h},
|
|
205
|
+
`}function TZ(e){let t=new Map(e.map((n)=>[n,`field:${n.options?.id??n.name}`])),i=gI(e.map((n)=>({key:t.get(n)??"",name:n.name,fallback:"field"})),({name:n,fallback:o})=>UZ(n,o),JZ);return OZ(e,(n)=>{let o=t.get(n);b(o,`Field "${n.name}" has no source key`);let s=i.get(o);return b(s,`Field "${n.name}" has no source binding`),s})}function $Y(e,t){return OZ(e.fields.map((i)=>({name:i.name,jsonSchema:i.jsonSchema,options:{id:i.id}})),(i)=>{let n=i.options?.id;b(n,`Field "${i.name}" has no source ID`);let o=t.get(n);return b(o,`Field "${n}" has no source binding`),o})}function SZ(e,t,i,n){let o=i.get(e.node);b(o,`Connection references unknown node "${e.node}"`);let s=n.get(o.id);switch(b(s,`Node "${o.id}" has no source binding`),o.type){case"root":return b(e.handle===(t==="output"?"started":"completed"),`Root ${t} handle "${e.handle}" cannot be authored`),`${s}.${t==="output"?"started":"completed"}`;case"code":case"generation":case"quorum":return b(e.handle===t,`${o.type} ${t} handle "${e.handle}" cannot be authored`),`${s}.${t}`;case"match":if(t==="input")return b(e.handle==="input",`Match input handle "${e.handle}" cannot be authored`),`${s}.input`;if(e.handle==="default")return`${s}.default`;let r=/^matched_(\d+)$/.exec(e.handle);b(r,`Match output handle "${e.handle}" cannot be authored`);let g=r[1];return b(g!==void 0,`Match output handle "${e.handle}" has no index`),b(String(Number(g))===g,`Match output handle "${e.handle}" is not canonical`),`${s}.matched(${g})`}}function qY(e,t,i,n,o){let s=new Map(e.nodes.map((d)=>[d.id,d])),r=[`import { ${e.connections.length===0?"definePipeline":"connect, definePipeline"} } from '@toloka-platform/sdk';`,...e.fields.length===0?[]:["",`import { ${[...n.values()].toSorted(Et).join(", ")} } from './fields';`],...i.toSorted((d,u)=>Et(d.path,u.path)).flatMap(({binding:d,path:u})=>[`import { ${d} } from './${u.slice(0,-3)}';`])],g=e.fields.map(({id:d})=>{let u=n.get(d);return b(u,`Field "${d}" has no source binding`),u}),a=e.nodes.map(({id:d})=>{let u=o.get(d);return b(u,`Node "${d}" has no source binding`),u}),l=e.connections.map((d)=>{let u=SZ(d.from,"output",s,o),c=SZ(d.to,"input",s,o);if(Object.keys(d.settings).length===0)return`connect(${u}, ${c})`;return`connect(
|
|
118
206
|
${ne(3)}${u},
|
|
119
|
-
${ne(3)}${
|
|
120
|
-
${ne(
|
|
121
|
-
${
|
|
207
|
+
${ne(3)}${c},
|
|
208
|
+
${ne(3)}${xe(d.settings,3)}
|
|
209
|
+
${ne(2)})`}),I=(d,u)=>{if(d.length===0)return"[]";return`[
|
|
210
|
+
${d.map((c)=>`${ne(u+1)}${c}`).join(`,
|
|
122
211
|
`)}
|
|
123
|
-
${ne(
|
|
212
|
+
${ne(u)}]`};return`${r.join(`
|
|
124
213
|
`)}
|
|
125
214
|
|
|
126
215
|
export default definePipeline({
|
|
127
|
-
dataset: ${
|
|
128
|
-
fields: ${
|
|
129
|
-
nodes: ${
|
|
130
|
-
connections: ${
|
|
216
|
+
dataset: ${xe(t)},
|
|
217
|
+
fields: ${I(g,1)},
|
|
218
|
+
nodes: ${I(a,1)},
|
|
219
|
+
connections: ${I(l,1)}
|
|
131
220
|
});
|
|
132
|
-
`}function Lg(e,t={dataset:"imported-dataset"}){let r=[...e.fields.map((d)=>({key:`field:${d.id}`,name:d.name,fallback:"field"})),...e.nodes.map((d)=>({key:`node:${d.id}`,name:d.type==="root"?"root":d.settings.about.name||d.type,fallback:d.type}))],n=nd(r,({name:d,fallback:c})=>Dg(d,c),Ag),i=nd(e.nodes.map((d)=>({key:`node:${d.id}`,name:d.type==="root"?"root":d.settings.about.name||d.type,fallback:d.type})),({name:d,fallback:c})=>vF(d,c)),s=new Map(e.fields.map((d)=>{let c=n.get(`field:${d.id}`);return _(c,`Field "${d.id}" has no allocated binding`),[d.id,c]})),o=new Map(e.nodes.map((d)=>{let c=n.get(`node:${d.id}`);return _(c,`Node "${d.id}" has no allocated binding`),[d.id,c]})),a=e.nodes.map((d)=>{let c=o.get(d.id),p=i.get(`node:${d.id}`);return _(c&&p,`Node "${d.id}" has no allocated source name`),IF(d,c,`nodes/${p}/node.ts`,s)}),l=[{path:"fields.ts",source:EF(e,s)},...a.map(({path:d,source:c})=>({path:d,source:c})),{path:"pipeline.ts",source:SF(e,t.dataset,a,s,o)}].toSorted((d,c)=>Ft(d.path,c.path));return Object.fromEntries(l.map(({path:d,source:c})=>[d,c]))}var _t=require("fs/promises"),Zt=require("path");var oy=Re(cl(),1),ay=Re(ny(),1);var iy={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{version:{type:"number",const:1},fields:{maxItems:500,type:"array",items:{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},name:{type:"string"},jsonSchema:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1,ref:"JsonSchema"}},required:["id","name","jsonSchema"],additionalProperties:!1}},nodes:{maxItems:500,type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"root"},settings:{type:"object",properties:{datasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},itemFilter:{type:"object",properties:{fieldValues:{default:[],type:"array",items:{type:"object",properties:{jsonPath:{type:"string",minLength:1},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},latestOnly:{default:!0,type:"boolean"},sources:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["jsonPath","operator","value","fieldId"],additionalProperties:!1}},fieldSources:{default:[],type:"array",items:{type:"object",properties:{fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},sources:{minItems:1,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["fieldId","sources"],additionalProperties:!1}},missingRevisionFields:{default:[],type:"array",items:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},createdBefore:{type:"string",format:"date-time",pattern:"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},additionalProperties:!1},itemLimit:{type:"integer",exclusiveMinimum:0,maximum:9007199254740991},startedFieldProxies:{type:"object",properties:{output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["output"]},completedFieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["startedFieldProxies","completedFieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"code"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}},output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input","output"]},code:{type:"object",properties:{code:{type:"string"}},required:["code"],additionalProperties:!1},envVars:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"static"},name:{type:"string"},value:{type:"string"}},required:["type","name","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"secret"},name:{type:"string"},secretName:{type:"string"}},required:["type","name","secretName"],additionalProperties:!1}]}},checks:{type:"object",propertyNames:{type:"string",enum:["code"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["code"]}},required:["about","fieldProxies","code"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"generation"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"human_only"},smartSamplingPercent:{default:100,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"hybrid"},smartSamplingPercent:{default:30,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]}]},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},oneOf:[{type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},{type:"object",properties:{audienceType:{type:"string",const:"synthetic"},generationModelId:{default:"gpt-5.6-terra",type:"string",enum:["gpt-5.4","gpt-5.4-mini","claude-sonnet-4-6","gemini-3.1-pro-preview","gemini-3.5-flash","claude-sonnet-5","gpt-5.6-terra","gpt-5.6-luna"]},reasoningEffort:{type:"string",enum:["low","medium","high"]},llmInstruction:{default:"",type:"string"},maxCostPerAttempt:{type:"number"}},required:["audienceType","maxCostPerAttempt"],additionalProperties:!1}]},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"match"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},conditions:{type:"array",items:{type:"object",properties:{name:{type:"string"},logic:{default:"and",type:"string",enum:["and","or"]},predicates:{type:"array",items:{type:"object",properties:{fieldProxyId:{type:"string"},jsonPath:{type:"string"},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]}},required:["fieldProxyId","jsonPath","operator","value"],additionalProperties:!1}}},required:["name","predicates"],additionalProperties:!1}},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["about","conditions","fieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"quorum"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},offboardingRules:{default:[],type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},type:{type:"string",enum:["mv_agreement"]},agreementScale:{type:"string"}},required:["id"],additionalProperties:!1}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"none"}},required:["qaMode"]}]},overlap:{type:"integer",minimum:1,maximum:100},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","overlap","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1}]}},connections:{maxItems:2000,type:"array",items:{type:"object",properties:{from:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},to:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},settings:{type:"object",properties:{},additionalProperties:{}}},required:["from","to","settings"],additionalProperties:!1}},layout:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"array",prefixItems:[{type:"number",description:"X"},{type:"number",description:"Y"}]},maxProperties:2},maxProperties:500}},required:["version","fields","nodes","connections"],additionalProperties:!1,$defs:{__schema0:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema1"}},__schema1:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1},__schema2:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema2"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema2"}}]},__schema3:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema3"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}}]},__schema4:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema4"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema4"}}]}}};var ly=new oy.default({strict:!1});ay.default(ly);var sy=ly.compile(iy),sT=(e)=>{let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return{path:typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/",reason:e.message??`failed ${e.keyword} validation`}};function md(e){if(sy(e))return;let t=sy.errors;_(t,"Pipeline graph validation failed without errors");let r=new Set,n=[];for(let i of t){let s=sT(i),o=`${s.path}
|
|
133
|
-
|
|
134
|
-
`)}
|
|
135
|
-
`)}}
|
|
136
|
-
`)}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
${
|
|
140
|
-
`)}}var MT=async(e)=>{let t=await e.fetch(e.downloadUrl);_(t.ok,`Dataset export download failed with HTTP ${t.status}.`);let r=await t.text(),n;try{n=JSON.parse(r)}catch(s){throw Error(`Dataset export ${e.exportId} is not valid JSON.`,{cause:s})}_(Array.isArray(n),`Dataset export ${e.exportId} is not a JSON array.`);let i=[];for(let[s,o]of n.entries())_(vd(o),`Dataset export ${e.exportId} row ${s} is not a JSON object.`),i.push(o);return i};async function Ay(e,t){let r=await wd(e,t,!1),n=[];for await(let l of e.datasets.listAllFields({datasetId:r.datasetId})){if(l.internal||l.name===jy)continue;n.push(l.name)}_(n.length>0,`Dataset ${r.name} has no fields to export.`);let i=await e.datasets.startExport({datasetId:r.datasetId,fields:n}),s;try{s=await e.waitFor({type:"datasetExport",exportId:i.id},t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs})}catch(l){throw _(!(l instanceof te&&l.code==="wait_timeout"),`Stopped waiting for dataset export ${i.id}; raise --timeout to wait longer.`),l}_(s.result.downloadUrl,`Dataset export ${s.id} succeeded without a download URL.`);let o=await MT({downloadUrl:s.result.downloadUrl,exportId:s.id,fetch:t.fetch??globalThis.fetch}),a=t.limit===void 0?o:o.slice(0,t.limit);return await Br.mkdir(Yn.dirname(t.outPath),{recursive:!0}),await Br.writeFile(t.outPath,a.length===0?"":`${a.map((l)=>JSON.stringify(l)).join(`
|
|
221
|
+
`}function zZ(e,t={dataset:"imported-dataset"}){let i=[...e.fields.map((l)=>({key:`field:${l.id}`,name:l.name,fallback:"field"})),...e.nodes.map((l)=>({key:`node:${l.id}`,name:l.type==="root"?"root":l.settings.about.name||l.type,fallback:l.type}))],n=gI(i,({name:l,fallback:I})=>UZ(l,I),JZ),o=gI(e.nodes.map((l)=>({key:`node:${l.id}`,name:l.type==="root"?"root":l.settings.about.name||l.type,fallback:l.type})),({name:l,fallback:I})=>_Y(l,I)),s=new Map(e.fields.map((l)=>{let I=n.get(`field:${l.id}`);return b(I,`Field "${l.id}" has no allocated binding`),[l.id,I]})),r=new Map(e.nodes.map((l)=>{let I=n.get(`node:${l.id}`);return b(I,`Node "${l.id}" has no allocated binding`),[l.id,I]})),g=e.nodes.map((l)=>{let I=r.get(l.id),d=o.get(`node:${l.id}`);return b(I&&d,`Node "${l.id}" has no allocated source name`),MY(l,I,`nodes/${d}/node.ts`,s)}),a=[{path:"fields.ts",source:$Y(e,s)},...g.map(({path:l,source:I})=>({path:l,source:I})),{path:"pipeline.ts",source:qY(e,t.dataset,g,s,r)}].toSorted((l,I)=>Et(l.path,I.path));return Object.fromEntries(a.map(({path:l,source:I})=>[l,I]))}var yt=require("fs/promises"),Ii=require("path");function jZ(e){let t=new Set;for(let i of e.nodes){if(i.type!=="code")continue;for(let n of i.settings.envVars??[])if(n.type==="secret")t.add(n.secretName)}return[...t].toSorted((i,n)=>i.localeCompare(n))}var eN=/^(?!\/)(?!.*\\)(?!.*(?:^|\/)\.\.?(?:\/|$))(?!.*\/\/).+$/u,II=(e)=>{if(Array.isArray(e))return e.map(II);if(typeof e!=="object"||e===null)return e;return Object.fromEntries(Object.entries(e).toSorted(([t],[i])=>t.localeCompare(i)).map(([t,i])=>[t,II(i)]))},Be=(e)=>JSON.stringify(II(e)),DZ=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),_Z=(e,t)=>{if(!DZ(e)||!DZ(t))return t;return Object.fromEntries(Object.keys(e).map((i)=>[i,_Z(e[i],t[i])]))},tN=(e,t)=>Be(e)===Be(_Z(e,t)),Ao=async(e)=>{let t=[];for await(let i of e)t.push(i);return t},dI=(e)=>{let t=Reflect.get(e.settings,"about");if(typeof t==="object"&&t!==null){let i=Reflect.get(t,"name");if(typeof i==="string"&&i.length>0)return`${i} (${e.id})`}return e.id},iN=(e)=>`${e.name} (${e.id})`,nN=(e,t)=>{let i=t.get(e.from.node),n=t.get(e.to.node),o=i===void 0?e.from.node:dI(i),s=n===void 0?e.to.node:dI(n);return`${o}.${e.from.handle} -> ${s}.${e.to.handle}`},gr=(e)=>new Map(e.map((t)=>[t.id,t])),lI=(e,t,i,n)=>{let o=[];for(let[s,r]of[...e].toSorted(([g],[a])=>g.localeCompare(a))){let g=t.get(s);if(g===void 0)o.push(n(r,"added"));else if(!i(r,g))o.push(n(r,"changed"))}for(let[s,r]of[...t].toSorted(([g],[a])=>g.localeCompare(a)))if(!e.has(s))o.push(n(r,"removed"));return o};function oN(e,t){let i=gr(e.nodes),n=gr(t.nodes),o=new Map(e.connections.map((r)=>[Be(r),r])),s=new Map(t.connections.map((r)=>[Be(r),r]));return[...lI(gr(e.fields),gr(t.fields),(r,g)=>Be(r)===Be(g),(r,g)=>({kind:"field",action:g,label:iN(r),id:r.id})),...lI(i,n,tN,(r,g)=>({kind:"node",action:g,label:dI(r),id:r.id})),...lI(o,s,()=>!0,(r,g)=>({kind:"connection",action:g,label:nN(r,g==="removed"?n:i)})),...Be(e.layout)===Be(t.layout)?[]:[{kind:"layout",action:"changed",label:"pipeline layout"}]]}var cI=(e,t)=>{let i=t.nodes.find((o)=>o.type==="root"),n=i===void 0?{}:{...i.settings.itemFilter===void 0?{}:{itemFilter:i.settings.itemFilter},...i.settings.itemLimit===void 0?{}:{itemLimit:i.settings.itemLimit}};return{...e,...t.layout===void 0?{}:{layout:t.layout},nodes:e.nodes.map((o)=>o.type==="root"?{...o,settings:{...n,...o.settings}}:o)}},ar=(e)=>{let t=new Map;for(let i of e.pipelines){let n=t.get(i.definition.dataset);if(n===void 0)n=new Map,t.set(i.definition.dataset,n);for(let o of i.definition.graph.fields){let s=n.get(o.name);if(b(s===void 0||Be(s.jsonSchema)===Be(o.jsonSchema),`Dataset "${i.definition.dataset}" has conflicting schemas for field "${o.name}".`),s===void 0)n.set(o.name,o)}}return[...t].toSorted(([i],[n])=>i.localeCompare(n)).map(([i,n])=>({name:i,fields:[...n.values()].toSorted((o,s)=>o.name.localeCompare(s.name))}))},sN=(e)=>{let t=new Set;for(let i of e.pipelines)b(eN.test(i.sourceDirectory),`Invalid pipeline source directory ${i.sourceDirectory}`),b(!t.has(i.sourceDirectory),`Pipeline source directory ${i.sourceDirectory} is declared more than once`),t.add(i.sourceDirectory),Zs(i.definition);ar(e)},rN=(e,t,i)=>{let n=t===void 0?void 0:i.find((s)=>s.id===t.datasetId);if(n!==void 0)return b(n.name===e,`Dataset ${n.id} is bound as "${e}" but is named "${n.name}".`),n;let o=i.filter((s)=>s.name===e);return b(o.length<=1,`Project has multiple datasets named "${e}".`),o[0]},gN=(e,t,i)=>{let n=t===void 0?void 0:i.find((s)=>s.id===t.pipelineId);if(n!==void 0)return n;let o=i.filter((s)=>s.name===e.name);return b(o.length<=1,`Project has multiple pipelines named "${e.name}".`),o[0]},aN=(e)=>{let t=e.action==="added"?"+":e.action==="removed"?"-":e.action==="missing"?"!":"~";switch(e.kind){case"pipeline":return`${t} Pipeline ${e.action}: ${e.label}`;case"dataset":return`${t} Dataset ${e.action}: ${e.label}`;case"datasetField":return`${t} Dataset field ${e.action}: ${e.dataset}.${e.label}`;case"secret":return`${t} Missing secret: ${e.label}`;case"node":return`${t} Node ${e.action} in ${e.pipeline}: ${e.label}`;case"connection":return`${t} Connection ${e.action} in ${e.pipeline}: ${e.label}`;case"field":return`${t} Graph field ${e.action} in ${e.pipeline}: ${e.label}`;case"layout":return`${t} Layout ${e.action} in ${e.pipeline}: ${e.label}`}},lN=(e,t)=>{if(e.length===0)return"No changes.";let i=e.length===1?"change":"changes",n=[`Plan: ${e.length} ${i}`,...e.map(aN)];if(t.length>0){n.push("","Required secrets are missing:");for(let o of t)n.push(` ${o}`);n.push("Run `toloka secret set <name>` before apply.")}return n.join(`
|
|
222
|
+
`)},IN=async(e,t,i,n)=>{let o=t.map((r)=>({desired:r,dataset:rN(r.name,i?.datasets[r.name],n)})),s=await Promise.all(o.map(async({dataset:r})=>r===void 0?[]:Ao(e.datasets.listAllFields({datasetId:r.id}))));return o.map(({desired:r,dataset:g},a)=>{let l=s[a]??[],I=new Map(l.map((d)=>[d.name,d]));return{...r,...g===void 0?{}:{dataset:g},liveFields:l,missingFields:r.fields.filter((d)=>!I.has(d.name)),conflictingFields:r.fields.filter((d)=>{let u=I.get(d.name);return u!==void 0&&Be(u.jsonSchema)!==Be(d.jsonSchema)})}})},dN=async(e,t,i,n,o)=>{let s=t.pipelines.map((g)=>({source:g,pipeline:gN(g,i?.pipelines[g.sourceDirectory],o)})),r=await Promise.all(s.map(async({pipeline:g})=>g===void 0?void 0:e.pipelines.getGraph({pipelineId:g.id})));return s.map(({source:g,pipeline:a},l)=>{let I=r[l],d=n.find((c)=>c.name===g.definition.dataset)?.dataset,u=[];if(a!==void 0&&I!==void 0)u=d===void 0?[{kind:"node",action:"changed",label:"root dataset binding",id:"root"}]:oN(cI(Qn(g.definition,{datasetId:d.id}),I.graph),I.graph);return{source:g,...a===void 0?{}:{pipeline:a},...I===void 0?{}:{snapshot:I},graphChanges:u}})},cN=(e,t,i,n,o)=>{let s=[];for(let r of o)s.push({kind:"pipeline",action:"removed",label:r});for(let r of n)s.push({kind:"dataset",action:"removed",label:r});for(let r of e){if(r.dataset===void 0)s.push({kind:"dataset",action:"added",label:r.name});for(let g of r.missingFields)s.push({kind:"datasetField",action:"added",label:g.name,dataset:r.name});for(let g of r.conflictingFields)s.push({kind:"datasetField",action:"changed",label:g.name,dataset:r.name})}for(let r of t)if(r.pipeline===void 0)s.push({kind:"pipeline",action:"added",label:r.source.sourceDirectory});else for(let g of r.graphChanges)s.push({...g,pipeline:r.source.sourceDirectory});for(let r of i)s.push({kind:"secret",action:"missing",label:r});return s},lr=async(e,t)=>{let i=t.source??await Ei(t.sourceRoot);sN(i);let n=await Re(t.sourceRoot),o=t.projectId??n?.projectId;b(o,M);let s=n?.projectId===o?n:void 0,r=new Set(i.pipelines.flatMap(({definition:Z})=>jZ(Z.graph))),g=t.listAllSecrets===!0||r.size>0,[a,l,I]=await Promise.all([Ao(e.pipelines.listAll({projectId:o})),Ao(e.datasets.listAll({projectId:o})),g?e.secrets.list({projectId:o}):Promise.resolve([])]),d=ar(i),u=Object.keys(s?.datasets??{}).filter((Z)=>!d.some((W)=>W.name===Z)).toSorted(),c=Object.keys(s?.pipelines??{}).filter((Z)=>!i.pipelines.some((W)=>W.sourceDirectory===Z)).toSorted(),C=await IN(e,d,s,l),A=await dN(e,i,s,C,a),m=new Set(I.map((Z)=>Z.name)),p=[...r].filter((Z)=>!m.has(Z)).toSorted();return{projectId:o,source:i,state:n,datasets:C,pipelines:A,livePipelines:a,liveDatasets:l,liveSecrets:I,changes:cN(C,A,p,u,c),missingSecrets:p,removedDatasets:u,removedPipelines:c}},QZ=(e)=>e.toLowerCase().match(/[a-z0-9]+/gu)?.join("-")||"pipeline",CN=(e)=>{let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")},uN=(e)=>{let t=Map.groupBy(e,(i)=>QZ(i.name));return new Map(e.map((i)=>{let n=QZ(i.name),o=(t.get(n)?.length??0)>1;return[i.id,`pipelines/${o?`${n}-${CN(i.id)}`:n}`]}))};async function KZ(e,t){let i=(await Ao(e.pipelines.listAll({projectId:t.projectId}))).toSorted((Z,W)=>Z.name.localeCompare(W.name)||Z.id.localeCompare(W.id)),n=await Promise.all(i.map((Z)=>e.pipelines.getGraph({pipelineId:Z.id}))),o=new Set;for(let Z of n){let W=Z.graph.nodes.find((h)=>h.type==="root");b(W?.settings.datasetId,"Every imported pipeline must have a bound dataset."),o.add(W.settings.datasetId)}let s=await Ao(e.datasets.listAll({projectId:t.projectId})),r=[];for(let Z of[...o].toSorted()){let W=s.find((h)=>h.id===Z);b(W,`Project ${t.projectId} has no dataset ${Z}.`),r.push(W)}let g=new Map(r.map((Z)=>[Z.id,Z])),a=uN(i),l={},I={},d={};for(let[Z,W]of i.entries()){let h=n[Z];b(h,`Pipeline ${W.id} has no graph snapshot.`);let f=h.graph.nodes.find((R)=>R.type==="root");b(f?.settings.datasetId,`Pipeline ${W.id} has no dataset binding.`);let V=g.get(f.settings.datasetId);b(V,`Pipeline ${W.id} references unknown dataset ${f.settings.datasetId}.`);let B=d[V.name];b(B===void 0||B.datasetId===V.id,`Project has multiple referenced datasets named "${V.name}".`),d[V.name]={datasetId:V.id};let F=a.get(W.id);b(F,`Pipeline ${W.id} has no source directory.`),I[F]={pipelineId:W.id};for(let[R,U]of Object.entries(zZ(h.graph,{dataset:V.name})))l[`${F}/${R}`]=U}await yt.mkdir(t.sourceRoot,{recursive:!0});let u=Ii.join(t.sourceRoot,"pipelines"),c=!1;try{c=(await yt.stat(u)).isDirectory()}catch(Z){if(!(Z instanceof Error)||!("code"in Z)||Z.code!=="ENOENT")throw Z}if(b(!c||t.force===!0,`Folder already exists: ${u}. Pass --force to replace it.`),c)await yt.rm(u,{recursive:!0,force:!0});for(let[Z,W]of Object.entries(l).toSorted(([h],[f])=>h.localeCompare(f))){let h=Ii.join(t.sourceRoot,Z);await yt.mkdir(Ii.dirname(h),{recursive:!0}),await yt.writeFile(h,W,"utf8")}let C={projectId:t.projectId,pipelines:I,datasets:d};await Lt(t.sourceRoot,C);let A=[...Object.keys(l),us].toSorted(),m=i.length===1?"pipeline":"pipelines",p=r.length===1?"dataset":"datasets";return{state:C,files:A,output:`Imported project ${t.projectId} with ${i.length} ${m} and ${r.length} ${p} into ${Ii.resolve(t.sourceRoot)}.`}}async function LZ(e,t){let i=await lr(e,t);return{projectId:i.projectId,changes:i.changes,missingSecrets:i.missingSecrets,output:lN(i.changes,i.missingSecrets)}}async function MZ(e,t){let i=t.projectId;b(i,M);let n=await e.projects.get({projectId:i}),o=await lr(e,{...t,listAllSecrets:!0}),s=o.changes.length,r=s===0?"Source has no pending changes.":`Source has ${s} pending change${s===1?"":"s"}.`;return{projectId:i,output:[`Project: ${i} (${n.name})`,`Team: ${n.teamId}`,`Pipelines: ${o.livePipelines.length}`,`Datasets: ${o.liveDatasets.length}`,`Secrets: ${o.liveSecrets.length}`,r].join(`
|
|
223
|
+
`)}}async function $Z(e,t){let i=await lr(e,t);b(i.removedPipelines.length===0,`Refusing to delete pipelines absent from source: ${i.removedPipelines.join(", ")}.`),b(i.removedDatasets.length===0,`Refusing to delete datasets absent from source: ${i.removedDatasets.join(", ")}. Dataset items are never deleted.`),b(i.missingSecrets.length===0,`Required secrets are missing: ${i.missingSecrets.join(", ")}. Run toloka secret set <name> before apply.`);let n=i.datasets.flatMap((I)=>I.conflictingFields.map((d)=>`${I.name}.${d.name}`));b(n.length===0,`Dataset field schemas conflict with source: ${n.join(", ")}. Existing fields are never rewritten.`);let o=0,s=new Map;for(let I of i.datasets){let d=I.dataset;if(d===void 0)d=await e.datasets.create({projectId:i.projectId,name:I.name}),o+=1;if(s.set(I.name,d.id),I.missingFields.length>0)await e.datasets.createFields({datasetId:d.id,fields:I.missingFields.map((u)=>({name:u.name,jsonSchema:u.jsonSchema}))}),o+=I.missingFields.length}let r=new Map;for(let I of i.pipelines){let d=s.get(I.source.definition.dataset);b(d,`Dataset ${I.source.definition.dataset} has no resolved ID.`);let u=Qn(I.source.definition,{datasetId:d});if(I.pipeline===void 0){let C=await e.pipelines.import({projectId:i.projectId,name:I.source.name,graph:u});await e.pipelines.attachDataset({pipelineId:C.id,datasetId:d}),r.set(I.source.sourceDirectory,C.id),o+=2;continue}if(r.set(I.source.sourceDirectory,I.pipeline.id),I.graphChanges.length===0)continue;let c=I.snapshot;b(c,`Pipeline ${I.pipeline.id} has no graph snapshot.`),await e.pipelines.replaceGraph({pipelineId:I.pipeline.id,graph:cI(u,c.graph),expectedVersion:c.version}),o+=1}let g={projectId:i.projectId,pipelines:Object.fromEntries(i.source.pipelines.map((I)=>{let d=r.get(I.sourceDirectory);return b(d,`Pipeline ${I.sourceDirectory} has no resolved ID.`),[I.sourceDirectory,{pipelineId:d}]})),datasets:Object.fromEntries(i.datasets.map((I)=>{let d=s.get(I.name);return b(d,`Dataset ${I.name} has no resolved ID.`),[I.name,{datasetId:d}]}))};if(Be(i.state)!==Be(g))await Lt(t.sourceRoot,g);let a=o===0?"unchanged":"changed",l=o===0?"No changes.":`Applied ${o} ${o===1?"write":"writes"} to project ${i.projectId}.`;return{action:a,state:g,changes:i.changes,writes:o,output:l}}var mN=(e)=>[e.nodeId,e.checkId].filter((t)=>t!==void 0).join("/"),pN=(e)=>e.issues.map((t)=>{let i=mN(t);return` ${t.severity} ${t.code}${i.length===0?"":` ${i}`}: ${t.message}`});async function qZ(e,t){let i=await lr(e,t),n=[];for(let r of i.pipelines){let g=i.datasets.find((I)=>I.name===r.source.definition.dataset)?.dataset;if(r.pipeline===void 0){n.push({sourceDirectory:r.source.sourceDirectory,skipped:"pipeline is not on the platform yet; run toloka apply first"});continue}if(g===void 0){n.push({sourceDirectory:r.source.sourceDirectory,pipelineId:r.pipeline.id,skipped:`dataset "${r.source.definition.dataset}" is not on the platform yet; run toloka apply first`});continue}let a=r.snapshot===void 0?Qn(r.source.definition,{datasetId:g.id}):cI(Qn(r.source.definition,{datasetId:g.id}),r.snapshot.graph),l=await e.pipelines.validateGraph({pipelineId:r.pipeline.id,graph:a});n.push({sourceDirectory:r.source.sourceDirectory,pipelineId:r.pipeline.id,report:l})}let o=n.every((r)=>r.report?.valid!==!1),s=n.flatMap((r)=>{if(r.skipped!==void 0)return[`- ${r.sourceDirectory}: skipped (${r.skipped})`];return b(r.report,`Pipeline ${r.sourceDirectory} is missing a validation report`),[r.report.valid?`- ${r.sourceDirectory}: valid`:`- ${r.sourceDirectory}: invalid`,...pN(r.report)]});return{projectId:i.projectId,results:n,valid:o,output:s.length===0?"No pipelines to validate.":s.join(`
|
|
224
|
+
`)}}var ib="uploaded",AN=/^ds\.[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,eb=3;class dr extends Error{constructor(e,t){super(e,{cause:t});this.name="DatasetUploadError"}}var ZN=(e)=>AN.test(e)?e.toLowerCase():void 0,bN={json:"application/json",jsonl:"application/x-ndjson",csv:"text/csv"},uI=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),CI=(e)=>{if(!uI(e))return"unknown";if(Array.isArray(e.anyOf)){let n=[...new Set(e.anyOf.map(CI))];return n.length===0?"unknown":n.join(" | ")}let t=e.type,i=typeof t==="string"?[t]:Array.isArray(t)?t.filter((n)=>typeof n==="string"):[];if(i.length===0)return"unknown";return i.map((n)=>{if(n!=="array")return n;let o=CI(e.items);return o==="unknown"?"array":`array<${o}>`}).join(" | ")},WN=(e)=>{if(e.length===0)return"No inferred fields are available yet.";return["Inferred fields:",...e.toSorted((t,i)=>t.jsonPath.localeCompare(i.jsonPath)).map((t)=>`${" ".repeat(t.depth)}- ${t.jsonPath}: ${CI(t.jsonSchema)}`)].join(`
|
|
225
|
+
`)},nb=async(e)=>{let t=e.source??await Ei(e.sourceRoot),i=ar(t).find((n)=>n.name===e.datasetName);return i===void 0?[]:i.fields.map((n)=>({name:n.name,jsonSchema:n.jsonSchema}))},tb=(e)=>`${e.name} (${e.id})`,ob=async(e,t)=>{let i=[];for await(let n of e.datasets.listAll({projectId:t}))i.push(n);return i.toSorted((n,o)=>{let s=n.name.localeCompare(o.name);return s===0?n.id.localeCompare(o.id):s})},mI=async(e,t,i)=>{let n=await Re(t.sourceRoot),o=t.projectId??n?.projectId;b(o,M);let s=t.datasetName,r=await ob(e,o),g=(c)=>r.filter((C)=>C.name===c).length<=1,a=ZN(s),l=r.find((c)=>c.id===s||c.id.toLowerCase()===a);if(l!==void 0)return{datasetId:l.id,name:l.name,nameIsUnique:g(l.name)};let I=r.filter((c)=>c.name===s);if(b(I.length<=1,`Project ${o} has multiple datasets named "${s}": ${I.map(tb).join(", ")}.`),I.length===1){let[c]=I;return b(c,`Dataset "${s}" has no resolved ID.`),{datasetId:c.id,name:c.name,nameIsUnique:!0}}let d=n?.projectId===o?n.datasets[s]:void 0;if(d!==void 0){let c=r.find((C)=>C.id===d.datasetId);if(c!==void 0)return{datasetId:c.id,name:c.name,nameIsUnique:g(c.name)}}b(i&&a===void 0,r.length===0?`Dataset "${s}" does not exist in project ${o}. Run toloka apply first.`:`Dataset "${s}" does not exist in project ${o}. This project has: ${r.map(tb).join(", ")}.`),b((await nb(t)).length>0,`Dataset "${s}" does not exist in project ${o} and no pipeline in source declares it. Bind a pipeline to it in source so its columns are known, or upload to an existing dataset.`);let u=await e.datasets.create({projectId:o,name:s});return{datasetId:u.id,name:u.name,nameIsUnique:!0}},hN=(e)=>{let t=e.toLowerCase();if(t.endsWith(".json"))return"json";if(t.endsWith(".jsonl"))return"jsonl";if(t.endsWith(".csv"))return"csv";b(!1,`${e} must have a .json, .jsonl, or .csv extension`)},fN=async(e)=>{let t=Zo.basename(e),i=hN(t),n=await an.readFile(e,"utf8");if(i==="jsonl")for(let{line:o,lineNumber:s}of n.split(/\r?\n/u).map((r,g)=>({line:r,lineNumber:g+1})).filter(({line:r})=>r.length>0)){let r;try{r=JSON.parse(o)}catch{b(!1,`${t}:${s} is not valid JSON`)}b(uI(r),`${t}:${s} must contain a JSON object`)}return{payload:n,format:i,contentType:bN[i]}},Ir=async(e,t,i)=>{let n=i instanceof Error?i.message:String(i);try{await e.datasets.cancelUpload({uploadId:t})}catch(o){let s=o instanceof Error?o.message:String(o);throw AggregateError([i,o],`Dataset upload ${t} failed and could not be canceled. Upload error: ${n}. Cancellation error: ${s}.`)}throw new dr(`Dataset upload ${t} failed and was canceled: ${n}`,i)},yN=async({client:e,started:t,payload:i,contentType:n,fetch:o,retryIntervalMs:s})=>{let r;try{r=await o(t.uploadUrl,{method:"PUT",headers:{"Content-Type":n,"x-ms-blob-type":"BlockBlob"},body:i})}catch(a){return Ir(e,t.job.id,a)}if(!r.ok)return Ir(e,t.job.id,new dr(`Dataset upload failed with HTTP ${r.status}.`,void 0));let g=0;while(!0)try{await e.datasets.finalizeUpload({uploadId:t.job.id});return}catch(a){if(!(a instanceof te&&a.status===503))return Ir(e,t.job.id,a);if(g+=1,g===eb)return Ir(e,t.job.id,new dr(`Storage remained unavailable after ${eb} finalization attempts.`,a));let{promise:l,resolve:I}=Promise.withResolvers();setTimeout(I,s),await l}};async function sb(e,t){let{payload:i,format:n,contentType:o}=await fN(t.filePath),s=await mI(e,t,!0),r=s.datasetId,g=new Map;for await(let p of e.datasets.listAllFields({datasetId:r})){if(p.internal||p.name===ib)continue;g.set(p.name,{name:p.name,jsonSchema:p.jsonSchema})}for(let p of await nb({...t,datasetName:s.name}))if(!g.has(p.name))g.set(p.name,p);let a=[...g.values()],l=await e.datasets.startUpload({datasetId:r,filename:Zo.basename(t.filePath),format:n,declaredSizeBytes:new TextEncoder().encode(i).byteLength,fields:a});await yN({client:e,started:l,payload:i,contentType:o,fetch:t.fetch??globalThis.fetch,retryIntervalMs:t.waitFor?.intervalMs??1000});let I=await e.waitFor({type:"datasetUpload",uploadId:l.job.id},t.waitFor),d=s.nameIsUnique?s.name:s.datasetId,u=I.status==="failed"&&I.error?.startsWith("Schema incompatible with existing upload")===!0?`
|
|
226
|
+
Run toloka dataset fields ${JSON.stringify(d)} to inspect the inferred schema stored from the first successful upload.`:"";b(I.status==="succeeded",`${I.error??`Dataset upload ${I.id} failed.`}${u}`);let c=`Uploaded ${I.result.itemsIngested} rows to dataset ${s.name}.`,C=[],A,m;try{C=(await e.datasets.getInferredFields({datasetId:r})).fields,A=WN(C)}catch(p){m=`Upload succeeded, but inferred fields could not be fetched: ${p instanceof Error?p.message:String(p)}`}return{datasetId:r,rowsUploaded:I.result.itemsIngested,inferredFields:C,output:A===void 0?c:`${c}
|
|
227
|
+
${A}`,...m===void 0?{}:{warning:m}}}async function rb(e,t){let i=await mI(e,t,!1),n=await e.datasets.getInferredFields({datasetId:i.datasetId}),o=n.fields.filter((r)=>r.depth===1),s=TZ(o.map(({name:r,jsonSchema:g})=>({name:r,jsonSchema:g})));return{datasetId:i.datasetId,inferredFields:n.fields,declarations:s,output:o.length===0?`Dataset ${i.name} has no inferred fields yet.`:s}}async function gb(e,t){let i=await ob(e,t.projectId);if(i.length===0)return{output:"This project has no datasets."};return{output:i.map((n)=>`${n.name} ${n.id}`).join(`
|
|
228
|
+
`)}}var VN=async(e)=>{let t=await e.fetch(e.downloadUrl);b(t.ok,`Dataset export download failed with HTTP ${t.status}.`);let i=await t.text(),n;try{n=JSON.parse(i)}catch(s){throw Error(`Dataset export ${e.exportId} is not valid JSON.`,{cause:s})}b(Array.isArray(n),`Dataset export ${e.exportId} is not a JSON array.`);let o=[];for(let[s,r]of n.entries())b(uI(r),`Dataset export ${e.exportId} row ${s} is not a JSON object.`),o.push(r);return o};async function ab(e,t){let i=await mI(e,t,!1),n=[];for await(let a of e.datasets.listAllFields({datasetId:i.datasetId})){if(a.internal||a.name===ib)continue;n.push(a.name)}b(n.length>0,`Dataset ${i.name} has no fields to export.`);let o=await e.datasets.startExport({datasetId:i.datasetId,fields:n}),s;try{s=await e.waitFor({type:"datasetExport",exportId:o.id},t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs})}catch(a){throw b(!(a instanceof te&&a.code==="wait_timeout"),`Stopped waiting for dataset export ${o.id}; raise --timeout to wait longer.`),a}b(s.result.downloadUrl,`Dataset export ${s.id} succeeded without a download URL.`);let r=await VN({downloadUrl:s.result.downloadUrl,exportId:s.id,fetch:t.fetch??globalThis.fetch}),g=t.limit===void 0?r:r.slice(0,t.limit);return await an.mkdir(Zo.dirname(t.outPath),{recursive:!0}),await an.writeFile(t.outPath,g.length===0?"":`${g.map((a)=>JSON.stringify(a)).join(`
|
|
141
229
|
`)}
|
|
142
|
-
`),{output:`Wrote ${
|
|
143
|
-
`)},er=(e,t,r,n)=>{e.stdout(t?JSON.stringify(r,null,2):n)},qT=(e)=>Xn([["ID",e.id],["Name",e.displayName],["Provider",e.provider],["Upstream model",e.upstreamModel],["Upstream revision",e.upstreamRevision]]),Dy=(e)=>Xn([["ID",e.id],["Project",e.projectId],["Name",e.name],["Base model",e.baseModelId],["Description",e.description??"-"],["Archived at",e.archivedAt??"-"],["Created at",e.createdAt],["Updated at",e.updatedAt]]),$d=(e)=>{let t=LT.find((r)=>r===e);return _(t,`Unknown base model ${e}.`),t},Id=async(e,t,r)=>{if(r.startsWith("mdl."))return e.models.get({projectId:t,modelId:r});let n=[];for await(let i of e.models.listAll({projectId:t,limit:100}))if(i.name===r)n.push(i);return _(n.length===1,`Model ${r} was not found or is ambiguous.`),n[0]},Ny=async(e,t,r)=>{let n=await e.baseModels.list();er(r,t.json,n,n.length===0?"No base models found.":Xn([["ID","NAME","PROVIDER","UPSTREAM MODEL"],...n.map((i)=>[i.id,i.displayName,i.provider,i.upstreamModel])]))},My=async(e,t,r)=>{let n=await e.baseModels.get({id:t.id});er(r,t.json,n,qT(n))},Ly=async(e,t,r)=>{let n=await e.models.listPage({projectId:t.projectId,limit:100,offset:0});er(r,t.json,n.models,n.models.length===0?"No models found.":Xn([["ID","NAME","BASE MODEL"],...n.models.map((i)=>[i.id,i.name,i.baseModelId])]))},qy=async(e,t,r)=>{let n=await Id(e,t.projectId,t.nameOrId);er(r,t.json,n,Dy(n))},Uy=async(e,t,r)=>{let n=await Id(e,t.projectId,t.nameOrId),i=[];for await(let s of e.models.listAllVersions({projectId:t.projectId,modelId:n.id,limit:100}))i.push(s);er(r,t.json,i,i.length===0?"No Model Versions found.":Xn([["VERSION","ID","CREATED AT"],...i.map((s)=>[s.version,s.id,s.createdAt])]))},By=async(e,t,r)=>{let{json:n,...i}=t,s=await e.models.create(i);er(r,n,s,Dy(s))},Gy=async(e,t,r)=>{let n=await Id(e,t.projectId,t.nameOrId),i=await e.models.archive({projectId:t.projectId,modelId:n.id});er(r,t.json,i,`Archived Model ${i.id}.`)};var UT=["emacs","vim"],BT=new Set(UT);function GT(e){return BT.has(e)}function Vy(){let e=process.env.INQUIRER_KEYBINDINGS;if(!e)return[];return Array.from(new Set(e.toLowerCase().split(/[\s,]+/).filter(GT)))}var Zn=(e,t=[])=>e.name==="up"||t.includes("vim")&&e.name==="k"||t.includes("emacs")&&e.ctrl&&e.name==="p",Ls=(e,t=[])=>e.name==="down"||t.includes("vim")&&e.name==="j"||t.includes("emacs")&&e.ctrl&&e.name==="n";var Ed=(e)=>e.name==="backspace";var Sd=(e)=>"1234567890".includes(e.name),xd=(e)=>e.name==="enter"||e.name==="return";class jd extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(e){super();this.cause=e?.cause}}class Rd extends Error{name="CancelPromptError";message="Prompt was canceled"}class qs extends Error{name="ExitPromptError"}class Cd extends Error{name="HookError"}class ei extends Error{name="ValidationError"}var Hy=require("async_hooks");var Us=require("async_hooks");var zy=new Us.AsyncLocalStorage;function VT(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function Ky(e,t){let r=VT(e);return zy.run(r,()=>{function n(i){r.handleChange=()=>{r.index=0,i()},r.handleChange()}return t(n)})}function tr(){let e=zy.getStore();if(!e)throw new Cd("[Inquirer] Hook functions can only be called from within a prompt");return e}function Od(){return tr().rl}function Fd(e){let t=(...r)=>{let n=tr(),i=!1,s=n.handleChange;n.handleChange=()=>{i=!0};let o=e(...r);if(i)s();return n.handleChange=s,o};return Us.AsyncResource.bind(t)}function Gr(e){let t=tr(),{index:r}=t,n={get(){return t.hooks[r]},set(s){t.hooks[r]=s},initialized:r in t.hooks},i=e(n);return t.index++,i}function Wy(){tr().handleChange()}var rr={queue(e){let t=tr(),{index:r}=t;t.hooksEffect.push(()=>{t.hooksCleanup[r]?.();let n=e(Od());if(n!=null&&typeof n!=="function")throw new ei("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[r]=n})},run(){let e=tr();Fd(()=>{e.hooksEffect.forEach((t)=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=tr();e.hooksCleanup.forEach((t)=>{t?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function zT(e){return typeof e==="function"}function ot(e){return Gr((t)=>{let r=Hy.AsyncResource.bind(function(s){if(t.get()!==s)t.set(s),Wy()});if(t.initialized)return[t.get(),r];let n=zT(e)?e():e;return t.set(n),[n,r]})}function nr(e,t){Gr((r)=>{let n=r.get();if(!Array.isArray(n)||t.some((s,o)=>!Object.is(s,n[o])))rr.queue(e);r.set(t)})}var Ne=require("util");var De=Re(require("process"));function KT(){if(!De.default.platform.startsWith("win"))return De.default.env.TERM!=="linux";return Boolean(De.default.env.CI)||Boolean(De.default.env.WT_SESSION)||Boolean(De.default.env.TERMINUS_SUBLIME)||De.default.env.ConEmuTask==="{cmd::Cmder}"||De.default.env.TERM_PROGRAM==="Terminus-Sublime"||De.default.env.TERM_PROGRAM==="vscode"||De.default.env.TERM==="xterm-256color"||De.default.env.TERM==="alacritty"||De.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Jy={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},Qy={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},WT={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},HT={...Jy,...Qy},JT={...Jy,...WT},QT=KT(),YT=QT?HT:JT,Vr=YT,yB=Object.entries(Qy);var XT={prefix:{idle:Ne.styleText("blue","?"),done:Ne.styleText("green",Vr.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((e)=>Ne.styleText("yellow",e))},keybindings:[],style:{answer:(e)=>Ne.styleText("cyan",e),message:(e)=>Ne.styleText("bold",e),error:(e)=>Ne.styleText("red",`> ${e}`),defaultAnswer:(e)=>Ne.styleText("dim",`(${e})`),help:(e)=>Ne.styleText("dim",e),highlight:(e)=>Ne.styleText("cyan",e),key:(e)=>Ne.styleText("cyan",Ne.styleText("bold",`<${e}>`))}};function Yy(){return{...XT,keybindings:Vy()}}function Xy(e){if(typeof e!=="object"||e===null)return!1;let t=e;while(Object.getPrototypeOf(t)!==null)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Zy(...e){let t={};for(let r of e)for(let[n,i]of Object.entries(r)){let s=t[n];t[n]=Xy(s)&&Xy(i)?Zy(s,i):i}return t}function ti(...e){let t=[Yy(),...e.filter((r)=>r!=null)];return Zy(...t)}function Td({status:e="idle",theme:t}){let[r,n]=ot(!1),[i,s]=ot(0),{prefix:o,spinner:a}=ti(t);if(nr(()=>{if(e==="loading"){let d,c=-1,p=setTimeout(()=>{n(!0),d=setInterval(()=>{c=c+1,s(c%a.frames.length)},a.interval)},300);return()=>{clearTimeout(p),clearInterval(d)}}else n(!1)},[e]),r)return a.frames[i];return typeof o==="string"?o:o[e==="loading"?"idle":e]??o.idle}function ri(e,t){return Gr((r)=>{let n=r.get();if(!n||n.dependencies.length!==t.length||n.dependencies.some((i,s)=>i!==t[s])){let i=e();return r.set({value:i,dependencies:t}),i}return n.value})}function ir(e){return ot({current:e})[0]}function Ad(e){let t=ir(e);t.current=e,nr((r)=>{let n=!1,i=Fd((s,o)=>{if(n)return;t.current(o,r)});return r.input.on("keypress",i),()=>{n=!0,r.input.removeListener("keypress",i)}},[])}var y_=Re(t_(),1);var r_=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(t)=>{let r=0;e.lastIndex=0;while(e.test(t))r+=1;return t.length-r}})(),n_=(e)=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,i_=(e)=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var tA=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,rA=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,s_=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,nA=/\t{1,1000}/y,o_=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,iA=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,sA=/\p{M}+/gu,oA={limit:1/0,ellipsis:""},a_=(e,t={},r={})=>{let n=t.limit??1/0,i=t.ellipsis??"",s=t?.ellipsisWidth??(i?a_(i,oA,r).width:0),o=0,a=r.controlWidth??0,l=r.tabWidth??8,d=r.emojiWidth??2,c=2,p=r.regularWidth??1,h=r.wideWidth??2,u=[[iA,p],[tA,0],[rA,a],[nA,l],[o_,d],[s_,h]],f=0,m=0,g=e.length,y=0,b=!1,v=g,I=Math.max(0,n-s),E=0,w=0,x=0,T=0;e:while(!0){if(w>E||m>=g&&m>f){let R=e.slice(E,w)||e.slice(f,m);y=0;for(let V of R.replaceAll(sA,"")){let Q=V.codePointAt(0)||0;if(n_(Q))T=2;else if(i_(Q))T=h;else T=p;if(x+T>I)v=Math.min(v,Math.max(E,f)+y);if(x+T>n){b=!0;break e}y+=V.length,x+=T}E=w=0}if(m>=g)break e;for(let R=0,V=u.length;R<V;R++){let[Q,ee]=u[R];if(Q.lastIndex=m,Q.test(e)){if(y=Q===s_?r_(e.slice(m,Q.lastIndex)):Q===o_?1:Q.lastIndex-m,T=y*ee,x+T>I)v=Math.min(v,m+Math.floor((I-x)/ee));if(x+T>n){b=!0;break e}x+=T,E=f,w=m,m=f=Q.lastIndex;continue e}}m+=1}return{width:b?I:x,index:b?v:g,truncated:b,ellipsed:b&&n>=s}},l_=a_;var aA={limit:1/0,ellipsis:"",ellipsisWidth:0},lA=(e,t={})=>l_(e,aA,t).width,bt=lA;var Bs="\x1B",f_="\x9B",dA=39,Dd="\x07",m_="[",cA="]",h_="m",Nd=`${cA}8;;`,d_=new RegExp(`(?:\\${m_}(?<code>\\d+)m|\\${Nd}(?<uri>.*)${Dd})`,"y"),c_=(e)=>{if(e>=30&&e<=37)return 39;if(e>=90&&e<=97)return 39;if(e>=40&&e<=47)return 49;if(e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0;return},u_=(e)=>`${Bs}${m_}${e}${h_}`,p_=(e)=>`${Bs}${Nd}${e}${Dd}`,kd=(e,t,r)=>{let n=t[Symbol.iterator](),i=!1,s=!1,o=e.at(-1),a=o===void 0?0:bt(o),l=n.next(),d=n.next(),c=0;while(!l.done){let p=l.value,h=bt(p);if(a+h<=r)e[e.length-1]+=p;else e.push(p),a=0;if(p===Bs||p===f_)i=!0,s=t.startsWith(Nd,c+1);if(i){if(s){if(p===Dd)i=!1,s=!1}else if(p===h_)i=!1}else if(a+=h,a===r&&!d.done)e.push(""),a=0;l=d,d=n.next(),c+=p.length}if(o=e.at(-1),!a&&o!==void 0&&o.length&&e.length>1)e[e.length-2]+=e.pop()},uA=(e)=>{let t=e.split(" "),r=t.length;while(r){if(bt(t[r-1]))break;r--}if(r===t.length)return e;return t.slice(0,r).join(" ")+t.slice(r).join("")},pA=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,s,o=e.split(" "),a=[""],l=0;for(let p=0;p<o.length;p++){let h=o[p];if(r.trim!==!1){let f=a.at(-1)??"",m=f.trimStart();if(f.length!==m.length)a[a.length-1]=m,l=bt(m)}if(p!==0){if(l>=t&&(r.wordWrap===!1||r.trim===!1))a.push(""),l=0;if(l||r.trim===!1)a[a.length-1]+=" ",l++}let u=bt(h);if(r.hard&&u>t){let f=t-l,m=1+Math.floor((u-f-1)/t);if(Math.floor((u-1)/t)<m)a.push("");kd(a,h,t),l=bt(a.at(-1)??"");continue}if(l+u>t&&l&&u){if(r.wordWrap===!1&&l<t){kd(a,h,t),l=bt(a.at(-1)??"");continue}a.push(""),l=0}if(l+u>t&&r.wordWrap===!1){kd(a,h,t),l=bt(a.at(-1)??"");continue}a[a.length-1]+=h,l+=u}if(r.trim!==!1)a=a.map((p)=>uA(p));let d=a.join(`
|
|
144
|
-
`),
|
|
145
|
-
`){if(s)n+=
|
|
146
|
-
`){if(
|
|
147
|
-
`)}function
|
|
148
|
-
`).flatMap((
|
|
230
|
+
`),{output:`Wrote ${g.length} rows to ${t.outPath}.`}}async function lb(e,t){return await e.secrets.set({projectId:t.projectId,name:t.name,value:t.value}),{name:t.name,output:`Set secret ${t.name}.`}}var BN=["qwen3-4b","qwen3-8b","qwen3-32b","qwen3-235b"],bo=(e)=>{let t=e.reduce((i,n)=>n.map((o,s)=>Math.max(i[s]??0,o.length)),[]);return e.map((i)=>i.map((n,o)=>n.padEnd(t[o]??n.length)).join(" ").trimEnd()).join(`
|
|
231
|
+
`)},di=(e,t,i,n)=>{e.stdout(t?JSON.stringify(i,null,2):n)},RN=(e)=>bo([["ID",e.id],["Name",e.displayName],["Provider",e.provider],["Upstream model",e.upstreamModel],["Upstream revision",e.upstreamRevision]]),Ib=(e)=>bo([["ID",e.id],["Project",e.projectId],["Name",e.name],["Base model",e.baseModelId],["Description",e.description??"-"],["Archived at",e.archivedAt??"-"],["Created at",e.createdAt],["Updated at",e.updatedAt]]),pI=(e)=>{let t=BN.find((i)=>i===e);return b(t,`Unknown base model ${e}.`),t},AI=async(e,t,i)=>{if(i.startsWith("mdl."))return e.models.get({projectId:t,modelId:i});let n=[];for await(let o of e.models.listAll({projectId:t,limit:100}))if(o.name===i)n.push(o);return b(n.length===1,`Model ${i} was not found or is ambiguous.`),n[0]},db=async(e,t,i)=>{let n=await e.baseModels.list();di(i,t.json,n,n.length===0?"No base models found.":bo([["ID","NAME","PROVIDER","UPSTREAM MODEL"],...n.map((o)=>[o.id,o.displayName,o.provider,o.upstreamModel])]))},cb=async(e,t,i)=>{let n=await e.baseModels.get({id:t.id});di(i,t.json,n,RN(n))},Cb=async(e,t,i)=>{let n=await e.models.listPage({projectId:t.projectId,limit:100,offset:0});di(i,t.json,n.models,n.models.length===0?"No models found.":bo([["ID","NAME","BASE MODEL"],...n.models.map((o)=>[o.id,o.name,o.baseModelId])]))},ub=async(e,t,i)=>{let n=await AI(e,t.projectId,t.nameOrId);di(i,t.json,n,Ib(n))},mb=async(e,t,i)=>{let n=await AI(e,t.projectId,t.nameOrId),o=[];for await(let s of e.models.listAllVersions({projectId:t.projectId,modelId:n.id,limit:100}))o.push(s);di(i,t.json,o,o.length===0?"No Model Versions found.":bo([["VERSION","ID","CREATED AT"],...o.map((s)=>[s.version,s.id,s.createdAt])]))},pb=async(e,t,i)=>{let{json:n,...o}=t,s=await e.models.create(o);di(i,n,s,Ib(s))},Ab=async(e,t,i)=>{let n=await AI(e,t.projectId,t.nameOrId),o=await e.models.archive({projectId:t.projectId,modelId:n.id});di(i,t.json,o,`Archived Model ${o.id}.`)};var GN=["emacs","vim"],wN=new Set(GN);function FN(e){return wN.has(e)}function Zb(){let e=process.env.INQUIRER_KEYBINDINGS;if(!e)return[];return Array.from(new Set(e.toLowerCase().split(/[\s,]+/).filter(FN)))}var Wo=(e,t=[])=>e.name==="up"||t.includes("vim")&&e.name==="k"||t.includes("emacs")&&e.ctrl&&e.name==="p",cr=(e,t=[])=>e.name==="down"||t.includes("vim")&&e.name==="j"||t.includes("emacs")&&e.ctrl&&e.name==="n";var ZI=(e)=>e.name==="backspace";var bI=(e)=>"1234567890".includes(e.name),WI=(e)=>e.name==="enter"||e.name==="return";class hI extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(e){super();this.cause=e?.cause}}class fI extends Error{name="CancelPromptError";message="Prompt was canceled"}class Cr extends Error{name="ExitPromptError"}class yI extends Error{name="HookError"}class ho extends Error{name="ValidationError"}var fb=require("async_hooks");var ur=require("async_hooks");var bb=new ur.AsyncLocalStorage;function HN(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function Wb(e,t){let i=HN(e);return bb.run(i,()=>{function n(o){i.handleChange=()=>{i.index=0,o()},i.handleChange()}return t(n)})}function ci(){let e=bb.getStore();if(!e)throw new yI("[Inquirer] Hook functions can only be called from within a prompt");return e}function VI(){return ci().rl}function BI(e){let t=(...i)=>{let n=ci(),o=!1,s=n.handleChange;n.handleChange=()=>{o=!0};let r=e(...i);if(o)s();return n.handleChange=s,r};return ur.AsyncResource.bind(t)}function ln(e){let t=ci(),{index:i}=t,n={get(){return t.hooks[i]},set(s){t.hooks[i]=s},initialized:i in t.hooks},o=e(n);return t.index++,o}function hb(){ci().handleChange()}var Ci={queue(e){let t=ci(),{index:i}=t;t.hooksEffect.push(()=>{t.hooksCleanup[i]?.();let n=e(VI());if(n!=null&&typeof n!=="function")throw new ho("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[i]=n})},run(){let e=ci();BI(()=>{e.hooksEffect.forEach((t)=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=ci();e.hooksCleanup.forEach((t)=>{t?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function vN(e){return typeof e==="function"}function lt(e){return ln((t)=>{let i=fb.AsyncResource.bind(function(s){if(t.get()!==s)t.set(s),hb()});if(t.initialized)return[t.get(),i];let n=vN(e)?e():e;return t.set(n),[n,i]})}function ui(e,t){ln((i)=>{let n=i.get();if(!Array.isArray(n)||t.some((s,r)=>!Object.is(s,n[r])))Ci.queue(e);i.set(t)})}var Ee=require("util");var Je=be(require("process"));function kN(){if(!Je.default.platform.startsWith("win"))return Je.default.env.TERM!=="linux";return Boolean(Je.default.env.CI)||Boolean(Je.default.env.WT_SESSION)||Boolean(Je.default.env.TERMINUS_SUBLIME)||Je.default.env.ConEmuTask==="{cmd::Cmder}"||Je.default.env.TERM_PROGRAM==="Terminus-Sublime"||Je.default.env.TERM_PROGRAM==="vscode"||Je.default.env.TERM==="xterm-256color"||Je.default.env.TERM==="alacritty"||Je.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var yb={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},Vb={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},PN={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},YN={...yb,...Vb},NN={...yb,...PN},XN=kN(),SN=XN?YN:NN,In=SN,XT=Object.entries(Vb);var xN={prefix:{idle:Ee.styleText("blue","?"),done:Ee.styleText("green",In.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((e)=>Ee.styleText("yellow",e))},keybindings:[],style:{answer:(e)=>Ee.styleText("cyan",e),message:(e)=>Ee.styleText("bold",e),error:(e)=>Ee.styleText("red",`> ${e}`),defaultAnswer:(e)=>Ee.styleText("dim",`(${e})`),help:(e)=>Ee.styleText("dim",e),highlight:(e)=>Ee.styleText("cyan",e),key:(e)=>Ee.styleText("cyan",Ee.styleText("bold",`<${e}>`))}};function Bb(){return{...xN,keybindings:Zb()}}function Rb(e){if(typeof e!=="object"||e===null)return!1;let t=e;while(Object.getPrototypeOf(t)!==null)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Gb(...e){let t={};for(let i of e)for(let[n,o]of Object.entries(i)){let s=t[n];t[n]=Rb(s)&&Rb(o)?Gb(s,o):o}return t}function fo(...e){let t=[Bb(),...e.filter((i)=>i!=null)];return Gb(...t)}function RI({status:e="idle",theme:t}){let[i,n]=lt(!1),[o,s]=lt(0),{prefix:r,spinner:g}=fo(t);if(ui(()=>{if(e==="loading"){let l,I=-1,d=setTimeout(()=>{n(!0),l=setInterval(()=>{I=I+1,s(I%g.frames.length)},g.interval)},300);return()=>{clearTimeout(d),clearInterval(l)}}else n(!1)},[e]),i)return g.frames[o];return typeof r==="string"?r:r[e==="loading"?"idle":e]??r.idle}function yo(e,t){return ln((i)=>{let n=i.get();if(!n||n.dependencies.length!==t.length||n.dependencies.some((o,s)=>o!==t[s])){let o=e();return i.set({value:o,dependencies:t}),o}return n.value})}function mi(e){return lt({current:e})[0]}function GI(e){let t=mi(e);t.current=e,ui((i)=>{let n=!1,o=BI((s,r)=>{if(n)return;t.current(r,i)});return i.input.on("keypress",o),()=>{n=!0,i.input.removeListener("keypress",o)}},[])}var jb=be(Fb(),1);var Hb=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(t)=>{let i=0;e.lastIndex=0;while(e.test(t))i+=1;return t.length-i}})(),vb=(e)=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,kb=(e)=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var UN=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,ON=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Pb=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,TN=/\t{1,1000}/y,Yb=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,zN=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,jN=/\p{M}+/gu,DN={limit:1/0,ellipsis:""},Nb=(e,t={},i={})=>{let n=t.limit??1/0,o=t.ellipsis??"",s=t?.ellipsisWidth??(o?Nb(o,DN,i).width:0),r=0,g=i.controlWidth??0,a=i.tabWidth??8,l=i.emojiWidth??2,I=2,d=i.regularWidth??1,u=i.wideWidth??2,c=[[zN,d],[UN,0],[ON,g],[TN,a],[Yb,l],[Pb,u]],C=0,A=0,m=e.length,p=0,Z=!1,W=m,h=Math.max(0,n-s),f=0,V=0,B=0,F=0;e:while(!0){if(V>f||A>=m&&A>C){let R=e.slice(f,V)||e.slice(C,A);p=0;for(let U of R.replaceAll(jN,"")){let K=U.codePointAt(0)||0;if(vb(K))F=2;else if(kb(K))F=u;else F=d;if(B+F>h)W=Math.min(W,Math.max(f,C)+p);if(B+F>n){Z=!0;break e}p+=U.length,B+=F}f=V=0}if(A>=m)break e;for(let R=0,U=c.length;R<U;R++){let[K,ee]=c[R];if(K.lastIndex=A,K.test(e)){if(p=K===Pb?Hb(e.slice(A,K.lastIndex)):K===Yb?1:K.lastIndex-A,F=p*ee,B+F>h)W=Math.min(W,A+Math.floor((h-B)/ee));if(B+F>n){Z=!0;break e}B+=F,f=C,V=A,A=C=K.lastIndex;continue e}}A+=1}return{width:Z?h:B,index:Z?W:m,truncated:Z,ellipsed:Z&&n>=s}},Xb=Nb;var QN={limit:1/0,ellipsis:"",ellipsisWidth:0},_N=(e,t={})=>Xb(e,QN,t).width,Vt=_N;var mr="\x1B",Ub="\x9B",KN=39,FI="\x07",Ob="[",LN="]",Tb="m",HI=`${LN}8;;`,Sb=new RegExp(`(?:\\${Ob}(?<code>\\d+)m|\\${HI}(?<uri>.*)${FI})`,"y"),xb=(e)=>{if(e>=30&&e<=37)return 39;if(e>=90&&e<=97)return 39;if(e>=40&&e<=47)return 49;if(e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0;return},Jb=(e)=>`${mr}${Ob}${e}${Tb}`,Eb=(e)=>`${mr}${HI}${e}${FI}`,wI=(e,t,i)=>{let n=t[Symbol.iterator](),o=!1,s=!1,r=e.at(-1),g=r===void 0?0:Vt(r),a=n.next(),l=n.next(),I=0;while(!a.done){let d=a.value,u=Vt(d);if(g+u<=i)e[e.length-1]+=d;else e.push(d),g=0;if(d===mr||d===Ub)o=!0,s=t.startsWith(HI,I+1);if(o){if(s){if(d===FI)o=!1,s=!1}else if(d===Tb)o=!1}else if(g+=u,g===i&&!l.done)e.push(""),g=0;a=l,l=n.next(),I+=d.length}if(r=e.at(-1),!g&&r!==void 0&&r.length&&e.length>1)e[e.length-2]+=e.pop()},MN=(e)=>{let t=e.split(" "),i=t.length;while(i){if(Vt(t[i-1]))break;i--}if(i===t.length)return e;return t.slice(0,i).join(" ")+t.slice(i).join("")},$N=(e,t,i={})=>{if(i.trim!==!1&&e.trim()==="")return"";let n="",o,s,r=e.split(" "),g=[""],a=0;for(let d=0;d<r.length;d++){let u=r[d];if(i.trim!==!1){let C=g.at(-1)??"",A=C.trimStart();if(C.length!==A.length)g[g.length-1]=A,a=Vt(A)}if(d!==0){if(a>=t&&(i.wordWrap===!1||i.trim===!1))g.push(""),a=0;if(a||i.trim===!1)g[g.length-1]+=" ",a++}let c=Vt(u);if(i.hard&&c>t){let C=t-a,A=1+Math.floor((c-C-1)/t);if(Math.floor((c-1)/t)<A)g.push("");wI(g,u,t),a=Vt(g.at(-1)??"");continue}if(a+c>t&&a&&c){if(i.wordWrap===!1&&a<t){wI(g,u,t),a=Vt(g.at(-1)??"");continue}g.push(""),a=0}if(a+c>t&&i.wordWrap===!1){wI(g,u,t),a=Vt(g.at(-1)??"");continue}g[g.length-1]+=u,a+=c}if(i.trim!==!1)g=g.map((d)=>MN(d));let l=g.join(`
|
|
232
|
+
`),I=!1;for(let d=0;d<l.length;d++){let u=l[d];if(n+=u,!I){if(I=u>="\uD800"&&u<="\uDBFF",I)continue}else I=!1;if(u===mr||u===Ub){Sb.lastIndex=d+1;let C=Sb.exec(l)?.groups;if(C?.code!==void 0){let A=Number.parseFloat(C.code);o=A===KN?void 0:A}else if(C?.uri!==void 0)s=C.uri.length===0?void 0:C.uri}if(l[d+1]===`
|
|
233
|
+
`){if(s)n+=Eb("");let c=o?xb(o):void 0;if(o&&c)n+=Jb(c)}else if(u===`
|
|
234
|
+
`){if(o&&xb(o))n+=Jb(o);if(s)n+=Eb(s)}}return n},qN=/\r?\n/;function zb(e,t,i){return String(e).normalize().split(qN).map((n)=>$N(n,t,i)).join(`
|
|
235
|
+
`)}function Vo(e,t){return e.split(`
|
|
236
|
+
`).flatMap((i)=>zb(i,t,{trim:!1,wordWrap:!1}).split(`
|
|
149
237
|
`).map((n)=>n.trimEnd())).join(`
|
|
150
|
-
`)}function
|
|
151
|
-
`)}),
|
|
152
|
-
`)}var
|
|
153
|
-
`).length,
|
|
154
|
-
`).pop()??"";class
|
|
155
|
-
`;let
|
|
156
|
-
`+t:""),
|
|
157
|
-
`,t+=
|
|
158
|
-
at ${R}`)}let[
|
|
159
|
-
`).trimEnd()}${
|
|
160
|
-
`)}}var
|
|
161
|
-
`)};try{let
|
|
162
|
-
`):`Run ${
|
|
163
|
-
`)};throw
|
|
164
|
-
`)}}async function
|
|
165
|
-
`)}}async function
|
|
166
|
-
${
|
|
167
|
-
${e.state.error}`};async function
|
|
168
|
-
`)}}var
|
|
169
|
-
`)};async function
|
|
170
|
-
`),
|
|
171
|
-
${LA}`).configureOutput({writeOut:(u)=>e.io.stdout(u.replace(/\n$/u,"")),writeErr:(u)=>e.io.stderr(u.replace(/\n$/u,""))}).exitOverride();let i=()=>t.opts();t.hook("postAction",async(u,f)=>{if(n)return;let m=[];for(let b=f;b!==null;b=b.parent)m.push(b.name());if(m.includes("init")||m.includes("help")||m.includes("report")||m.includes("url")||m.includes("version"))return;let g=await At(i(),e.io),y=await Sg(g).catch(()=>{return});if(y===void 0)return;n=!0,e.io.stderr(y)}),t.command("version").description("print the current CLI version").action(()=>e.io.stdout(Ve)),t.command("login").description("store an API key for this machine after verifying it").action(async()=>{let u=await bm({...i().apiKey===void 0?{}:{apiKey:i().apiKey},...i().baseUrl===void 0?{}:{baseUrl:i().baseUrl},...e.io.prompt===void 0?{}:{prompt:e.io.prompt},write:e.io.stdout,environment:e.environment});e.io.stdout(u.output);try{let f=await am(e.environment);if(f===void 0)return;let m=e.injectedClient??ct(f);await si(m,e.analytics)}catch{}}),t.command("logout").description("remove stored credentials from this machine").action(async()=>{let u=await Pm(e.environment);e.io.stdout(u.output)}),t.command("auth-status").alias("whoami").description("show which platform and key the CLI would use").option("--show-token","print the API key instead of masking it",!1).action(async(u)=>{let f=i(),m=await xn(e.environment,f.apiKey??e.environment.POTATO_API_KEY),g=m.found?.credentials,y=await At(f,e.io),b=await Ee(y),v=ec(f,e,g,b),I=e.injectedClient,E=await wm({environment:e.environment,showToken:u.showToken,credentialLookup:m,...f.apiKey===void 0?{}:{flagApiKey:f.apiKey},...f.baseUrl===void 0?{}:{flagBaseUrl:f.baseUrl},...I===void 0?{}:{probe:()=>I},...v===void 0?{}:{project:v}});if(e.io.stdout(E.output),!E.authenticated){r.value=1;return}try{let w=yl(f,b,e.environment,g),x=e.injectedClient??ct({apiKey:w.apiKey,baseUrl:w.baseUrl});await si(x,e.analytics)}catch{}});let s=t.command("project").description("select and manage the current platform project");s.command("list").description("list remote projects this key can see").action(async()=>{let u=i(),{client:f,stored:m,state:g}=await z(u,e),y=ec(u,e,m,g);await pm({client:f,io:e.io,...y===void 0?{}:{context:y}})}),s.command("add").argument("[alias]","local name for this project").argument("[projectId]","platform project id").description("register a live project and select it").action(async(u,f)=>{let m=i(),g=await Ct(e.environment),y=e.injectedClient??ct(g.credentials);await fm({environment:e.environment,flags:m,client:y,io:e.io,afterPreflight:async()=>si(y,e.analytics),...u===void 0?{}:{alias:u},...f===void 0?{}:{projectId:f}})}),s.command("switch").argument("<alias>","local project alias").description("select a registered project").action(async(u)=>{await mm({environment:e.environment,flags:i(),alias:u,io:e.io})}),s.command("current").description("show the project this command would use").action(async()=>{let u=i(),f=await tc(u,e),m=await At(u,e.io),g=await Ee(m);if(gm({flags:u,environment:e.environment,stored:f,...g===void 0?{}:{state:g},io:e.io}).project===void 0)r.value=1}),s.command("url").description("print the current project URL").action(async()=>{let{baseUrl:u,client:f,projectId:m}=await z(i(),e);_(m,X);let g=await f.projects.get({projectId:m}),y=new URL(`/teams/${encodeURIComponent(g.teamId)}/projects/${encodeURIComponent(g.id)}`,u);e.io.stdout(y.href)}),s.command("remove").argument("<alias>","local project alias").description("forget a local project alias").action(async(u)=>{await hm({environment:e.environment,flags:i(),alias:u,io:e.io})}),s.command("create").argument("[alias]","local name for the new project").option("--name <name>","platform project name").option("--team-id <id>","team that owns the project").description("create a live project and select it").action(async(u,f)=>{let m=i(),g=await Ct(e.environment),y=e.injectedClient??ct(g.credentials),b=await At(m,e.io);await ym({environment:e.environment,flags:m,client:y,io:e.io,sourceRoot:b,afterPreflight:async()=>si(y,e.analytics),...u===void 0?{}:{alias:u},...f.name===void 0?{}:{name:f.name},...f.teamId===void 0?{}:{teamId:f.teamId}})}),t.command("init").description("initialize this project directory and install the agent bootstrap").action(async()=>{let u=i(),f=X_(u),m=await tc(u,e),g=await Ee(f),y=ec(u,e,m,g),b=await Eg(f,y===void 0?{}:{projectId:y.id});if(e.io.stdout(b.output),b.warning!==void 0)e.io.stderr(b.warning)}),t.command("import").argument("[projectId]","existing project to write into source; defaults to the selected project").option("-f, --force","replace an existing pipelines/ directory",!1).description("generate TypeScript source from a live project").action(async(u,f)=>{let{sourceRoot:m,client:g,projectId:y}=await z(i(),e),b=u??y;_(b,X);let v=await vy(g,{sourceRoot:m,projectId:b,...f?.force===!0?{force:!0}:{}});e.io.stdout(v.output)}),t.command("plan").description("show what apply would change").action(async()=>{let{sourceRoot:u,client:f,projectId:m}=await z(i(),e),g=await wy(f,{sourceRoot:u,...m===void 0?{}:{projectId:m}});e.io.stdout(g.output)}),t.command("validate").description("run platform spec validation and report matching checks").action(async()=>{let{sourceRoot:u,client:f,projectId:m}=await z(i(),e),g=await Ey(f,{sourceRoot:u,...m===void 0?{}:{projectId:m}});if(e.io.stdout(g.output),!g.valid)r.value=1}),t.command("apply").description("make the platform match source").action(async()=>{let{sourceRoot:u,client:f,projectId:m}=await z(i(),e),g=await Iy(f,{sourceRoot:u,...m===void 0?{}:{projectId:m}});e.io.stdout(g.output)}),t.command("secret").description("manage project secrets").command("set").argument("<name>","secret name referenced by a code node").option("--from-env <variable>","read the value from this environment variable instead of stdin").description("set a secret value without writing it to disk").action(async(u,f)=>{let{client:m,projectId:g}=await z(i(),e);_(g,X);let y=f.fromEnv===void 0?(await e.io.readStdin()).replace(/\r?\n$/u,""):e.environment[f.fromEnv];_(y!==void 0,`Missing secret value. Set ${f.fromEnv??"the named environment variable"} or pipe it to stdin.`);try{let b=await ky(m,{projectId:g,name:u,value:y});e.io.stdout(b.output)}catch{e.io.stderr(`Failed to set secret ${u}.`),r.value=1}});let a=t.command("base-model").description("inspect the global base model catalog");a.command("list").option("--json","print JSON",!1).description("list base models").action(async(u)=>{let{client:f}=await z(i(),e);await Ny(f,{json:u.json},e.io)}),a.command("get").argument("<id>","base model ID").option("--json","print JSON",!1).description("show one base model").action(async(u,f)=>{let{client:m}=await z(i(),e);await My(m,{id:$d(u),json:f.json},e.io)});let l=t.command("model").description("manage project Models and immutable versions");l.command("list").option("--json","print JSON",!1).description("list Models owned by the selected project").action(async(u)=>{let{client:f,projectId:m}=await z(i(),e);_(m,X),await Ly(f,{projectId:m,json:u.json},e.io)}),l.command("get").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("show one project Model").action(async(u,f)=>{let{client:m,projectId:g}=await z(i(),e);_(g,X),await qy(m,{projectId:g,nameOrId:u,json:f.json},e.io)}),l.command("versions").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("list immutable versions of a model").action(async(u,f)=>{let{client:m,projectId:g}=await z(i(),e);_(g,X),await Uy(m,{projectId:g,nameOrId:u,json:f.json},e.io)}),l.command("create").argument("<name>","new Model name").requiredOption("--base <id>","base model ID").option("--description <text>","Model description").option("--json","print JSON",!1).description("create project Model metadata without a Model Version").action(async(u,f)=>{let{client:m,projectId:g}=await z(i(),e);_(g,X),await By(m,{projectId:g,name:u,description:f.description,baseModelId:$d(f.base),json:f.json},e.io)}),l.command("archive").option("--json","print JSON",!1).argument("<name-or-id>","project Model name or ID").description("archive a project Model").action(async(u,f)=>{let{client:m,projectId:g}=await z(i(),e);_(g,X),await Gy(m,{projectId:g,nameOrId:u,json:f.json},e.io)});let d=t.command("dataset").description("inspect and move dataset catalog and rows");d.command("list").description("list live datasets in the selected project").action(async()=>{let{client:u,projectId:f}=await z(i(),e);_(f,X);let m=await Ty(u,{projectId:f});e.io.stdout(m.output)}),d.command("fields").argument("<name>","dataset name or id").description("print field declarations inferred from uploaded rows").action(async(u)=>{let{sourceRoot:f,client:m,projectId:g}=await z(i(),e),y=await Fy(m,{sourceRoot:f,datasetName:u,...g===void 0?{}:{projectId:g}});e.io.stdout(y.output)}),d.command("load").argument("<name>","dataset name or id").requiredOption("--out <file>","JSONL file to write").option("--limit <n>","how many rows to keep after download",Wr).option("--timeout <ms>","how long to wait for the export",Wr).description("download live dataset rows into a JSONL file").action(async(u,f)=>{let{sourceRoot:m,client:g,projectId:y}=await z(i(),e),b=await Ay(g,{sourceRoot:m,datasetName:u,outPath:oi.resolve(f.out),...y===void 0?{}:{projectId:y},...f.limit===void 0?{}:{limit:f.limit},...f.timeout===void 0?{}:{timeoutMs:f.timeout}});e.io.stdout(b.output)}),d.command("upload").argument("<name>","dataset name or id").argument("<file>","JSON array, JSONL, or CSV file").description("append rows to a dataset").action(async(u,f)=>{let{sourceRoot:m,client:g,projectId:y}=await z(i(),e),b=await Oy(g,{sourceRoot:m,datasetName:u,filePath:oi.resolve(f),...y===void 0?{}:{projectId:y}});if(e.io.stdout(b.output),b.warning!==void 0)e.io.stderr(b.warning)});let c="pipeline name or id; required unless a TTY picker can choose among several",p=t.command("pipeline").description("operate on a live pipeline in the selected project");p.command("list").description("list live pipelines in the selected project").action(async()=>{let{client:u,projectId:f,state:m}=await z(i(),e);_(f,X);let g=await M_({client:u,projectId:f,state:m});e.io.stdout(g.output)}),p.command("run").argument("[name]",c).option("--wait","wait for the run to reach a terminal state",!1).option("--timeout <ms>","how long to wait",Wr).description("start a run on a deployed pipeline").action(async(u,f)=>{let{client:m,state:g,projectId:y}=await z(i(),e);_(y,X);let b=await B_(m,{projectId:y,state:g,...u===void 0?{}:{pipeline:u},wait:f.wait,...f.timeout===void 0?{}:{timeoutMs:f.timeout},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(b.output),r.value=Zd(b.outcome)}),p.command("status").argument("[name]",c).description("report the latest run's state and item counts").action(async(u)=>{let{client:f,state:m,projectId:g}=await z(i(),e);_(g,X);let y=await V_(f,{projectId:g,state:m,...u===void 0?{}:{pipeline:u},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(y.output),r.value=Zd(y.outcome)}),p.command("runs").argument("[name]",c).option("--limit <n>","how many runs to list",Wr).description("list recent runs").action(async(u,f)=>{let{client:m,state:g,projectId:y}=await z(i(),e);_(y,X);let b=await G_(m,{projectId:y,state:g,...u===void 0?{}:{pipeline:u},...f.limit===void 0?{}:{limit:f.limit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(b.output)}),p.command("cost").argument("[name]",c).option("--item-limit <n>","cap how many items to price",Wr).description("forecast what a run of this pipeline would bill").action(async(u,f)=>{let{client:m,state:g,projectId:y}=await z(i(),e);_(y,X);let b=await J_(m,{projectId:y,state:g,...u===void 0?{}:{pipeline:u},...f.itemLimit===void 0?{}:{itemLimit:f.itemLimit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(b.output)}),p.command("cancel").argument("<runId>","run to cancel").description("request cancellation of a run").action(async(u)=>{let{client:f}=await z(i(),e),m=await z_(f,{runId:u});e.io.stdout(m.output)}),p.command("results").argument("<runId>","run to read").option("--limit <n>","how many items to scan",Wr).option("--failed","only report failed items",!1).description("report a run's items").action(async(u,f)=>{let{client:m}=await z(i(),e),g=await K_(m,{runId:u,failedOnly:f.failed,...f.limit===void 0?{}:{limit:f.limit}});e.io.stdout(g.output),r.value=Zd(g.outcome)}),t.command("status").description("report project health: live counts and pending source changes").action(async()=>{let{sourceRoot:u,client:f,projectId:m}=await z(i(),e);_(m,X);let g=await $y(f,{sourceRoot:u,projectId:m});e.io.stdout(g.output)}),t.command("report").argument("<markdownPath>","path to a UTF-8 Markdown report").option("--authored-by <who>","human or agent",qA,"human").option("--confirm","confirm submission in a non-interactive environment",!1).description("preview and send an issue report to Toloka through PostHog").action(async(u,f)=>{_(e.analytics,"Issue reporting requires CLI analytics.");let m=X_(i()),g=i().baseUrl??e.environment.POTATO_BASE_URL??ht(e.environment)??Vt;r.value=await Y_({path:u,authoredBy:f.authoredBy,platform:new URL(g).origin,confirm:f.confirm,sourceRoot:m,cwd:process.cwd(),analytics:e.analytics,io:e.io})});let h=t.command("skill").description("discover bundled agent skills and install them into .agents/skills");return h.command("list").option("--json","print Skill Descriptors with their status as JSON",!1).description("list bundled skills as not-installed, current, or stale").action(async(u)=>{let f=await At(i(),e.io);await gg({sourceRoot:f,json:u.json,io:e.io})}),h.command("search").argument("<query>","text matched case-insensitively against id, name, description, and tags").option("--json","print matching Skill Descriptors with their status as JSON",!1).description("find bundled skills for a task").action(async(u,f)=>{let m=await At(i(),e.io);await yg({sourceRoot:m,query:u,json:f.json,io:e.io})}),h.command("install").argument("<skillId>","skill id from toloka skill list").option("-f, --force","replace an existing .agents/skills/<skillId> directory",!1).description("copy one bundled skill into .agents/skills/<skillId>").action(async(u,f)=>{let m=await At(i(),e.io);await _g({sourceRoot:m,skillId:u,force:f.force,io:e.io})}),{program:t,exitCode:r}}var BA=async()=>{process.stdin.setEncoding("utf8");let e=[];for await(let t of process.stdin)e.push(String(t));return e.join("")},GA=async(e)=>{process.stdout.write(e);let t=process.stdin.isRaw;process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8");let{promise:r,resolve:n,reject:i}=Promise.withResolvers(),s="",o=()=>{process.stdin.off("data",c),process.stdin.off("end",l),process.stdin.off("error",d),process.stdin.setRawMode(t),process.stdin.pause()},a=()=>{o(),process.stdout.write(`
|
|
172
|
-
`)},
|
|
173
|
-
`){
|
|
238
|
+
`)}function pr(){return jb.default({defaultWidth:80,output:VI().output})}function e1({active:e,renderedItems:t,pageSize:i,loop:n}){let o=mi({lastPointer:e,lastActive:void 0}),{lastPointer:s,lastActive:r}=o.current,g=Math.floor(i/2),a=t.reduce((d,u)=>d+u.length,0),l=t.slice(0,e).reduce((d,u)=>d+u.length,0),I=l;if(a>i)if(n){if(I=s,r!=null&&r<e&&e-r<i)I=Math.min(g,Math.abs(e-r)===1?Math.min(s+(t[r]?.length??0),Math.max(l,s)):s+e-r)}else{let d=t.slice(e).reduce((u,c)=>u+c.length,0);I=d<i-g?i-d:Math.min(l,g)}return o.current.lastPointer=I,o.current.lastActive=e,I}function vI({items:e,active:t,renderItem:i,pageSize:n,loop:o=!0}){let s=pr(),r=(p)=>(p%e.length+e.length)%e.length,g=e.map((p,Z)=>{if(p==null)return[];return Vo(i({item:p,index:Z,isActive:Z===t}),s).split(`
|
|
239
|
+
`)}),a=g.reduce((p,Z)=>p+Z.length,0),l=(p)=>g[p]??[],I=e1({active:t,renderedItems:g,pageSize:n,loop:o}),d=l(t).slice(0,n),u=I+d.length<=n?I:n-d.length,c=Array.from({length:n});c.splice(u,d.length,...d);let C=new Set([t]),A=u+d.length,m=r(t+1);while(A<n&&!C.has(m)&&(o&&a>n?m!==t:m>t)){let Z=l(m).slice(0,n-A);c.splice(A,Z.length,...Z),C.add(m),A+=Z.length,m=r(m+1)}A=u-1,m=r(t-1);while(A>=0&&!C.has(m)&&(o&&a>n?m!==t:m<t)){let p=l(m),Z=p.slice(Math.max(0,p.length-A-1));c.splice(A-Z.length+1,Z.length,...Z),C.add(m),A-=Z.length,m=r(m-1)}return c.filter((p)=>typeof p==="string").join(`
|
|
240
|
+
`)}var oW=be(require("readline")),sW=require("async_hooks"),rW=be(_b(),1);var pi=[];pi.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")pi.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")pi.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Ar=(e)=>!!e&&typeof e==="object"&&typeof e.removeListener==="function"&&typeof e.emit==="function"&&typeof e.reallyExit==="function"&&typeof e.listeners==="function"&&typeof e.kill==="function"&&typeof e.pid==="number"&&typeof e.on==="function",kI=Symbol.for("signal-exit emitter"),PI=globalThis,i1=Object.defineProperty.bind(Object);class Kb{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(PI[kI])return PI[kI];i1(PI,kI,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,t){this.listeners[e].push(t)}removeListener(e,t){let i=this.listeners[e],n=i.indexOf(t);if(n===-1)return;if(n===0&&i.length===1)i.length=0;else i.splice(n,1)}emit(e,t,i){if(this.emitted[e])return!1;this.emitted[e]=!0;let n=!1;for(let o of this.listeners[e])n=o(t,i)===!0||n;if(e==="exit")n=this.emit("afterExit",t,i)||n;return n}}class NI{}var n1=(e)=>({onExit(t,i){return e.onExit(t,i)},load(){return e.load()},unload(){return e.unload()}});class Lb extends NI{onExit(){return()=>{}}load(){}unload(){}}class Mb extends NI{#i=YI.platform==="win32"?"SIGINT":"SIGHUP";#t=new Kb;#e;#s;#r;#o={};#n=!1;constructor(e){super();this.#e=e,this.#o={};for(let t of pi)this.#o[t]=()=>{let i=this.#e.listeners(t),{count:n}=this.#t,o=e;if(typeof o.__signal_exit_emitter__==="object"&&typeof o.__signal_exit_emitter__.count==="number")n+=o.__signal_exit_emitter__.count;if(i.length===n){this.unload();let s=this.#t.emit("exit",null,t),r=t==="SIGHUP"?this.#i:t;if(!s)e.kill(e.pid,r)}};this.#r=e.reallyExit,this.#s=e.emit}onExit(e,t){if(!Ar(this.#e))return()=>{};if(this.#n===!1)this.load();let i=t?.alwaysLast?"afterExit":"exit";return this.#t.on(i,e),()=>{if(this.#t.removeListener(i,e),this.#t.listeners.exit.length===0&&this.#t.listeners.afterExit.length===0)this.unload()}}load(){if(this.#n)return;this.#n=!0,this.#t.count+=1;for(let e of pi)try{let t=this.#o[e];if(t)this.#e.on(e,t)}catch(t){}this.#e.emit=(e,...t)=>this.#a(e,...t),this.#e.reallyExit=(e)=>this.#g(e)}unload(){if(!this.#n)return;this.#n=!1,pi.forEach((e)=>{let t=this.#o[e];if(!t)throw Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,t)}catch(i){}}),this.#e.emit=this.#s,this.#e.reallyExit=this.#r,this.#t.count-=1}#g(e){if(!Ar(this.#e))return 0;return this.#e.exitCode=e||0,this.#t.emit("exit",this.#e.exitCode,null),this.#r.call(this.#e,this.#e.exitCode)}#a(e,...t){let i=this.#s;if(e==="exit"&&Ar(this.#e)){if(typeof t[0]==="number")this.#e.exitCode=t[0];let n=i.call(this.#e,e,...t);return this.#t.emit("exit",this.#e.exitCode,null),n}else return i.call(this.#e,e,...t)}}var YI=globalThis.process,{onExit:$b,load:Zz,unload:bz}=n1(Ar(YI)?new Mb(YI):new Lb);var nW=require("util");var XI="\x1B[G",eW="\x1B[?25l",tW="\x1B[?25h",SI=(e=1)=>e>0?`\x1B[${e}A`:"",xI=(e=1)=>e>0?`\x1B[${e}B`:"",JI=(e,t)=>{if(typeof t==="number"&&!Number.isNaN(t))return`\x1B[${t+1};${e+1}H`;return`\x1B[${e+1}G`},qb="\x1B[2K",EI=(e)=>e>0?(qb+SI(1)).repeat(e-1)+qb+XI:"";var iW=(e)=>e.split(`
|
|
241
|
+
`).length,o1=(e)=>e.split(`
|
|
242
|
+
`).pop()??"";class Zr{height=0;extraLinesUnderPrompt=0;cursorPos;rl;constructor(e){this.rl=e,this.cursorPos=e.getCursorPos()}write(e){this.rl.output.unmute(),this.rl.output.write(e),this.rl.output.mute()}render(e,t=""){let i=o1(e),n=nW.stripVTControlCharacters(i),o=n;if(this.rl.line.length>0)o=o.slice(0,-this.rl.line.length);this.rl.setPrompt(o),this.cursorPos=this.rl.getCursorPos();let s=pr();if(e=Vo(e,s),t=Vo(t,s),n.length%s===0)e+=`
|
|
243
|
+
`;let r=e+(t?`
|
|
244
|
+
`+t:""),a=Math.floor(n.length/s)-this.cursorPos.rows+(t?iW(t):0);if(a>0)r+=SI(a);r+=JI(this.cursorPos.cols),this.write(xI(this.extraLinesUnderPrompt)+EI(this.height)+r),this.extraLinesUnderPrompt=a,this.height=iW(r)}checkCursorPos(){let e=this.rl.getCursorPos();if(e.cols!==this.cursorPos.cols)this.write(JI(e.cols)),this.cursorPos=e}done({clearContent:e}){this.rl.setPrompt("");let t=xI(this.extraLinesUnderPrompt);t+=e?EI(this.height):`
|
|
245
|
+
`,t+=XI,t+=tW,this.write(t),this.rl.close()}}class UI extends Promise{static withResolver(){let e,t;return{promise:new Promise((n,o)=>{e=n,t=o}),resolve:e,reject:t}}}var gW=be(require("path")),s1=globalThis.setImmediate;function r1(){let e=Error.prepareStackTrace,t=[];try{Error.prepareStackTrace=(i,n)=>{let o=n.slice(1);return t=o,o},Error().stack}catch{return t}return Error.prepareStackTrace=e,t}function OI(e){let t=r1();return(n,o={})=>{let{input:s=process.stdin,signal:r}=o,g=new Set,a=new rW.default;a.pipe(o.output??process.stdout);let l=oW.createInterface({terminal:!0,input:s,output:a});a.mute();let I=new Zr(l),{promise:d,resolve:u,reject:c}=UI.withResolver(),C=()=>c(new fI);if(r){let m=()=>c(new hI({cause:r.reason}));if(r.aborted)return m(),Object.assign(d,{cancel:C});r.addEventListener("abort",m),g.add(()=>r.removeEventListener("abort",m))}g.add($b((m,p)=>{c(new Cr(`User force closed the prompt with ${m} ${p}`))}));let A=()=>c(new Cr("User force closed the prompt with SIGINT"));return l.on("SIGINT",A),g.add(()=>l.removeListener("SIGINT",A)),Wb(l,(m)=>{let p=sW.AsyncResource.bind(()=>Ci.clearAll());l.on("close",p),g.add(()=>l.removeListener("close",p));let Z=()=>{let W=()=>I.checkCursorPos();l.input.on("keypress",W),g.add(()=>l.input.removeListener("keypress",W));let h=null;m(()=>{let f=!1;try{let V=e(n,(R)=>{if(f)u(R);else h={value:R}});if(V===void 0){let R=t[1]?.getFileName();if(R&&!R.startsWith("file://"))R=gW.default.resolve(R);throw Error(`Prompt functions must return a string.
|
|
246
|
+
at ${R}`)}let[B,F]=typeof V==="string"?[V]:V;I.render(B,F),Ci.run()}catch(V){c(V)}if(f=!0,h!==null){let{value:V}=h;h=null,u(V)}})};if("readableFlowing"in s)s1(Z);else Z();return Object.assign(d.then((W)=>(Ci.clearAll(),W),(W)=>{throw Ci.clearAll(),W}).finally(()=>{g.forEach((W)=>W()),I.done({clearContent:Boolean(o.clearPromptOnDone)}),a.end()}).then(()=>d),{cancel:C})})}}var aW=require("util");class It{separator=aW.styleText("dim",Array.from({length:15}).join(In.line));type="separator";constructor(e){if(e)this.separator=e}static isSeparator(e){return Boolean(e&&typeof e==="object"&&"type"in e&&e.type==="separator")}}var dn=require("util");var g1={icon:{cursor:In.pointer},style:{disabled:(e)=>dn.styleText("dim",e),description:(e)=>dn.styleText("cyan",e),keysHelpTip:(e)=>e.map(([t,i])=>`${dn.styleText("bold",t)} ${dn.styleText("dim",i)}`).join(dn.styleText("dim"," \u2022 "))},i18n:{disabledError:"This option is disabled and cannot be selected."},indexMode:"hidden"};function TI(e){return!It.isSeparator(e)&&!e.disabled}function zI(e){return!It.isSeparator(e)}function a1(e){return e.map((t)=>{if(It.isSeparator(t))return t;if(typeof t!=="object"||t===null||!("value"in t)){let o=String(t);return{value:t,name:o,short:o,disabled:!1}}let i=t.name??String(t.value),n={value:t.value,name:i,short:t.short??i,disabled:t.disabled??!1};if(t.description)n.description=t.description;return n})}var lW=OI((e,t)=>{let{loop:i=!0,pageSize:n=7}=e,o=fo(g1,e.theme),{keybindings:s}=o,[r,g]=lt("idle"),a=RI({status:r,theme:o}),l=mi(),I=!s.includes("vim"),d=yo(()=>a1(e.choices),[e.choices]),u=yo(()=>{let R=d.findIndex(zI),U=d.findLastIndex(zI);if(R===-1)throw new ho("[select prompt] No selectable choices. All choices are disabled.");return{first:R,last:U}},[d]),c=yo(()=>{if(!("default"in e))return-1;return d.findIndex((R)=>TI(R)&&R.value===e.default)},[e.default,d]),[C,A]=lt(c===-1?u.first:c),m=d[C];if(m==null||It.isSeparator(m))throw Error("Active index does not point to a choice");let[p,Z]=lt();GI((R,U)=>{if(clearTimeout(l.current),p)Z(void 0);if(WI(R))if(m.disabled)Z(o.i18n.disabledError);else g("done"),t(m.value);else if(Wo(R,s)||cr(R,s)){if(U.clearLine(0),i||Wo(R,s)&&C!==u.first||cr(R,s)&&C!==u.last){let K=Wo(R,s)?-1:1,ee=C;do ee=(ee+K+d.length)%d.length;while(!zI(d[ee]));A(ee)}}else if(bI(R)&&!Number.isNaN(Number(U.line))){let K=Number(U.line)-1,ee=-1,He=d.findIndex((un)=>{if(It.isSeparator(un))return!1;return ee++,ee===K}),Cn=d[He];if(Cn!=null&&TI(Cn))A(He);l.current=setTimeout(()=>{U.clearLine(0)},700)}else if(ZI(R))U.clearLine(0);else if(I){let K=U.line.toLowerCase(),ee=d.findIndex((He)=>{if(It.isSeparator(He)||!TI(He))return!1;return He.name.toLowerCase().startsWith(K)});if(ee!==-1)A(ee);l.current=setTimeout(()=>{U.clearLine(0)},700)}}),ui(()=>()=>{clearTimeout(l.current)},[]);let W=o.style.message(e.message,r),h=o.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]),f=0,V=vI({items:d,active:C,renderItem({item:R,isActive:U,index:K}){if(It.isSeparator(R))return f++,` ${R.separator}`;let ee=U?o.icon.cursor:" ",He=o.indexMode==="number"?`${K+1-f}. `:"";if(R.disabled){let un=typeof R.disabled==="string"?R.disabled:"(disabled)",PW=U?o.icon.cursor:"-";return o.style.disabled(`${PW} ${He}${R.name} ${un}`)}return(U?o.style.highlight:(un)=>un)(`${ee} ${He}${R.name}`)},pageSize:n,loop:i});if(r==="done")return[a,W,o.style.answer(m.short)].filter(Boolean).join(" ");let{description:B}=m;return`${[[a,W].filter(Boolean).join(" "),V," ",B?o.style.description(B):"",p?o.style.error(p):"",h].filter(Boolean).join(`
|
|
247
|
+
`).trimEnd()}${eW}`});var l1="Failure details are withheld because this API key has read access only. A key with write access on the project sees them.",I1=async(e)=>{let t=[];for await(let i of e)t.push(i);return t},dW=(e,t)=>{if(t===void 0||t.projectId!==e)return new Map;let i=new Map;for(let[o,s]of Object.entries(t.pipelines)){let r=i.get(s.pipelineId)??[];r.push(o),i.set(s.pipelineId,r)}let n=new Map;for(let[o,s]of i){let[r,...g]=s;if(r!==void 0&&g.length===0)n.set(o,r)}return n},cW=(e,t)=>{let i=t.get(e.id);return{pipelineId:e.id,name:e.name,...i===void 0?{}:{sourceDirectory:i}}},cn=(e)=>e.sourceDirectory===void 0?`${e.name} (${e.pipelineId})`:`${e.name} (${e.pipelineId}) ${e.sourceDirectory}`,d1=(e)=>e.length===0?"This project has no pipelines.":`Unknown pipeline. This project has: ${e.map(cn).join(", ")}.`;async function CW(e){return lW({message:"This project tracks several pipelines. Select one",choices:e})}async function uW(e){let t=e.limit??20,i=await e.client.pipelines.listPage({projectId:e.projectId,limit:t}),n=dW(e.projectId,e.state),o=i.pipelines.map((r)=>cW(r,n)).toSorted((r,g)=>{let a=r.name.localeCompare(g.name);return a===0?r.pipelineId.localeCompare(g.pipelineId):a});if(o.length===0)return{outcome:"reported",output:"This project has no pipelines."};let s=o.map((r)=>r.sourceDirectory===void 0?`${r.name} ${r.pipelineId}`:`${r.name} ${r.pipelineId} ${r.sourceDirectory}`);if(i.pagination.hasMore)s.push(`Showing ${o.length} of ${i.pagination.total} pipelines. Raise --limit to see more.`);return{outcome:"reported",output:s.join(`
|
|
248
|
+
`)}}var c1=async(e,t,i)=>{let n=await I1(e.pipelines.listAll({projectId:t})),o=dW(t,i);return n.map((s)=>cW(s,o)).toSorted((s,r)=>{let g=s.name.localeCompare(r.name);return g===0?s.pipelineId.localeCompare(r.pipelineId):g})},br=(e,t,i)=>{if(b(e.length<=1,t),e.length!==1)return;let[n]=e;return b(n,i),n},IW=(e,t)=>{let i=d1(t),n=br(t.filter((l)=>l.pipelineId===e),i,i);if(n!==void 0)return n;let o=t.filter((l)=>l.name===e),s=br(o,`Multiple pipelines are named ${e}: ${o.map(cn).join(", ")}.`,i);if(s!==void 0)return s;let r=br(t.filter((l)=>l.sourceDirectory===e),i,i);if(r!==void 0)return r;let g=t.filter((l)=>{if(l.sourceDirectory===void 0)return!1;let I=l.sourceDirectory.split("/");return I[I.length-1]===e}),a=br(g,`Multiple pipelines match ${e}: ${g.map(cn).join(", ")}.`,i);if(a!==void 0)return a;b(!1,i)};async function Bo(e){let t=await c1(e.client,e.projectId,e.state);if(e.pipeline!==void 0)return IW(e.pipeline,t);if(b(t.length>0,"This project has no pipelines."),t.length>1&&e.select!==void 0){let i=await e.select(t.map((n)=>({name:cn(n),value:n.pipelineId})));return IW(i,t)}if(t.length===1){let[i]=t;b(i,"This project has no pipelines."),b(!1,`Pass a pipeline name. This project has: ${cn(i)}.`)}b(!1,`This project tracks several pipelines, so name one: ${t.map(cn).join(", ")}.`)}var mW=(e)=>`run ${e.id} is ${e.status}`,pW=(e)=>{if(e.status==="succeeded")return"succeeded";if(e.status==="failed")return"failed";return"started"};async function AW(e,t){let i=await Bo({client:e,...t}),n=await e.runs.start({pipelineId:i.pipelineId});if(t.wait!==!0)return{outcome:"started",output:[`Started ${mW(n)} for ${i.name}.`,`Follow it with toloka pipeline status ${i.pipelineId}, or re-run with --wait.`].join(`
|
|
249
|
+
`)};try{let o=await e.waitFor({type:"pipelineRun",runId:n.id},{...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t.intervalMs===void 0?{}:{intervalMs:t.intervalMs}}),s=pW(o);return{outcome:s,output:s==="failed"?[`Run ${o.id} failed.`,`Inspect items with toloka pipeline results ${o.id} --failed.`].join(`
|
|
250
|
+
`):`Run ${o.id} succeeded.`}}catch(o){if(o instanceof te&&o.code==="wait_timeout")return{outcome:"timedOut",output:[`Stopped waiting for run ${n.id}; it has not reached a terminal state yet and may still be running.`,`Check it with toloka pipeline status ${i.pipelineId}.`].join(`
|
|
251
|
+
`)};throw o}}async function ZW(e,t){let i=await Bo({client:e,...t}),n=await e.runs.listPage({pipelineId:i.pipelineId,limit:t.limit??10});if(n.runs.length===0)return{outcome:"reported",output:`No runs yet for ${i.name}.`};let o=[];for(let s of n.runs){let r=await e.runs.get({runId:s.id});o.push(` ${r.id} ${r.status.padEnd(9)} ${s.createdAt}`)}return{outcome:"reported",output:[`Runs for ${i.name} (${n.pagination.total} total):`,...o].join(`
|
|
252
|
+
`)}}async function bW(e,t){let i=await Bo({client:e,...t}),o=(await e.runs.listPage({pipelineId:i.pipelineId,limit:1})).runs[0];if(o===void 0)return{outcome:"reported",output:`No runs yet for ${i.name}.`};let s=await e.runs.get({runId:o.id}),r=t.itemScanLimit??500,g=new Map,a=0;for await(let I of e.runs.listAllItems({runId:s.id}))if(g.set(I.state.status,(g.get(I.state.status)??0)+1),a+=1,a>=r)break;let l=g.size===0?[" no items yet"]:[...g.entries()].toSorted(([I],[d])=>I.localeCompare(d)).map(([I,d])=>` ${I.padEnd(12)} ${d}`);return{outcome:pW(s),output:[`Latest ${mW(s)} (started ${o.createdAt}).`,a>=r?`Items (first ${r}):`:"Items:",...l].join(`
|
|
253
|
+
`)}}async function WW(e,t){let i=await e.runs.cancel({runId:t.runId});return{outcome:"canceled",output:`Requested cancellation of run ${i.id}; it is now ${i.status}.`}}var C1=(e)=>{let t=` ${e.index} ${e.id} ${e.state.status}`;if(e.state.status!=="failed")return t;if(!("error"in e.state))return`${t}
|
|
254
|
+
${l1}`;return e.state.error===null?t:`${t}
|
|
255
|
+
${e.state.error}`};async function hW(e,t){let i=t.limit??20,n=t.itemScanLimit??Math.max(500,i),o=[],s=0;for await(let a of e.runs.listAllItems({runId:t.runId})){if(s+=1,t.failedOnly!==!0||a.state.status==="failed")o.push(a);if(o.length>=i||s>=n)break}if(o.length===0)return{outcome:"reported",output:t.failedOnly===!0&&s>=n?`No failed items in the first ${n} items.`:t.failedOnly===!0?"No failed items.":"No items yet."};return{outcome:"reported",output:[s>=n&&o.length<i?`${t.failedOnly===!0?"Failed items":"Items"} for run ${t.runId} (showing ${o.length} after scanning ${n}, limit ${i}):`:`${t.failedOnly===!0?"Failed items":"Items"} for run ${t.runId} (showing ${o.length}, limit ${i}):`,...o.map(C1)].join(`
|
|
256
|
+
`)}}var fW=(e)=>{if(typeof e!=="object"||e===null)return!1;if(!("label"in e)||typeof e.label!=="string")return!1;if(!("expectedTotal"in e)||typeof e.expectedTotal!=="string")return!1;if(!("maxTotal"in e)||typeof e.maxTotal!=="string")return!1;if("subLines"in e&&e.subLines!==void 0&&!Array.isArray(e.subLines))return!1;return!0},u1=(e)=>{let t=[0,0,0];for(let i of e)for(let n=0;n<3;n+=1){let o=i[n];t[n]=Math.max(t[n]??0,o?.length??0)}return e.map((i)=>i.map((n,o)=>o===0?n.padEnd(t[0]??0):n.padStart(t[o]??0)).join(" "))},yW=(e,t)=>{let n=[[`${" ".repeat(t)}${e.label}`,e.expectedTotal,e.maxTotal]];for(let o of e.subLines??[])if(fW(o))n.push(...yW(o,t+1));return n},m1=(e)=>{let t=[],i=[];for(let n of e){if(n.kind==="priced"){t.push([n.nodeNameDisplay,n.expectedTotal,n.maxTotal]);for(let o of n.displayBreakdown)if(fW(o))t.push(...yW(o,1));continue}i.push(n.kind==="validation-errors"?` ${n.nodeNameDisplay} skipped (validation errors)`:` ${n.nodeNameDisplay} not billed`)}return{billed:t,unpriced:i}},p1=(e)=>{let t=[["Total",e.expected,e.worstCase]];if(e.bestCase!=null)t.push(["Best case",e.bestCase,""]);if(e.perItemExpected!=null)t.push(["Per item",e.perItemExpected,e.perItemWorstCase??""]);return t},A1=(e,t)=>{let{billed:i,unpriced:n}=m1(e.nodes),o=p1(e.total),s=u1([["Item","Expected","Maximum"],...i,...o]),r=s.slice(0,1+i.length),g=s.slice(1+i.length),a=[`Cost estimate for ${t} ${e.dataset.itemCount} item${e.dataset.itemCount===1?"":"s"}`,"",...r];if(i.length===0)a.push(" (no billed nodes)");if(a.push("",...g),n.length>0)a.push("","Not billed",...n);if(e.isInternalPricing===!0)a.push("","Internal-team pricing.");return a.push("",e.disclaimer),a.join(`
|
|
257
|
+
`)};async function VW(e,t){let i=await Bo({client:e,...t}),n=await e.pipelines.estimateCost({pipelineId:i.pipelineId,...t.itemLimit===void 0?{}:{itemLimit:t.itemLimit}});return{output:A1(n,i.name)}}var BW=require("crypto"),jI=require("fs"),Wr=require("fs/promises"),Ke=require("path"),Z1=262144,b1=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}),W1=async(e,t)=>{let i=Ke.relative(t,e);if(i===""||i===".."||i.startsWith(`..${Ke.sep}`)||Ke.isAbsolute(i))return;let n=i.split(Ke.sep);for(let o=1;o<n.length;o+=1){let s=Ke.join(t,...n.slice(0,o)),r=await Wr.lstat(s);b(!r.isSymbolicLink(),`Report file ${e} is inside the symbolic link ${s}; select a path that does not traverse symbolic links.`)}},h1=async(e,t,i)=>{let n=Ke.resolve(i,e);await W1(n,t);let o;try{o=await Wr.open(n,jI.constants.O_RDONLY|jI.constants.O_NOFOLLOW)}catch(s){throw b(!(s instanceof Error&&("code"in s)&&s.code==="ELOOP"),`Report file ${n} is a symbolic link; select the file it points to directly.`),s}try{let s=await o.stat();return b(s.isFile(),`Report file ${n} is not a regular file.`),b(s.size>0,`Report file ${n} is empty.`),b(s.size<=Z1,`Report file ${n} is ${s.size} bytes; the limit is 256 KiB.`),{handle:o,absolutePath:n,size:s.size}}catch(s){throw await o.close(),s}},f1=async(e,t,i)=>{let n=await h1(e,t,i);try{let o=await n.handle.readFile();b(o.byteLength===n.size,`${n.absolutePath} changed while it was being read.`);try{return b1.decode(o)}catch{throw Error(`Report file ${n.absolutePath} is not valid UTF-8.`)}}finally{await n.handle.close()}},y1=async(e,t)=>{if(t)return!0;if(e.prompt===void 0)return!1;let i=(await e.prompt("Send this report to Toloka? [y/N] ")).trim().toLowerCase();return i==="y"||i==="yes"};async function RW(e){let{analytics:t,io:i}=e;b(t.issueReportingEnabled,"Issue reporting is disabled. Re-run with TOLOKA_TELEMETRY=1.");let n=await f1(e.path,e.sourceRoot,e.cwd);if(i.stdout("Issue report preview:"),i.stdout(""),i.stdout(n.replace(/(?![\t\n])(?!\r\n)(?:\p{Cc}|\p{Bidi_Control})/gu,(s)=>`\\u${s.charCodeAt(0).toString(16).padStart(4,"0")}`)),i.stdout(""),i.stdout(`Authored by: ${e.authoredBy}`),i.stdout(`Platform: ${e.platform}`),i.stdout(""),!await y1(i,e.confirm))return i.stderr("Refusing to submit without confirmation in a non-interactive environment. Pass --confirm after reviewing the preview above."),1;let o=BW.randomUUID();return await t.submitIssueReport({reportId:o,reportText:n,authoredBy:e.authoredBy,platform:e.platform}),i.stdout(`Submitted issue report: ${o}`),0}var V1=["Credentials resolve in this order, highest first:"," 1. --api-key / --base-url"," 2. POTATO_API_KEY / POTATO_BASE_URL"," 3. the file written by toloka login",`The platform defaults to ${ti}.`].join(`
|
|
258
|
+
`),B1=(e)=>{if(e!=="human"&&e!=="agent")throw new Ct('Expected "human" or "agent".');return e},Ut=(e)=>{let t=Number(e);if(!Number.isInteger(t)||t<=0)throw new Ct("Expected a positive integer.");return t},DI=(e)=>{if(e==="failed")return 1;if(e==="timedOut")return 2;return 0},dt=async(e,t)=>{if(e.sourceRoot!==void 0)return Go.resolve(e.sourceRoot);let i=process.cwd(),n=await xm(i);if(n===void 0||n===i)return i;return t.stderr(`Using project root ${n} (found from ${i}).`),n},GW=(e)=>e.sourceRoot===void 0?process.cwd():Go.resolve(e.sourceRoot),vW=async(e,t)=>{let{found:i,warning:n}=await Mn(t.environment,e.apiKey??t.environment.POTATO_API_KEY);if(n!==void 0)t.io.stderr(n);return i?.credentials},Ro=async(e,t)=>{if(t?.shouldIdentify!==!0)return;try{t.identifyCurrentUser(await e.me())}catch{}},z=async(e,t)=>{let i=await dt(e,t.io),n=await Re(i),o=await vW(e,t),s=pl(e,n,t.environment,o),r=t.injectedClient??ut({apiKey:s.apiKey,baseUrl:s.baseUrl});return await Ro(r,t.analytics),{sourceRoot:i,client:r,baseUrl:s.baseUrl,state:n,stored:o,...s.projectId===void 0?{}:{projectId:s.projectId}}},wW=(e,t,i,n)=>Ui({flags:e,environment:t.environment,stored:i,...n===void 0?{}:{state:n}});function R1(e){let t=new Ai("toloka"),i={value:0},n=e.runChecks??dl,o=async(m,p=n)=>{let Z=new AbortController,W,h=(B)=>{W=B,Z.abort()},f=()=>h(130),V=()=>h(143);process.on("SIGINT",f),process.on("SIGTERM",V);try{return{result:await p({...m,signal:Z.signal}),...W===void 0?{}:{interruptedExitCode:W}}}finally{process.off("SIGINT",f),process.off("SIGTERM",V)}},s=!1;t.description("Preview. Build and operate Toloka pipeline projects from TypeScript source. The public API may change.").version(Fe,"-v, --version","output the current version").option("--source-root <directory>","project root; discovered from the working directory when omitted").option("--api-key <key>","API key for this command only").option("--base-url <url>","platform base URL for this command only").option("--project-id <id>","target project; overrides toloka.json").addHelpText("after",`
|
|
259
|
+
${V1}`).configureOutput({writeOut:(m)=>e.io.stdout(m.replace(/\n$/u,"")),writeErr:(m)=>e.io.stderr(m.replace(/\n$/u,""))}).exitOverride();let r=()=>t.opts();t.hook("postAction",async(m,p)=>{if(s)return;let Z=[];for(let f=p;f!==null;f=f.parent)Z.push(f.name());if(Z.includes("init")||Z.includes("help")||Z.includes("report")||Z.includes("url")||Z.includes("version")||Z.includes("config"))return;let W=await dt(r(),e.io),h=await bZ(W).catch(()=>{return});if(h===void 0)return;s=!0,e.io.stderr(h)}),t.command("version").description("print the current CLI version").action(()=>e.io.stdout(Fe));let g=t.command("config").description("read and write machine CLI settings");g.command("get").argument("[name]","setting name; omit to print every setting").description("print a CLI setting, or every setting").action(async(m)=>{let p=await mo(e.environment);e.io.stdout(iI(p,m).output)}),g.command("set").argument("<name>","setting name").argument("<value>","setting value").description("write a CLI setting for this machine").action(async(m,p)=>{let Z=await BZ(e.environment,m,p);e.io.stdout(Z.output)}),g.action(async()=>{let m=await mo(e.environment);e.io.stdout(iI(m,void 0).output)}),t.command("login").description("store an API key for this machine after verifying it").action(async()=>{let m=await Cp({...r().apiKey===void 0?{}:{apiKey:r().apiKey},...r().baseUrl===void 0?{}:{baseUrl:r().baseUrl},...e.io.prompt===void 0?{}:{prompt:e.io.prompt},write:e.io.stdout,environment:e.environment});e.io.stdout(m.output);try{let p=await tp(e.environment);if(p===void 0)return;let Z=e.injectedClient??ut(p);await Ro(Z,e.analytics)}catch{}}),t.command("logout").description("remove stored credentials from this machine").action(async()=>{let m=await up(e.environment);e.io.stdout(m.output)}),t.command("auth-status").alias("whoami").description("show which platform and key the CLI would use").option("--show-token","print the API key instead of masking it",!1).action(async(m)=>{let p=r(),Z=await Mn(e.environment,p.apiKey??e.environment.POTATO_API_KEY),W=Z.found?.credentials,h=await dt(p,e.io),f=await Re(h),V=wW(p,e,W,f),B=e.injectedClient,F=await pp({environment:e.environment,showToken:m.showToken,credentialLookup:Z,...p.apiKey===void 0?{}:{flagApiKey:p.apiKey},...p.baseUrl===void 0?{}:{flagBaseUrl:p.baseUrl},...B===void 0?{}:{probe:()=>B},...V===void 0?{}:{project:V}});if(e.io.stdout(F.output),!F.authenticated){i.value=1;return}try{let R=pl(p,f,e.environment,W),U=e.injectedClient??ut({apiKey:R.apiKey,baseUrl:R.baseUrl});await Ro(U,e.analytics)}catch{}});let a=t.command("project").description("select and manage the current platform project");a.command("list").option("--limit <n>","maximum projects to list",Ut).description("list remote projects this key can see").action(async(m)=>{let p=r(),{client:Z,stored:W,state:h}=await z(p,e),f=wW(p,e,W,h);await rp({client:Z,io:e.io,...f===void 0?{}:{context:f},...m.limit===void 0?{}:{limit:m.limit}})}),a.command("add").argument("[alias]","local name for this project").argument("[projectId]","platform project id").description("register a live project and select it").action(async(m,p)=>{let Z=r(),W=await xt(e.environment),h=e.injectedClient??ut(W.credentials);await gp({environment:e.environment,flags:Z,client:h,io:e.io,afterPreflight:async()=>Ro(h,e.analytics),...m===void 0?{}:{alias:m},...p===void 0?{}:{projectId:p}})}),a.command("switch").argument("<alias>","local project alias").description("select a registered project").action(async(m)=>{await ap({environment:e.environment,flags:r(),alias:m,io:e.io})}),a.command("current").description("show the project this command would use").action(async()=>{let m=r(),p=await vW(m,e),Z=await dt(m,e.io),W=await Re(Z);if(Ip({flags:m,environment:e.environment,stored:p,...W===void 0?{}:{state:W},io:e.io}).project===void 0)i.value=1}),a.command("url").description("print the current project URL").action(async()=>{let{baseUrl:m,client:p,projectId:Z}=await z(r(),e);b(Z,M);let W=await p.projects.get({projectId:Z}),h=new URL(`/teams/${encodeURIComponent(W.teamId)}/projects/${encodeURIComponent(W.id)}`,m);e.io.stdout(h.href)}),a.command("remove").argument("<alias>","local project alias").description("forget a local project alias").action(async(m)=>{await lp({environment:e.environment,flags:r(),alias:m,io:e.io})}),a.command("create").argument("[alias]","local name for the new project").option("--name <name>","platform project name").option("--team-id <id>","team that owns the project").description("create a live project and select it").action(async(m,p)=>{let Z=r(),W=await xt(e.environment),h=e.injectedClient??ut(W.credentials),f=await dt(Z,e.io);await dp({environment:e.environment,flags:Z,client:h,io:e.io,sourceRoot:f,afterPreflight:async()=>Ro(h,e.analytics),...m===void 0?{}:{alias:m},...p.name===void 0?{}:{name:p.name},...p.teamId===void 0?{}:{teamId:p.teamId}})}),t.command("init").description("initialize this project directory and install the agent bootstrap").action(async()=>{let m=r(),p=GW(m),Z=await Re(p),W=Ui({flags:m,environment:e.environment,...Z===void 0?{}:{state:Z}}),h=await ZZ(p,W===void 0?{}:{projectId:W.id});if(e.io.stdout(h.output),h.warning!==void 0)e.io.stderr(h.warning)}),t.command("import").argument("[projectId]","existing project to write into source; defaults to the selected project").option("-f, --force","replace an existing pipelines/ directory",!1).description("generate TypeScript source from a live project").action(async(m,p)=>{let{sourceRoot:Z,client:W,projectId:h}=await z(r(),e),f=m??h;b(f,M);let V=await KZ(W,{sourceRoot:Z,projectId:f,...p?.force===!0?{force:!0}:{}});e.io.stdout(V.output)}),t.command("plan").description("show what apply would change").action(async()=>{let{sourceRoot:m,client:p,projectId:Z}=await z(r(),e),W=await LZ(p,{sourceRoot:m,...Z===void 0?{}:{projectId:Z}});e.io.stdout(W.output)}),t.command("validate").description("run platform spec validation and report matching checks").action(async()=>{let{sourceRoot:m,client:p,projectId:Z}=await z(r(),e),W=await qZ(p,{sourceRoot:m,...Z===void 0?{}:{projectId:Z}});if(e.io.stdout(W.output),!W.valid)i.value=1}),t.command("check").argument("[pipeline]","pipeline source directory or name").option("--node <node>","check one code or human-work node by name or id").option("--json","print the structured check report",!1).option("--watch","rerun checks when project files change",!1).description("run the complete local source, type, and test gate").action(async(m,p)=>{let Z=await dt(r(),e.io),W={environment:e.environment,sourceRoot:Z,...m===void 0?{}:{pipeline:m},...p.node===void 0?{}:{node:p.node},...p.json?{json:!0}:{}},h=async(F)=>{let R=e.environment[$t];if(R===void 0)e.io.stdout(F);else await FW.writeFile(R,F,"utf8")},f=e.runChecks===void 0&&e.environment[$t]===void 0?cl:n;if(p.watch){let F=new AbortController,R=()=>F.abort();process.on("SIGINT",R),process.on("SIGTERM",R);try{await Km(W,async(U)=>{await h(U.output),i.value=U.exitCode},void 0,F.signal)}finally{process.off("SIGINT",R),process.off("SIGTERM",R)}return}let{result:V,interruptedExitCode:B}=await o(W,f);await h(V.output),i.value=B??V.exitCode}),t.command("apply").description("check source, then make the platform match it").action(async()=>{let m=await dt(r(),e.io),{result:p,interruptedExitCode:Z}=await o({sourceRoot:m,environment:e.environment});if(e.io.stdout(p.output),Z!==void 0){i.value=Z;return}if(p.exitCode!==0){i.value=p.exitCode;return}b(p.source,"Passing checks must return project source");let{client:W,projectId:h}=await z(r(),e),f=await $Z(W,{sourceRoot:m,source:p.source,...h===void 0?{}:{projectId:h}});e.io.stdout(f.output)}),t.command("secret").description("manage project secrets").command("set").argument("<name>","secret name referenced by a code node").option("--from-env <variable>","read the value from this environment variable instead of stdin").description("set a secret value without writing it to disk").action(async(m,p)=>{let{client:Z,projectId:W}=await z(r(),e);b(W,M);let h=p.fromEnv===void 0?(await e.io.readStdin()).replace(/\r?\n$/u,""):e.environment[p.fromEnv];b(h!==void 0,`Missing secret value. Set ${p.fromEnv??"the named environment variable"} or pipe it to stdin.`);try{let f=await lb(Z,{projectId:W,name:m,value:h});e.io.stdout(f.output)}catch{e.io.stderr(`Failed to set secret ${m}.`),i.value=1}});let I=t.command("base-model").description("inspect the global base model catalog");I.command("list").option("--json","print JSON",!1).description("list base models").action(async(m)=>{let{client:p}=await z(r(),e);await db(p,{json:m.json},e.io)}),I.command("get").argument("<id>","base model ID").option("--json","print JSON",!1).description("show one base model").action(async(m,p)=>{let{client:Z}=await z(r(),e);await cb(Z,{id:pI(m),json:p.json},e.io)});let d=t.command("model").description("manage project Models and immutable versions");d.command("list").option("--json","print JSON",!1).description("list Models owned by the selected project").action(async(m)=>{let{client:p,projectId:Z}=await z(r(),e);b(Z,M),await Cb(p,{projectId:Z,json:m.json},e.io)}),d.command("get").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("show one project Model").action(async(m,p)=>{let{client:Z,projectId:W}=await z(r(),e);b(W,M),await ub(Z,{projectId:W,nameOrId:m,json:p.json},e.io)}),d.command("versions").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("list immutable versions of a model").action(async(m,p)=>{let{client:Z,projectId:W}=await z(r(),e);b(W,M),await mb(Z,{projectId:W,nameOrId:m,json:p.json},e.io)}),d.command("create").argument("<name>","new Model name").requiredOption("--base <id>","base model ID").option("--description <text>","Model description").option("--json","print JSON",!1).description("create project Model metadata without a Model Version").action(async(m,p)=>{let{client:Z,projectId:W}=await z(r(),e);b(W,M),await pb(Z,{projectId:W,name:m,description:p.description,baseModelId:pI(p.base),json:p.json},e.io)}),d.command("archive").option("--json","print JSON",!1).argument("<name-or-id>","project Model name or ID").description("archive a project Model").action(async(m,p)=>{let{client:Z,projectId:W}=await z(r(),e);b(W,M),await Ab(Z,{projectId:W,nameOrId:m,json:p.json},e.io)});let u=t.command("dataset").description("inspect and move dataset catalog and rows");u.command("list").description("list live datasets in the selected project").action(async()=>{let{client:m,projectId:p}=await z(r(),e);b(p,M);let Z=await gb(m,{projectId:p});e.io.stdout(Z.output)}),u.command("fields").argument("<name>","dataset name or id").description("print field declarations inferred from uploaded rows").action(async(m)=>{let{sourceRoot:p,client:Z,projectId:W}=await z(r(),e),h=await rb(Z,{sourceRoot:p,datasetName:m,...W===void 0?{}:{projectId:W}});e.io.stdout(h.output)}),u.command("load").argument("<name>","dataset name or id").requiredOption("--out <file>","JSONL file to write").option("--limit <n>","how many rows to keep after download",Ut).option("--timeout <ms>","how long to wait for the export",Ut).description("download live dataset rows into a JSONL file").action(async(m,p)=>{let{sourceRoot:Z,client:W,projectId:h}=await z(r(),e),f=await ab(W,{sourceRoot:Z,datasetName:m,outPath:Go.resolve(p.out),...h===void 0?{}:{projectId:h},...p.limit===void 0?{}:{limit:p.limit},...p.timeout===void 0?{}:{timeoutMs:p.timeout}});e.io.stdout(f.output)}),u.command("upload").argument("<name>","dataset name or id").argument("<file>","JSON array, JSONL, or CSV file").description("append rows to a dataset").action(async(m,p)=>{let{sourceRoot:Z,client:W,projectId:h}=await z(r(),e),f=await sb(W,{sourceRoot:Z,datasetName:m,filePath:Go.resolve(p),...h===void 0?{}:{projectId:h}});if(e.io.stdout(f.output),f.warning!==void 0)e.io.stderr(f.warning)});let c="pipeline name or id; required unless a TTY picker can choose among several",C=t.command("pipeline").description("operate on a live pipeline in the selected project");C.command("list").option("--limit <n>","maximum pipelines to list",Ut).description("list live pipelines in the selected project").action(async(m)=>{let{client:p,projectId:Z,state:W}=await z(r(),e);b(Z,M);let h=await uW({client:p,projectId:Z,state:W,...m.limit===void 0?{}:{limit:m.limit}});e.io.stdout(h.output)}),C.command("run").argument("[name]",c).option("--wait","wait for the run to reach a terminal state",!1).option("--timeout <ms>","how long to wait",Ut).description("start a run on a deployed pipeline").action(async(m,p)=>{let{client:Z,state:W,projectId:h}=await z(r(),e);b(h,M);let f=await AW(Z,{projectId:h,state:W,...m===void 0?{}:{pipeline:m},wait:p.wait,...p.timeout===void 0?{}:{timeoutMs:p.timeout},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(f.output),i.value=DI(f.outcome)}),C.command("status").argument("[name]",c).description("report the latest run's state and item counts").action(async(m)=>{let{client:p,state:Z,projectId:W}=await z(r(),e);b(W,M);let h=await bW(p,{projectId:W,state:Z,...m===void 0?{}:{pipeline:m},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(h.output),i.value=DI(h.outcome)}),C.command("runs").argument("[name]",c).option("--limit <n>","how many runs to list",Ut).description("list recent runs").action(async(m,p)=>{let{client:Z,state:W,projectId:h}=await z(r(),e);b(h,M);let f=await ZW(Z,{projectId:h,state:W,...m===void 0?{}:{pipeline:m},...p.limit===void 0?{}:{limit:p.limit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(f.output)}),C.command("cost").argument("[name]",c).option("--item-limit <n>","cap how many items to price",Ut).description("forecast what a run of this pipeline would bill").action(async(m,p)=>{let{client:Z,state:W,projectId:h}=await z(r(),e);b(h,M);let f=await VW(Z,{projectId:h,state:W,...m===void 0?{}:{pipeline:m},...p.itemLimit===void 0?{}:{itemLimit:p.itemLimit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(f.output)}),C.command("cancel").argument("<runId>","run to cancel").description("request cancellation of a run").action(async(m)=>{let{client:p}=await z(r(),e),Z=await WW(p,{runId:m});e.io.stdout(Z.output)}),C.command("results").argument("<runId>","run to read").option("--limit <n>","how many items to scan",Ut).option("--failed","only report failed items",!1).description("report a run's items").action(async(m,p)=>{let{client:Z}=await z(r(),e),W=await hW(Z,{runId:m,failedOnly:p.failed,...p.limit===void 0?{}:{limit:p.limit}});e.io.stdout(W.output),i.value=DI(W.outcome)}),t.command("status").description("report project health: live counts and pending source changes").action(async()=>{let{sourceRoot:m,client:p,projectId:Z}=await z(r(),e);b(Z,M);let W=await MZ(p,{sourceRoot:m,projectId:Z});e.io.stdout(W.output)}),t.command("report").argument("<markdownPath>","path to a UTF-8 Markdown report").option("--authored-by <who>","human or agent",B1,"human").option("--confirm","confirm submission in a non-interactive environment",!1).description("preview and send an issue report to Toloka through PostHog").action(async(m,p)=>{b(e.analytics,"Issue reporting requires CLI analytics.");let Z=GW(r()),W=r().baseUrl??e.environment.POTATO_BASE_URL??Wt(e.environment)??ti;i.value=await RW({path:m,authoredBy:p.authoredBy,platform:new URL(W).origin,confirm:p.confirm,sourceRoot:Z,cwd:process.cwd(),analytics:e.analytics,io:e.io})});let A=t.command("skill").description("discover bundled agent skills and install them into .agents/skills");return A.command("list").option("--json","print Skill Descriptors with their status as JSON",!1).description("list bundled skills as not-installed, current, or stale").action(async(m)=>{let p=await dt(r(),e.io);await lZ({sourceRoot:p,json:m.json,io:e.io})}),A.command("search").argument("<query>","text matched case-insensitively against id, name, description, and tags").option("--json","print matching Skill Descriptors with their status as JSON",!1).description("find bundled skills for a task").action(async(m,p)=>{let Z=await dt(r(),e.io);await IZ({sourceRoot:Z,query:m,json:p.json,io:e.io})}),A.command("install").argument("<skillId>","skill id from toloka skill list").option("-f, --force","replace an existing .agents/skills/<skillId> directory",!1).description("copy one bundled skill into .agents/skills/<skillId>").action(async(m,p)=>{let Z=await dt(r(),e.io);await dZ({sourceRoot:Z,skillId:m,force:p.force,io:e.io})}),{program:t,exitCode:i}}var G1=async()=>{process.stdin.setEncoding("utf8");let e=[];for await(let t of process.stdin)e.push(String(t));return e.join("")},w1=async(e)=>{process.stdout.write(e);let t=process.stdin.isRaw;process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8");let{promise:i,resolve:n,reject:o}=Promise.withResolvers(),s="",r=()=>{process.stdin.off("data",I),process.stdin.off("end",a),process.stdin.off("error",l),process.stdin.setRawMode(t),process.stdin.pause()},g=()=>{r(),process.stdout.write(`
|
|
260
|
+
`)},a=()=>{g(),o(Error("Standard input closed before an API key was entered."))},l=(d)=>{g(),o(d)},I=(d)=>{for(let u of d){if(u==="\r"||u===`
|
|
261
|
+
`){g(),n(s);return}if(u==="\x03"||u==="\x04"){g(),o(Error(u==="\x03"?"Canceled.":"Standard input closed before an API key was entered."));return}if(u==="\x7F"||u==="\b"){if(s.length>0)s=s.slice(0,-1),process.stdout.write("\b \b");continue}s+=u,process.stdout.write("*")}};process.stdin.on("data",I),process.stdin.once("end",a),process.stdin.once("error",l);try{return await i}finally{r()}},F1=async(e,t={})=>{if(t.mask===!0)return w1(e);let i=HW.createInterface({input:process.stdin,output:process.stdout,terminal:!0});try{return await i.question(e)}finally{i.close()}},H1=()=>({stdout:(e)=>console.log(e),stderr:(e)=>console.error(e),readStdin:G1,...process.stdin.isTTY?{prompt:F1,select:CW}:{}}),v1=async(e,t,i,n)=>{try{await e.parseAsync([...i],{from:"user"});let o=t.value;return{code:o,outcome:o===0?"succeeded":"failed"}}catch(o){if(o instanceof ct){let s=o.exitCode===0?0:1;return{code:s,outcome:s===0?"succeeded":"usage_error",error:o}}return n.stderr(uo(o)),{code:1,outcome:"failed",error:o}}};async function kW(e,t=process.env,i=H1(),n,o,s,r){let g=await YZ({argv:e,environment:t,io:i,...r===void 0?{}:{hooks:r}});if(g.status==="reexec")return g.exitCode;let a=t[$t]===void 0?o??hZ({environment:t}):void 0,{program:l,exitCode:I}=R1({environment:t,io:i,...a===void 0?{}:{analytics:a},...n===void 0?{}:{injectedClient:n},...s===void 0?{}:{runChecks:s}}),d=Date.now(),u=await v1(l,I,e,i);if(a!==void 0)try{a.captureCommand({command:nr(e),durationMs:Date.now()-d,exitCode:u.code,outcome:u.outcome,...u.error===void 0?{}:{error:u.error}}),await a.shutdown()}catch{}return u.code}kW(process.argv.slice(2)).then((e)=>{process.exitCode=e},(e)=>{console.error(e),process.exitCode=1});})
|