@prisma/studio-core 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-BUOKRYKO.js +10 -0
- package/dist/chunk-FRW62KTF.js +10 -0
- package/dist/chunk-O6LRAFT5.js +10 -0
- package/dist/chunk-P5LRZ6C2.js +10 -0
- package/dist/data/accelerate/index.cjs +2 -1
- package/dist/data/accelerate/index.d.cts +10 -2
- package/dist/data/accelerate/index.d.ts +10 -2
- package/dist/data/accelerate/index.js +10 -1
- package/dist/data/bff/index.cjs +2 -1
- package/dist/data/bff/index.d.cts +10 -3
- package/dist/data/bff/index.d.ts +10 -3
- package/dist/data/bff/index.js +10 -1
- package/dist/data/index.cjs +2 -1
- package/dist/data/index.d.cts +11 -2
- package/dist/data/index.d.ts +11 -2
- package/dist/data/index.js +10 -1
- package/dist/data/pglite/index.cjs +2 -1
- package/dist/data/pglite/index.d.cts +2 -2
- package/dist/data/pglite/index.d.ts +2 -2
- package/dist/data/pglite/index.js +10 -1
- package/dist/data/postgres-core/index.cjs +2 -1
- package/dist/data/postgres-core/index.d.cts +80 -20
- package/dist/data/postgres-core/index.d.ts +80 -20
- package/dist/data/postgres-core/index.js +10 -1
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/{adapter-CKFCHq71.d.cts → query-Q-ZKX_Vr.d.cts} +94 -7
- package/dist/{adapter-CKFCHq71.d.ts → query-Q-ZKX_Vr.d.ts} +94 -7
- package/dist/ui/index.cjs +258 -1370
- package/dist/ui/index.css +1234 -700
- package/dist/ui/index.d.cts +69 -3
- package/dist/ui/index.d.ts +69 -3
- package/dist/ui/index.js +267 -42
- package/package.json +36 -32
- package/dist/CPIOZS5X-V4BHP4CI.js +0 -1
- package/dist/OKF6E45R-XYOIK2NY.js +0 -1
- package/dist/chunk-2ZJZX5I7.js +0 -0
- package/dist/chunk-5MNS4IJC.js +0 -1332
- package/dist/chunk-BMVJYUJW.js +0 -1
- package/dist/chunk-N2MLAUEV.js +0 -1
- package/dist/chunk-P72NBTYE.js +0 -1
- package/dist/chunk-XS52QRY2.js +0 -1
- package/dist/index-BDPv5Gnt.d.ts +0 -48
- package/dist/index-BNAA6jKD.d.cts +0 -48
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{A as nt,B as b,C as F,a as B,b as V,c as q,d as W,e as J,f as K,g as f,h as A,i as G,j as $,k as C,l as Y,m as g,n as H,o as X,p as Z,q as P,r as tt,s as it,t as k,u as O,v,w as et,x as st,y as rt,z as at}from"./chunk-FRW62KTF.js";import{e as p}from"./chunk-P5LRZ6C2.js";p();p();p();function m(e){let{error:t,query:i}=e,s=t;return s.query=i,[s]}p();var pt={bool:{group:"boolean"},boolean:{group:"boolean"},bytea:{group:"string"},char:{group:"string"},citext:{group:"string"},date:{group:"datetime"},interval:{group:"string"},name:{group:"string"},varchar:{group:"string"},text:{group:"string"},time:{group:"time"},timestamp:{group:"datetime"},timestamptz:{group:"datetime"},"timestamp without time zone":{group:"datetime"},"timestamp with time zone":{group:"datetime"},timetz:{group:"time"},"time without time zone":{group:"time"},"time with time zone":{group:"datetime"},uuid:{group:"string"},int2:{group:"numeric"},int4:{group:"numeric"},int8:{group:"numeric"},smallint:{group:"numeric"},integer:{group:"numeric"},bigint:{group:"numeric"},decimal:{group:"numeric"},numeric:{group:"numeric"},real:{group:"numeric"},float4:{group:"numeric"},float8:{group:"numeric"},"double precision":{group:"numeric"},json:{group:"json"},jsonb:{group:"json"}};p();p();var M=class e{#t;constructor(t){this.#t=f(t)}get expressionType(){}get isRawBuilder(){return!0}as(t){return new z(this,t)}$castTo(){return new e({...this.#t})}$notNull(){return new e(this.#t)}withPlugin(t){return new e({...this.#t,plugins:this.#t.plugins!==void 0?f([...this.#t.plugins,t]):f([t])})}toOperationNode(){return this.#e(this.#i())}compile(t){return this.#s(this.#i(t))}async execute(t){let i=this.#i(t);return i.executeQuery(this.#s(i),this.#t.queryId)}#i(t){let i=t!==void 0?t.getExecutor():et;return this.#t.plugins!==void 0?i.withPlugins(this.#t.plugins):i}#e(t){return t.transformQuery(this.#t.rawNode,this.#t.queryId)}#s(t){return t.compileQuery(this.#e(t),this.#t.queryId)}};function N(e){return new M(e)}var z=class{#t;#i;constructor(t,i){this.#t=t,this.#i=i}get expression(){return this.#t}get alias(){return this.#i}get rawBuilder(){return this.#t}toOperationNode(){return $.create(this.#t.toOperationNode(),C(this.#i)?this.#i.toOperationNode():A.create(this.#i))}};p();var h=Object.assign((e,...t)=>N({queryId:v(),rawNode:g.create(e,t?.map(ot)??[])}),{ref(e){return N({queryId:v(),rawNode:g.createWithChild(X(e))})},val(e){return N({queryId:v(),rawNode:g.createWithChild(P(e))})},value(e){return this.val(e)},table(e){return N({queryId:v(),rawNode:g.createWithChild(rt(e))})},id(...e){let t=new Array(e.length+1).fill(".");return t[0]="",t[t.length-1]="",N({queryId:v(),rawNode:g.create(t,e.map(A.create))})},lit(e){return N({queryId:v(),rawNode:g.createWithChild(Z.createImmediate(e))})},literal(e){return this.lit(e)},raw(e){return N({queryId:v(),rawNode:g.createWithSql(e)})},join(e,t=h`, `){let i=new Array(Math.max(2*e.length-1,0)),s=t.toOperationNode();for(let r=0;r<e.length;++r)i[2*r]=ot(e[r]),r!==e.length-1&&(i[2*r+1]=s);return N({queryId:v(),rawNode:g.createWithChildren(i)})}});function ot(e){return C(e)?e.toOperationNode():P(e)}p();p();var T=class{nodeStack=[];get parentNode(){return this.nodeStack[this.nodeStack.length-2]}#t=f({AliasNode:this.visitAlias.bind(this),ColumnNode:this.visitColumn.bind(this),IdentifierNode:this.visitIdentifier.bind(this),SchemableIdentifierNode:this.visitSchemableIdentifier.bind(this),RawNode:this.visitRaw.bind(this),ReferenceNode:this.visitReference.bind(this),SelectQueryNode:this.visitSelectQuery.bind(this),SelectionNode:this.visitSelection.bind(this),TableNode:this.visitTable.bind(this),FromNode:this.visitFrom.bind(this),SelectAllNode:this.visitSelectAll.bind(this),AndNode:this.visitAnd.bind(this),OrNode:this.visitOr.bind(this),ValueNode:this.visitValue.bind(this),ValueListNode:this.visitValueList.bind(this),PrimitiveValueListNode:this.visitPrimitiveValueList.bind(this),ParensNode:this.visitParens.bind(this),JoinNode:this.visitJoin.bind(this),OperatorNode:this.visitOperator.bind(this),WhereNode:this.visitWhere.bind(this),InsertQueryNode:this.visitInsertQuery.bind(this),DeleteQueryNode:this.visitDeleteQuery.bind(this),ReturningNode:this.visitReturning.bind(this),CreateTableNode:this.visitCreateTable.bind(this),AddColumnNode:this.visitAddColumn.bind(this),ColumnDefinitionNode:this.visitColumnDefinition.bind(this),DropTableNode:this.visitDropTable.bind(this),DataTypeNode:this.visitDataType.bind(this),OrderByNode:this.visitOrderBy.bind(this),OrderByItemNode:this.visitOrderByItem.bind(this),GroupByNode:this.visitGroupBy.bind(this),GroupByItemNode:this.visitGroupByItem.bind(this),UpdateQueryNode:this.visitUpdateQuery.bind(this),ColumnUpdateNode:this.visitColumnUpdate.bind(this),LimitNode:this.visitLimit.bind(this),OffsetNode:this.visitOffset.bind(this),OnConflictNode:this.visitOnConflict.bind(this),OnDuplicateKeyNode:this.visitOnDuplicateKey.bind(this),CreateIndexNode:this.visitCreateIndex.bind(this),DropIndexNode:this.visitDropIndex.bind(this),ListNode:this.visitList.bind(this),PrimaryKeyConstraintNode:this.visitPrimaryKeyConstraint.bind(this),UniqueConstraintNode:this.visitUniqueConstraint.bind(this),ReferencesNode:this.visitReferences.bind(this),CheckConstraintNode:this.visitCheckConstraint.bind(this),WithNode:this.visitWith.bind(this),CommonTableExpressionNode:this.visitCommonTableExpression.bind(this),CommonTableExpressionNameNode:this.visitCommonTableExpressionName.bind(this),HavingNode:this.visitHaving.bind(this),CreateSchemaNode:this.visitCreateSchema.bind(this),DropSchemaNode:this.visitDropSchema.bind(this),AlterTableNode:this.visitAlterTable.bind(this),DropColumnNode:this.visitDropColumn.bind(this),RenameColumnNode:this.visitRenameColumn.bind(this),AlterColumnNode:this.visitAlterColumn.bind(this),ModifyColumnNode:this.visitModifyColumn.bind(this),AddConstraintNode:this.visitAddConstraint.bind(this),DropConstraintNode:this.visitDropConstraint.bind(this),RenameConstraintNode:this.visitRenameConstraint.bind(this),ForeignKeyConstraintNode:this.visitForeignKeyConstraint.bind(this),CreateViewNode:this.visitCreateView.bind(this),RefreshMaterializedViewNode:this.visitRefreshMaterializedView.bind(this),DropViewNode:this.visitDropView.bind(this),GeneratedNode:this.visitGenerated.bind(this),DefaultValueNode:this.visitDefaultValue.bind(this),OnNode:this.visitOn.bind(this),ValuesNode:this.visitValues.bind(this),SelectModifierNode:this.visitSelectModifier.bind(this),CreateTypeNode:this.visitCreateType.bind(this),DropTypeNode:this.visitDropType.bind(this),ExplainNode:this.visitExplain.bind(this),DefaultInsertValueNode:this.visitDefaultInsertValue.bind(this),AggregateFunctionNode:this.visitAggregateFunction.bind(this),OverNode:this.visitOver.bind(this),PartitionByNode:this.visitPartitionBy.bind(this),PartitionByItemNode:this.visitPartitionByItem.bind(this),SetOperationNode:this.visitSetOperation.bind(this),BinaryOperationNode:this.visitBinaryOperation.bind(this),UnaryOperationNode:this.visitUnaryOperation.bind(this),UsingNode:this.visitUsing.bind(this),FunctionNode:this.visitFunction.bind(this),CaseNode:this.visitCase.bind(this),WhenNode:this.visitWhen.bind(this),JSONReferenceNode:this.visitJSONReference.bind(this),JSONPathNode:this.visitJSONPath.bind(this),JSONPathLegNode:this.visitJSONPathLeg.bind(this),JSONOperatorChainNode:this.visitJSONOperatorChain.bind(this),TupleNode:this.visitTuple.bind(this),MergeQueryNode:this.visitMergeQuery.bind(this),MatchedNode:this.visitMatched.bind(this),AddIndexNode:this.visitAddIndex.bind(this),CastNode:this.visitCast.bind(this),FetchNode:this.visitFetch.bind(this),TopNode:this.visitTop.bind(this),OutputNode:this.visitOutput.bind(this),OrActionNode:this.visitOrAction.bind(this),CollateNode:this.visitCollate.bind(this)});visitNode=t=>{this.nodeStack.push(t),this.#t[t.kind](t),this.nodeStack.pop()}};var _t=/'/g,S=class extends T{#t="";#i=[];get numParameters(){return this.#i.length}compileQuery(t,i){return this.#t="",this.#i=[],this.nodeStack.splice(0,this.nodeStack.length),this.visitNode(t),f({query:t,queryId:i,sql:this.getSql(),parameters:[...this.#i]})}getSql(){return this.#t}visitSelectQuery(t){let i=this.parentNode!==void 0&&!tt.is(this.parentNode)&&!it.is(this.parentNode)&&!G.is(this.parentNode)&&!at.is(this.parentNode)&&!st.is(this.parentNode);this.parentNode===void 0&&t.explain&&(this.visitNode(t.explain),this.append(" ")),i&&this.append("("),t.with&&(this.visitNode(t.with),this.append(" ")),this.append("select"),t.distinctOn&&(this.append(" "),this.compileDistinctOn(t.distinctOn)),t.frontModifiers?.length&&(this.append(" "),this.compileList(t.frontModifiers," ")),t.top&&(this.append(" "),this.visitNode(t.top)),t.selections&&(this.append(" "),this.compileList(t.selections)),t.from&&(this.append(" "),this.visitNode(t.from)),t.joins&&(this.append(" "),this.compileList(t.joins," ")),t.where&&(this.append(" "),this.visitNode(t.where)),t.groupBy&&(this.append(" "),this.visitNode(t.groupBy)),t.having&&(this.append(" "),this.visitNode(t.having)),t.setOperations&&(this.append(" "),this.compileList(t.setOperations," ")),t.orderBy&&(this.append(" "),this.visitNode(t.orderBy)),t.limit&&(this.append(" "),this.visitNode(t.limit)),t.offset&&(this.append(" "),this.visitNode(t.offset)),t.fetch&&(this.append(" "),this.visitNode(t.fetch)),t.endModifiers?.length&&(this.append(" "),this.compileList(this.sortSelectModifiers([...t.endModifiers])," ")),i&&this.append(")")}visitFrom(t){this.append("from "),this.compileList(t.froms)}visitSelection(t){this.visitNode(t.selection)}visitColumn(t){this.visitNode(t.column)}compileDistinctOn(t){this.append("distinct on ("),this.compileList(t),this.append(")")}compileList(t,i=", "){let s=t.length-1;for(let r=0;r<=s;r++)this.visitNode(t[r]),r<s&&this.append(i)}visitWhere(t){this.append("where "),this.visitNode(t.where)}visitHaving(t){this.append("having "),this.visitNode(t.having)}visitInsertQuery(t){let i=this.nodeStack.find(O.is),s=i!==t;!s&&t.explain&&(this.visitNode(t.explain),this.append(" ")),s&&!k.is(i)&&this.append("("),t.with&&(this.visitNode(t.with),this.append(" ")),this.append(t.replace?"replace":"insert"),t.ignore&&(H("`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead."),this.append(" ignore")),t.orAction&&(this.append(" "),this.visitNode(t.orAction)),t.top&&(this.append(" "),this.visitNode(t.top)),t.into&&(this.append(" into "),this.visitNode(t.into)),t.columns&&(this.append(" ("),this.compileList(t.columns),this.append(")")),t.output&&(this.append(" "),this.visitNode(t.output)),t.values&&(this.append(" "),this.visitNode(t.values)),t.defaultValues&&(this.append(" "),this.append("default values")),t.onConflict&&(this.append(" "),this.visitNode(t.onConflict)),t.onDuplicateKey&&(this.append(" "),this.visitNode(t.onDuplicateKey)),t.returning&&(this.append(" "),this.visitNode(t.returning)),s&&!k.is(i)&&this.append(")"),t.endModifiers?.length&&(this.append(" "),this.compileList(t.endModifiers," "))}visitValues(t){this.append("values "),this.compileList(t.values)}visitDeleteQuery(t){let i=this.nodeStack.find(O.is)!==t;!i&&t.explain&&(this.visitNode(t.explain),this.append(" ")),i&&this.append("("),t.with&&(this.visitNode(t.with),this.append(" ")),this.append("delete "),t.top&&(this.visitNode(t.top),this.append(" ")),this.visitNode(t.from),t.output&&(this.append(" "),this.visitNode(t.output)),t.using&&(this.append(" "),this.visitNode(t.using)),t.joins&&(this.append(" "),this.compileList(t.joins," ")),t.where&&(this.append(" "),this.visitNode(t.where)),t.orderBy&&(this.append(" "),this.visitNode(t.orderBy)),t.limit&&(this.append(" "),this.visitNode(t.limit)),t.returning&&(this.append(" "),this.visitNode(t.returning)),i&&this.append(")"),t.endModifiers?.length&&(this.append(" "),this.compileList(t.endModifiers," "))}visitReturning(t){this.append("returning "),this.compileList(t.selections)}visitAlias(t){this.visitNode(t.node),this.append(" as "),this.visitNode(t.alias)}visitReference(t){t.table&&(this.visitNode(t.table),this.append(".")),this.visitNode(t.column)}visitSelectAll(t){this.append("*")}visitIdentifier(t){this.append(this.getLeftIdentifierWrapper()),this.compileUnwrappedIdentifier(t),this.append(this.getRightIdentifierWrapper())}compileUnwrappedIdentifier(t){if(!B(t.name))throw new Error("a non-string identifier was passed to compileUnwrappedIdentifier.");this.append(this.sanitizeIdentifier(t.name))}visitAnd(t){this.visitNode(t.left),this.append(" and "),this.visitNode(t.right)}visitOr(t){this.visitNode(t.left),this.append(" or "),this.visitNode(t.right)}visitValue(t){t.immediate?this.appendImmediateValue(t.value):this.appendValue(t.value)}visitValueList(t){this.append("("),this.compileList(t.values),this.append(")")}visitTuple(t){this.append("("),this.compileList(t.values),this.append(")")}visitPrimitiveValueList(t){this.append("(");let{values:i}=t;for(let s=0;s<i.length;++s)this.appendValue(i[s]),s!==i.length-1&&this.append(", ");this.append(")")}visitParens(t){this.append("("),this.visitNode(t.node),this.append(")")}visitJoin(t){this.append(kt[t.joinType]),this.append(" "),this.visitNode(t.table),t.on&&(this.append(" "),this.visitNode(t.on))}visitOn(t){this.append("on "),this.visitNode(t.on)}visitRaw(t){let{sqlFragments:i,parameters:s}=t;for(let r=0;r<i.length;++r)this.append(i[r]),s.length>r&&this.visitNode(s[r])}visitOperator(t){this.append(t.operator)}visitTable(t){this.visitNode(t.table)}visitSchemableIdentifier(t){t.schema&&(this.visitNode(t.schema),this.append(".")),this.visitNode(t.identifier)}visitCreateTable(t){this.append("create "),t.frontModifiers&&t.frontModifiers.length>0&&(this.compileList(t.frontModifiers," "),this.append(" ")),t.temporary&&this.append("temporary "),this.append("table "),t.ifNotExists&&this.append("if not exists "),this.visitNode(t.table),t.selectQuery?(this.append(" as "),this.visitNode(t.selectQuery)):(this.append(" ("),this.compileList([...t.columns,...t.constraints??[]]),this.append(")"),t.onCommit&&(this.append(" on commit "),this.append(t.onCommit)),t.endModifiers&&t.endModifiers.length>0&&(this.append(" "),this.compileList(t.endModifiers," ")))}visitColumnDefinition(t){t.ifNotExists&&this.append("if not exists "),this.visitNode(t.column),this.append(" "),this.visitNode(t.dataType),t.unsigned&&this.append(" unsigned"),t.frontModifiers&&t.frontModifiers.length>0&&(this.append(" "),this.compileList(t.frontModifiers," ")),t.generated&&(this.append(" "),this.visitNode(t.generated)),t.identity&&this.append(" identity"),t.defaultTo&&(this.append(" "),this.visitNode(t.defaultTo)),t.notNull&&this.append(" not null"),t.unique&&this.append(" unique"),t.nullsNotDistinct&&this.append(" nulls not distinct"),t.primaryKey&&this.append(" primary key"),t.autoIncrement&&(this.append(" "),this.append(this.getAutoIncrement())),t.references&&(this.append(" "),this.visitNode(t.references)),t.check&&(this.append(" "),this.visitNode(t.check)),t.endModifiers&&t.endModifiers.length>0&&(this.append(" "),this.compileList(t.endModifiers," "))}getAutoIncrement(){return"auto_increment"}visitReferences(t){this.append("references "),this.visitNode(t.table),this.append(" ("),this.compileList(t.columns),this.append(")"),t.onDelete&&(this.append(" on delete "),this.append(t.onDelete)),t.onUpdate&&(this.append(" on update "),this.append(t.onUpdate))}visitDropTable(t){this.append("drop table "),t.ifExists&&this.append("if exists "),this.visitNode(t.table),t.cascade&&this.append(" cascade")}visitDataType(t){this.append(t.dataType)}visitOrderBy(t){this.append("order by "),this.compileList(t.items)}visitOrderByItem(t){this.visitNode(t.orderBy),t.collation&&(this.append(" "),this.visitNode(t.collation)),t.direction&&(this.append(" "),this.visitNode(t.direction)),t.nulls&&(this.append(" nulls "),this.append(t.nulls))}visitGroupBy(t){this.append("group by "),this.compileList(t.items)}visitGroupByItem(t){this.visitNode(t.groupBy)}visitUpdateQuery(t){let i=this.nodeStack.find(O.is),s=i!==t;if(!s&&t.explain&&(this.visitNode(t.explain),this.append(" ")),s&&!k.is(i)&&this.append("("),t.with&&(this.visitNode(t.with),this.append(" ")),this.append("update "),t.top&&(this.visitNode(t.top),this.append(" ")),t.table&&(this.visitNode(t.table),this.append(" ")),this.append("set "),t.updates&&this.compileList(t.updates),t.output&&(this.append(" "),this.visitNode(t.output)),t.from&&(this.append(" "),this.visitNode(t.from)),t.joins){if(!t.from)throw new Error("Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins");this.append(" "),this.compileList(t.joins," ")}t.where&&(this.append(" "),this.visitNode(t.where)),t.orderBy&&(this.append(" "),this.visitNode(t.orderBy)),t.limit&&(this.append(" "),this.visitNode(t.limit)),t.returning&&(this.append(" "),this.visitNode(t.returning)),s&&!k.is(i)&&this.append(")"),t.endModifiers?.length&&(this.append(" "),this.compileList(t.endModifiers," "))}visitColumnUpdate(t){this.visitNode(t.column),this.append(" = "),this.visitNode(t.value)}visitLimit(t){this.append("limit "),this.visitNode(t.limit)}visitOffset(t){this.append("offset "),this.visitNode(t.offset)}visitOnConflict(t){this.append("on conflict"),t.columns?(this.append(" ("),this.compileList(t.columns),this.append(")")):t.constraint?(this.append(" on constraint "),this.visitNode(t.constraint)):t.indexExpression&&(this.append(" ("),this.visitNode(t.indexExpression),this.append(")")),t.indexWhere&&(this.append(" "),this.visitNode(t.indexWhere)),t.doNothing===!0?this.append(" do nothing"):t.updates&&(this.append(" do update set "),this.compileList(t.updates),t.updateWhere&&(this.append(" "),this.visitNode(t.updateWhere)))}visitOnDuplicateKey(t){this.append("on duplicate key update "),this.compileList(t.updates)}visitCreateIndex(t){this.append("create "),t.unique&&this.append("unique "),this.append("index "),t.ifNotExists&&this.append("if not exists "),this.visitNode(t.name),t.table&&(this.append(" on "),this.visitNode(t.table)),t.using&&(this.append(" using "),this.visitNode(t.using)),t.columns&&(this.append(" ("),this.compileList(t.columns),this.append(")")),t.nullsNotDistinct&&this.append(" nulls not distinct"),t.where&&(this.append(" "),this.visitNode(t.where))}visitDropIndex(t){this.append("drop index "),t.ifExists&&this.append("if exists "),this.visitNode(t.name),t.table&&(this.append(" on "),this.visitNode(t.table)),t.cascade&&this.append(" cascade")}visitCreateSchema(t){this.append("create schema "),t.ifNotExists&&this.append("if not exists "),this.visitNode(t.schema)}visitDropSchema(t){this.append("drop schema "),t.ifExists&&this.append("if exists "),this.visitNode(t.schema),t.cascade&&this.append(" cascade")}visitPrimaryKeyConstraint(t){t.name&&(this.append("constraint "),this.visitNode(t.name),this.append(" ")),this.append("primary key ("),this.compileList(t.columns),this.append(")"),this.buildDeferrable(t)}buildDeferrable(t){t.deferrable!==void 0&&(t.deferrable?this.append(" deferrable"):this.append(" not deferrable")),t.initiallyDeferred!==void 0&&(t.initiallyDeferred?this.append(" initially deferred"):this.append(" initially immediate"))}visitUniqueConstraint(t){t.name&&(this.append("constraint "),this.visitNode(t.name),this.append(" ")),this.append("unique"),t.nullsNotDistinct&&this.append(" nulls not distinct"),this.append(" ("),this.compileList(t.columns),this.append(")"),this.buildDeferrable(t)}visitCheckConstraint(t){t.name&&(this.append("constraint "),this.visitNode(t.name),this.append(" ")),this.append("check ("),this.visitNode(t.expression),this.append(")")}visitForeignKeyConstraint(t){t.name&&(this.append("constraint "),this.visitNode(t.name),this.append(" ")),this.append("foreign key ("),this.compileList(t.columns),this.append(") "),this.visitNode(t.references),t.onDelete&&(this.append(" on delete "),this.append(t.onDelete)),t.onUpdate&&(this.append(" on update "),this.append(t.onUpdate)),this.buildDeferrable(t)}visitList(t){this.compileList(t.items)}visitWith(t){this.append("with "),t.recursive&&this.append("recursive "),this.compileList(t.expressions)}visitCommonTableExpression(t){this.visitNode(t.name),this.append(" as "),q(t.materialized)&&(t.materialized||this.append("not "),this.append("materialized ")),this.visitNode(t.expression)}visitCommonTableExpressionName(t){this.visitNode(t.table),t.columns&&(this.append("("),this.compileList(t.columns),this.append(")"))}visitAlterTable(t){this.append("alter table "),this.visitNode(t.table),this.append(" "),t.renameTo&&(this.append("rename to "),this.visitNode(t.renameTo)),t.setSchema&&(this.append("set schema "),this.visitNode(t.setSchema)),t.addConstraint&&this.visitNode(t.addConstraint),t.dropConstraint&&this.visitNode(t.dropConstraint),t.renameConstraint&&this.visitNode(t.renameConstraint),t.columnAlterations&&this.compileColumnAlterations(t.columnAlterations),t.addIndex&&this.visitNode(t.addIndex),t.dropIndex&&this.visitNode(t.dropIndex)}visitAddColumn(t){this.append("add column "),this.visitNode(t.column)}visitRenameColumn(t){this.append("rename column "),this.visitNode(t.column),this.append(" to "),this.visitNode(t.renameTo)}visitDropColumn(t){this.append("drop column "),this.visitNode(t.column)}visitAlterColumn(t){this.append("alter column "),this.visitNode(t.column),this.append(" "),t.dataType&&(this.announcesNewColumnDataType()&&this.append("type "),this.visitNode(t.dataType),t.dataTypeExpression&&(this.append("using "),this.visitNode(t.dataTypeExpression))),t.setDefault&&(this.append("set default "),this.visitNode(t.setDefault)),t.dropDefault&&this.append("drop default"),t.setNotNull&&this.append("set not null"),t.dropNotNull&&this.append("drop not null")}visitModifyColumn(t){this.append("modify column "),this.visitNode(t.column)}visitAddConstraint(t){this.append("add "),this.visitNode(t.constraint)}visitDropConstraint(t){this.append("drop constraint "),t.ifExists&&this.append("if exists "),this.visitNode(t.constraintName),t.modifier==="cascade"?this.append(" cascade"):t.modifier==="restrict"&&this.append(" restrict")}visitRenameConstraint(t){this.append("rename constraint "),this.visitNode(t.oldName),this.append(" to "),this.visitNode(t.newName)}visitSetOperation(t){this.append(t.operator),this.append(" "),t.all&&this.append("all "),this.visitNode(t.expression)}visitCreateView(t){this.append("create "),t.orReplace&&this.append("or replace "),t.materialized&&this.append("materialized "),t.temporary&&this.append("temporary "),this.append("view "),t.ifNotExists&&this.append("if not exists "),this.visitNode(t.name),this.append(" "),t.columns&&(this.append("("),this.compileList(t.columns),this.append(") ")),t.as&&(this.append("as "),this.visitNode(t.as))}visitRefreshMaterializedView(t){this.append("refresh materialized view "),t.concurrently&&this.append("concurrently "),this.visitNode(t.name),t.withNoData?this.append(" with no data"):this.append(" with data")}visitDropView(t){this.append("drop "),t.materialized&&this.append("materialized "),this.append("view "),t.ifExists&&this.append("if exists "),this.visitNode(t.name),t.cascade&&this.append(" cascade")}visitGenerated(t){this.append("generated "),t.always&&this.append("always "),t.byDefault&&this.append("by default "),this.append("as "),t.identity&&this.append("identity"),t.expression&&(this.append("("),this.visitNode(t.expression),this.append(")")),t.stored&&this.append(" stored")}visitDefaultValue(t){this.append("default "),this.visitNode(t.defaultValue)}visitSelectModifier(t){t.rawModifier?this.visitNode(t.rawModifier):this.append(wt[t.modifier]),t.of&&(this.append(" of "),this.compileList(t.of,", "))}visitCreateType(t){this.append("create type "),this.visitNode(t.name),t.enum&&(this.append(" as enum "),this.visitNode(t.enum))}visitDropType(t){this.append("drop type "),t.ifExists&&this.append("if exists "),this.visitNode(t.name)}visitExplain(t){this.append("explain"),(t.options||t.format)&&(this.append(" "),this.append(this.getLeftExplainOptionsWrapper()),t.options&&(this.visitNode(t.options),t.format&&this.append(this.getExplainOptionsDelimiter())),t.format&&(this.append("format"),this.append(this.getExplainOptionAssignment()),this.append(t.format)),this.append(this.getRightExplainOptionsWrapper()))}visitDefaultInsertValue(t){this.append("default")}visitAggregateFunction(t){this.append(t.func),this.append("("),t.distinct&&this.append("distinct "),this.compileList(t.aggregated),t.orderBy&&(this.append(" "),this.visitNode(t.orderBy)),this.append(")"),t.withinGroup&&(this.append(" within group ("),this.visitNode(t.withinGroup),this.append(")")),t.filter&&(this.append(" filter("),this.visitNode(t.filter),this.append(")")),t.over&&(this.append(" "),this.visitNode(t.over))}visitOver(t){this.append("over("),t.partitionBy&&(this.visitNode(t.partitionBy),t.orderBy&&this.append(" ")),t.orderBy&&this.visitNode(t.orderBy),this.append(")")}visitPartitionBy(t){this.append("partition by "),this.compileList(t.items)}visitPartitionByItem(t){this.visitNode(t.partitionBy)}visitBinaryOperation(t){this.visitNode(t.leftOperand),this.append(" "),this.visitNode(t.operator),this.append(" "),this.visitNode(t.rightOperand)}visitUnaryOperation(t){this.visitNode(t.operator),this.isMinusOperator(t.operator)||this.append(" "),this.visitNode(t.operand)}isMinusOperator(t){return Y.is(t)&&t.operator==="-"}visitUsing(t){this.append("using "),this.compileList(t.tables)}visitFunction(t){this.append(t.func),this.append("("),this.compileList(t.arguments),this.append(")")}visitCase(t){this.append("case"),t.value&&(this.append(" "),this.visitNode(t.value)),t.when&&(this.append(" "),this.compileList(t.when," ")),t.else&&(this.append(" else "),this.visitNode(t.else)),this.append(" end"),t.isStatement&&this.append(" case")}visitWhen(t){this.append("when "),this.visitNode(t.condition),t.result&&(this.append(" then "),this.visitNode(t.result))}visitJSONReference(t){this.visitNode(t.reference),this.visitNode(t.traversal)}visitJSONPath(t){t.inOperator&&this.visitNode(t.inOperator),this.append("'$");for(let i of t.pathLegs)this.visitNode(i);this.append("'")}visitJSONPathLeg(t){let i=t.type==="ArrayLocation";this.append(i?"[":"."),this.append(String(t.value)),i&&this.append("]")}visitJSONOperatorChain(t){for(let i=0,s=t.values.length;i<s;i++)i===s-1?this.visitNode(t.operator):this.append("->"),this.visitNode(t.values[i])}visitMergeQuery(t){t.with&&(this.visitNode(t.with),this.append(" ")),this.append("merge "),t.top&&(this.visitNode(t.top),this.append(" ")),this.append("into "),this.visitNode(t.into),t.using&&(this.append(" "),this.visitNode(t.using)),t.whens&&(this.append(" "),this.compileList(t.whens," ")),t.returning&&(this.append(" "),this.visitNode(t.returning)),t.output&&(this.append(" "),this.visitNode(t.output)),t.endModifiers?.length&&(this.append(" "),this.compileList(t.endModifiers," "))}visitMatched(t){t.not&&this.append("not "),this.append("matched"),t.bySource&&this.append(" by source")}visitAddIndex(t){this.append("add "),t.unique&&this.append("unique "),this.append("index "),this.visitNode(t.name),t.columns&&(this.append(" ("),this.compileList(t.columns),this.append(")")),t.using&&(this.append(" using "),this.visitNode(t.using))}visitCast(t){this.append("cast("),this.visitNode(t.expression),this.append(" as "),this.visitNode(t.dataType),this.append(")")}visitFetch(t){this.append("fetch next "),this.visitNode(t.rowCount),this.append(` rows ${t.modifier}`)}visitOutput(t){this.append("output "),this.compileList(t.selections)}visitTop(t){this.append(`top(${t.expression})`),t.modifiers&&this.append(` ${t.modifiers}`)}visitOrAction(t){this.append(t.action)}visitCollate(t){this.append("collate "),this.visitNode(t.collation)}append(t){this.#t+=t}appendValue(t){this.addParameter(t),this.append(this.getCurrentParameterPlaceholder())}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getCurrentParameterPlaceholder(){return"$"+this.numParameters}getLeftExplainOptionsWrapper(){return"("}getExplainOptionAssignment(){return" "}getExplainOptionsDelimiter(){return", "}getRightExplainOptionsWrapper(){return")"}sanitizeIdentifier(t){let i=this.getLeftIdentifierWrapper(),s=this.getRightIdentifierWrapper(),r="";for(let a of t)r+=a,a===i?r+=i:a===s&&(r+=s);return r}sanitizeStringLiteral(t){return t.replace(_t,"''")}addParameter(t){this.#i.push(t)}appendImmediateValue(t){if(B(t))this.appendStringLiteral(t);else if(V(t)||q(t))this.append(t.toString());else if(W(t))this.append("null");else if(J(t))this.appendImmediateValue(t.toISOString());else if(K(t))this.appendImmediateValue(t.toString());else throw new Error(`invalid immediate value ${t}`)}appendStringLiteral(t){this.append("'"),this.append(this.sanitizeStringLiteral(t)),this.append("'")}sortSelectModifiers(t){return t.sort((i,s)=>i.modifier&&s.modifier?lt[i.modifier]-lt[s.modifier]:1),f(t)}compileColumnAlterations(t){this.compileList(t)}announcesNewColumnDataType(){return!0}},wt=f({ForKeyShare:"for key share",ForNoKeyUpdate:"for no key update",ForUpdate:"for update",ForShare:"for share",NoWait:"nowait",SkipLocked:"skip locked",Distinct:"distinct"}),lt=f({ForKeyShare:1,ForNoKeyUpdate:1,ForUpdate:1,ForShare:1,NoWait:2,SkipLocked:2,Distinct:0}),kt=f({InnerJoin:"inner join",LeftJoin:"left join",RightJoin:"right join",FullJoin:"full join",CrossJoin:"cross join",LateralInnerJoin:"inner join lateral",LateralLeftJoin:"left join lateral",LateralCrossJoin:"cross join lateral",OuterApply:"outer apply",CrossApply:"cross apply",Using:"using"});p();var D=class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}};p();var At=/"/g,I=class extends S{sanitizeIdentifier(t){return t.replace(At,'""')}};p();var Ct=BigInt("3853314791062309107"),R=class extends D{get supportsTransactionalDdl(){return!0}get supportsReturning(){return!0}async acquireMigrationLock(t,i){await h`select pg_advisory_xact_lock(${h.lit(Ct)})`.execute(t)}async releaseMigrationLock(t,i){}};p();function x(e){return nt({...e,Adapter:R,QueryCompiler:I})}function dt(e,t){let{table:i,rows:s}=e,{name:r,schema:a,columns:n}=i,o=x(t),d=Object.keys(n),l={[d[0]]:h`default`};return b(o.withSchema(a).insertInto(r).values(s.map(y=>Object.keys(y).length===0?l:y)).returning(d).returning(y=>y.cast("ctid","text").as("ctid")))}function ht(e,t){let{pageIndex:i,pageSize:s,sortOrder:r,table:{name:a,schema:n,columns:o},filter:d={kind:"FilterGroup",after:"and",filters:[]}}=e,l=x(t),y=Object.keys(o),E=l.withSchema(n).selectFrom(a).select(u=>u.cast(u.fn.coalesce(u.fn.countAll(),h.lit(0)),"text").as("oid"));return b(l.with("count",()=>E).withSchema(n).selectFrom([a,"count"]).select(h.ref("count.oid").$castTo().as("oid")).select(u=>u.cast("ctid","text").as("ctid")).select(y).$call(u=>r.reduce((_,w)=>_.orderBy(w.column,w.direction),u)).where(ut(d.filters,o)).limit(s).offset(h.lit(BigInt(i)*BigInt(s))))}function Ot(e,t){return e.kind==="ColumnFilter"?i=>{let{column:s,operator:r,value:a}=e,n=h.ref(s),o=t[s]?.datatype.group==="enum"?i.cast(n,"text"):n;return i(o,r,a)}:ut(e.filters,t)}function ut(e,t){if(e.length===0)return r=>r.lit(!0);let i=[],s=[];for(let r=0;r<e.length;r++)s.push(Ot(e[r],t)),(r===e.length-1||e[r].after==="or")&&(i.push(s),s=[]);return r=>{let a=i.map(n=>r.and(n.map(o=>o(r))));return r.or(a)}}function Bi(){return[{created_at:new Date("2025-01-26T21:56:12.345Z"),ctid:"(0,1)",deleted_at:null,id:1,name:"John Doe",oid:"2",role:"admin",name_role:"Jonn Doe - admin"},{created_at:new Date("2025-01-26T20:56:12.345Z"),ctid:"(0,2)",deleted_at:null,id:2,name:"Jane Doe",oid:"2",role:"poweruser",name_role:"Jane Doe - poweruser"}]}function ct(e,t){let{changes:i,row:s,table:{columns:r,name:a,schema:n}}=e,o=x(t),d=Object.keys(r);return b(o.withSchema(n).updateTable(a).set(i).$call(F([s],r)).returning(d).returning(l=>[l.cast("ctid","text").as("ctid"),l.cast(l.fn("floor",[l(l.fn("extract",[h`epoch from now()`]),"*",1e6)]),"text").as("__ps_updated_at__")]))}function mt(e,t){let{rows:i,table:{columns:s,name:r,schema:a}}=e,n=x(t);return b(n.withSchema(a).deleteFrom(r).$call(F(i,s)))}p();p();function ft(e){return h`(select coalesce(json_agg(agg), '[]') from ${e} as agg)`}var Tt="r",St="v",Dt=[Tt,St];function yt(e){return b(x(e).selectFrom("pg_catalog.pg_class as cls").innerJoin("pg_catalog.pg_namespace as ns","cls.relnamespace","ns.oid").$call(It).where("cls.relkind","in",Dt).select(t=>["ns.nspname as schema","cls.relname as name",ft(t.selectFrom("pg_catalog.pg_attribute as att").innerJoin("pg_catalog.pg_type as typ","typ.oid","att.atttypid").innerJoin("pg_catalog.pg_namespace as tns","tns.oid","typ.typnamespace").leftJoin("pg_catalog.pg_constraint as pk_con",i=>i.on("pk_con.contype","=","p").onRef("pk_con.conrelid","=","cls.oid").on(s=>s("att.attnum","=",s.fn.any("pk_con.conkey")))).leftJoin("pg_catalog.pg_constraint as fk_con",i=>i.on("fk_con.contype","=","f").onRef("fk_con.conrelid","=","cls.oid").on(s=>s("att.attnum","=",s.fn.any("fk_con.conkey")))).leftJoin("pg_catalog.pg_class as fk_cls","fk_cls.oid","fk_con.confrelid").leftJoin("pg_catalog.pg_namespace as fk_ns","fk_ns.oid","fk_cls.relnamespace").leftJoin("pg_catalog.pg_attribute as fk_att",i=>i.onRef("fk_att.attrelid","=","fk_cls.oid").on(s=>s("fk_att.attnum","=",s.fn.any("fk_con.confkey")))).whereRef("att.attrelid","=","cls.oid").where("att.attnum",">=",0).where("att.attisdropped","!=",!0).select(["att.attname as name","typ.typname as datatype","tns.nspname as datatype_schema","fk_ns.nspname as foreign_key_schema","fk_cls.relname as foreign_key_table","fk_att.attname as foreign_key_column"]).select(i=>[i("pk_con.conkey","is not",null).$castTo().as("pk"),i("att.attgenerated","!=","").$castTo().as("computed"),i("att.attnotnull","!=",!0).$castTo().as("nullable"),i.fn.coalesce(i.selectFrom("pg_catalog.pg_enum as enm").whereRef("enm.enumtypid","=","typ.oid").select(s=>s.fn.jsonAgg(s.ref("enm.enumlabel")).as("o")),h`'[]'`).as("options")])).as("columns")]))}function gt(){return[{schema:"zoo",name:"animals",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]},{schema:"public",name:"users",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"deleted_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"role",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name_role",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!0,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]}]}function vt(){let e=x();return b(e.selectNoFrom(e.fn("current_setting",[h.lit("timezone")]).as("timezone")))}function Nt(){return[{timezone:"UTC"}]}function It(e){return e.where("ns.nspname","!~","^pg_").where("ns.nspname","!=","information_schema")}function Xi(e){let{executor:t,...i}=e;return{defaultSchema:"public",async introspect(s){try{let r=yt(i),a=vt(),[[n,o],[d,l]]=await Promise.all([t.execute(r,s),t.execute(a,s)]);if(n)return m({error:n,query:r});if(d)return m({error:d,query:a});let y=l[0]?.timezone;return y?[null,bt({tables:o,timezone:y,query:r})]:m({error:new Error("Timezone not found"),query:a})}catch(r){return m({error:r})}},async query(s,r){try{let a=ht(s,i),[n,o]=await t.execute(a,r);return n?m({error:n,query:a}):[null,{filteredRowCount:o[0]?.oid||"0",rows:o,query:a}]}catch(a){return m({error:a})}},async insert(s,r){try{let a=dt(s,i),[n,o]=await t.execute(a,r);return n?m({error:n,query:a}):[null,{rows:o,query:a}]}catch(a){return m({error:a})}},async update(s,r){try{let a=ct(s,i),[n,o]=await t.execute(a,r);if(n)return m({error:n,query:a});let[d]=o;return d?[null,{row:d,query:a}]:m({error:new Error("Update failed"),query:a})}catch(a){return m({error:a})}},async delete(s,r){try{let a=mt(s,i),[n]=await t.execute(a,r);return n?m({error:n,query:a}):[null,{...s,query:a}]}catch(a){return m({error:a})}}}}function bt(e){let{tables:t,timezone:i,query:s}=e;return t.reduce((r,a)=>{let{schemas:n}=r,{columns:o,name:d,schema:l}=a,y=o.reduce((E,u)=>{let{datatype:_,datatype_schema:w,name:U,options:j,nullable:xt}=u,L=_.startsWith("_"),Q=L?_.slice(1):_;return{...E,[U]:{datatype:{...pt[Q]||{group:j.length>0?"enum":"raw"},isArray:L,isNative:w==="pg_catalog",name:L?`${Q}[]`:Q,options:j,schema:w},isComputed:u.computed,isInPrimaryKey:u.pk,name:U,nullable:xt,schema:l,table:d,fkSchema:u.foreign_key_schema,fkTable:u.foreign_key_table,fkColumn:u.foreign_key_column}}},{});return n[l]===void 0&&(n[l]={name:l,tables:{}}),n[l].tables[d]={columns:y,name:d,schema:l},r},{schemas:{public:{tables:{},name:"public"}},timezone:i,filterOperators:Rt,query:s})}var Rt=["=","!=",">",">=","<","<=","is","is not","like","not like","ilike","not ilike"];function Zi(){let e=gt(),[{timezone:t}]=Nt();return bt({tables:e,timezone:t,query:{parameters:[],sql:"<mocked>"}})}export{dt as a,ht as b,Bi as c,ct as d,mt as e,yt as f,gt as g,vt as h,Nt as i,Xi as j,Zi as k};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2luZGV4LnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9hZGFwdGVyLnRzIiwgIi4uL2RhdGEvYWRhcHRlci50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvZGF0YXR5cGUudHMiLCAiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2RtbC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0va3lzZWx5QDAuMjguMi9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL3Jhdy1idWlsZGVyL3Jhdy1idWlsZGVyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC4yL25vZGVfbW9kdWxlcy9reXNlbHkvZGlzdC9lc20vcmF3LWJ1aWxkZXIvc3FsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC4yL25vZGVfbW9kdWxlcy9reXNlbHkvZGlzdC9lc20vcXVlcnktY29tcGlsZXIvZGVmYXVsdC1xdWVyeS1jb21waWxlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0va3lzZWx5QDAuMjguMi9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL29wZXJhdGlvbi1ub2RlL29wZXJhdGlvbi1ub2RlLXZpc2l0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2t5c2VseUAwLjI4LjIvbm9kZV9tb2R1bGVzL2t5c2VseS9kaXN0L2VzbS9kaWFsZWN0L2RpYWxlY3QtYWRhcHRlci1iYXNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC4yL25vZGVfbW9kdWxlcy9reXNlbHkvZGlzdC9lc20vZGlhbGVjdC9wb3N0Z3Jlcy9wb3N0Z3Jlcy1xdWVyeS1jb21waWxlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0va3lzZWx5QDAuMjguMi9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL2RpYWxlY3QvcG9zdGdyZXMvcG9zdGdyZXMtYWRhcHRlci5qcyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvYnVpbGRlci50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvaW50cm9zcGVjdGlvbi50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0va3lzZWx5QDAuMjguMi9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL2hlbHBlcnMvcG9zdGdyZXMuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RtbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuIiwgImltcG9ydCB7XG4gIHR5cGUgQWRhcHRlcixcbiAgdHlwZSBBZGFwdGVyRGVsZXRlUmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJFcnJvcixcbiAgdHlwZSBBZGFwdGVySW5zZXJ0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJJbnRyb3NwZWN0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJRdWVyeVJlc3VsdCxcbiAgdHlwZSBBZGFwdGVyVXBkYXRlUmVzdWx0LFxuICB0eXBlIENvbHVtbixcbiAgY3JlYXRlQWRhcHRlckVycm9yLFxuICB0eXBlIEZpbHRlck9wZXJhdG9yLFxuICB0eXBlIFRhYmxlLFxufSBmcm9tIFwiLi4vYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBFeGVjdXRvciB9IGZyb20gXCIuLi9leGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBRdWVyeSwgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IFBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQSB9IGZyb20gXCIuL2RhdGF0eXBlXCI7XG5pbXBvcnQgeyBnZXREZWxldGVRdWVyeSwgZ2V0SW5zZXJ0UXVlcnksIGdldFNlbGVjdFF1ZXJ5LCBnZXRVcGRhdGVRdWVyeSB9IGZyb20gXCIuL2RtbFwiO1xuaW1wb3J0IHsgZ2V0VGFibGVzUXVlcnksIGdldFRpbWV6b25lUXVlcnksIG1vY2tUYWJsZXNRdWVyeSwgbW9ja1RpbWV6b25lUXVlcnkgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzIHtcbiAgZXhlY3V0b3I6IEV4ZWN1dG9yO1xuICBub1BhcmFtZXRlcnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9zdGdyZXNBZGFwdGVyKHJlcXVpcmVtZW50czogUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzKTogQWRhcHRlciB7XG4gIGNvbnN0IHsgZXhlY3V0b3IsIC4uLm90aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0U2NoZW1hOiBcInB1YmxpY1wiLFxuICAgIGFzeW5jIGludHJvc3BlY3Qob3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0YWJsZXNRdWVyeSA9IGdldFRhYmxlc1F1ZXJ5KG90aGVyUmVxdWlyZW1lbnRzKTtcbiAgICAgICAgY29uc3QgdGltZXpvbmVRdWVyeSA9IGdldFRpbWV6b25lUXVlcnkoKTtcblxuICAgICAgICBjb25zdCBbW3RhYmxlc0Vycm9yLCB0YWJsZXNdLCBbdGltZXpvbmVFcnJvciwgdGltZXpvbmVzXV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgZXhlY3V0b3IuZXhlY3V0ZSh0YWJsZXNRdWVyeSwgb3B0aW9ucyksXG4gICAgICAgICAgZXhlY3V0b3IuZXhlY3V0ZSh0aW1lem9uZVF1ZXJ5LCBvcHRpb25zKSxcbiAgICAgICAgXSk7XG5cbiAgICAgICAgaWYgKHRhYmxlc0Vycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiB0YWJsZXNFcnJvciwgcXVlcnk6IHRhYmxlc1F1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRpbWV6b25lRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IHRpbWV6b25lRXJyb3IsIHF1ZXJ5OiB0aW1lem9uZVF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZXpvbmUgPSB0aW1lem9uZXNbMF0/LnRpbWV6b25lO1xuXG4gICAgICAgIGlmICghdGltZXpvbmUpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IG5ldyBFcnJvcihcIlRpbWV6b25lIG5vdCBmb3VuZFwiKSwgcXVlcnk6IHRpbWV6b25lUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIGNyZWF0ZUludHJvc3BlY3Rpb24oeyB0YWJsZXMsIHRpbWV6b25lLCBxdWVyeTogdGFibGVzUXVlcnkgfSldO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgLy8gVE9ETzogaGFuZGxlIHByb3Blcmx5XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHF1ZXJ5KGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJRdWVyeVJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0U2VsZWN0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZShxdWVyeSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgeyBmaWx0ZXJlZFJvd0NvdW50OiByZXN1bHRzWzBdPy5vaWQgfHwgXCIwXCIsIHJvd3M6IHJlc3VsdHMsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgLy8gVE9ETzogaGFuZGxlIHByb3Blcmx5XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGluc2VydChkZXRhaWxzLCBvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVySW5zZXJ0UmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXRJbnNlcnRRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG4gICAgICAgIGNvbnN0IFtlcnJvciwgcm93c10gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvd3MsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGdldFVwZGF0ZVF1ZXJ5KGRldGFpbHMsIG90aGVyUmVxdWlyZW1lbnRzKTtcbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbcm93XSA9IHJlc3VsdHM7XG5cbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICAvLyBUT0RPOiBjdXN0b20gZXJyb3I/XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBuZXcgRXJyb3IoXCJVcGRhdGUgZmFpbGVkXCIpLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgeyByb3csIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGRlbGV0ZShkZXRhaWxzLCBvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyRGVsZXRlUmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXREZWxldGVRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG4gICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IC4uLmRldGFpbHMsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnRyb3NwZWN0aW9uKGFyZ3M6IHsgdGFibGVzOiBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+OyB0aW1lem9uZTogc3RyaW5nOyBxdWVyeTogUXVlcnkgfSkge1xuICBjb25zdCB7IHRhYmxlcywgdGltZXpvbmUsIHF1ZXJ5IH0gPSBhcmdzO1xuXG4gIHJldHVybiB0YWJsZXMucmVkdWNlKFxuICAgIChyZXN1bHQsIHJvdykgPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWFzIH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0gPSByb3c7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnNSZWNvcmQgPSBjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGNvbHVtbnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0YXR5cGUsIGRhdGF0eXBlX3NjaGVtYSwgbmFtZTogY29sdW1uTmFtZSwgb3B0aW9ucywgbnVsbGFibGUgfSA9IGNvbHVtbjtcblxuICAgICAgICAgIGNvbnN0IGlzQXJyYXkgPSBkYXRhdHlwZS5zdGFydHNXaXRoKFwiX1wiKTtcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZERhdGFUeXBlID0gaXNBcnJheSA/IGRhdGF0eXBlLnNsaWNlKDEpIDogZGF0YXR5cGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgIFtjb2x1bW5OYW1lXToge1xuICAgICAgICAgICAgICBkYXRhdHlwZToge1xuICAgICAgICAgICAgICAgIC4uLihQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEFbc3RyaXBwZWREYXRhVHlwZV0gfHwge1xuICAgICAgICAgICAgICAgICAgZ3JvdXA6IG9wdGlvbnMubGVuZ3RoID4gMCA/IFwiZW51bVwiIDogXCJyYXdcIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgICAgICAgIGlzTmF0aXZlOiBkYXRhdHlwZV9zY2hlbWEgPT09IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IGlzQXJyYXkgPyBgJHtzdHJpcHBlZERhdGFUeXBlfVtdYCA6IHN0cmlwcGVkRGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGRhdGF0eXBlX3NjaGVtYSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaXNDb21wdXRlZDogY29sdW1uLmNvbXB1dGVkLFxuICAgICAgICAgICAgICBpc0luUHJpbWFyeUtleTogY29sdW1uLnBrLFxuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICBudWxsYWJsZSxcbiAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICB0YWJsZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgICBma1NjaGVtYTogY29sdW1uLmZvcmVpZ25fa2V5X3NjaGVtYSxcbiAgICAgICAgICAgICAgZmtUYWJsZTogY29sdW1uLmZvcmVpZ25fa2V5X3RhYmxlLFxuICAgICAgICAgICAgICBma0NvbHVtbjogY29sdW1uLmZvcmVpZ25fa2V5X2NvbHVtbixcbiAgICAgICAgICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbHVtbixcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBUYWJsZVtcImNvbHVtbnNcIl0sXG4gICAgICApO1xuXG4gICAgICBpZiAoc2NoZW1hc1tzY2hlbWFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NoZW1hc1tzY2hlbWFdID0ge1xuICAgICAgICAgIG5hbWU6IHNjaGVtYSxcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzY2hlbWFzW3NjaGVtYV0udGFibGVzW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnNSZWNvcmQsXG4gICAgICAgIG5hbWU6IHRhYmxlTmFtZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYXM6IHsgcHVibGljOiB7IHRhYmxlczoge30sIG5hbWU6IFwicHVibGljXCIgfSB9LFxuICAgICAgdGltZXpvbmUsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnMsXG4gICAgICBxdWVyeSxcbiAgICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCBhcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCxcbiAgKTtcbn1cblxuY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gW1xuICBcIj1cIixcbiAgXCIhPVwiLFxuICBcIj5cIixcbiAgXCI+PVwiLFxuICBcIjxcIixcbiAgXCI8PVwiLFxuICBcImlzXCIsXG4gIFwiaXMgbm90XCIsXG4gIFwibGlrZVwiLFxuICBcIm5vdCBsaWtlXCIsXG4gIFwiaWxpa2VcIixcbiAgXCJub3QgaWxpa2VcIixcbl0gc2F0aXNmaWVzIEZpbHRlck9wZXJhdG9yW107XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50cm9zcGVjdCgpIHtcbiAgY29uc3QgdGFibGVzID0gbW9ja1RhYmxlc1F1ZXJ5KCk7XG4gIGNvbnN0IFt7IHRpbWV6b25lIH1dID0gbW9ja1RpbWV6b25lUXVlcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB7IHBhcmFtZXRlcnM6IFtdLCBzcWw6IFwiPG1vY2tlZD5cIiB9IGFzIFF1ZXJ5O1xuXG4gIHJldHVybiBjcmVhdGVJbnRyb3NwZWN0aW9uKHsgdGFibGVzLCB0aW1lem9uZSwgcXVlcnkgfSkgYXMge1xuICAgIC8vIGJlc3QgZWZmb3J0LCBubyBuZWVkIGdvIG92ZXJib2FyZC5cbiAgICBzY2hlbWFzOiB7XG4gICAgICBbSyBpbiAodHlwZW9mIHRhYmxlcylbbnVtYmVyXVtcInNjaGVtYVwiXV06IHtcbiAgICAgICAgbmFtZTogSztcbiAgICAgICAgdGFibGVzOiB7XG4gICAgICAgICAgW1QgaW4gKHR5cGVvZiB0YWJsZXMpW251bWJlcl1bXCJuYW1lXCJdXTogVGFibGU7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgdGltZXpvbmU6IHR5cGVvZiB0aW1lem9uZTtcbiAgICBmaWx0ZXJPcGVyYXRvcnM6IEZpbHRlck9wZXJhdG9yW107XG4gICAgcXVlcnk6IFF1ZXJ5O1xuICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeSB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgRWl0aGVyLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXIge1xuICAvKipcbiAgICogVGhlIHNjaGVtYSBzdHVkaW8gd2lsbCBjaG9vc2UgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogZS5nLiBgcHVibGljYCBmb3IgUG9zdGdyZVNRTFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFNjaGVtYT86IHN0cmluZztcblxuICAvKipcbiAgICogSW50cm9zcGVjdHMgdGhlIGRhdGFiYXNlIGFuZCByZXR1cm5zIHN0cnVjdHVyZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjaGVtYXMsIHRhYmxlcywgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSBpbnRyb3NwZWN0aW9uIHJlcXVlc3QuXG4gICAqL1xuICBpbnRyb3NwZWN0KG9wdGlvbnM6IEFkYXB0ZXJJbnRyb3NwZWN0T3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PjtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzdHJ1Y3R1cmVkIHF1ZXJ5IGFnYWluc3QgdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcXVlcnkoZGV0YWlsczogQWRhcHRlclF1ZXJ5RGV0YWlscywgb3B0aW9uczogQWRhcHRlclF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclF1ZXJ5UmVzdWx0Pj47XG5cbiAgLyoqXG4gICAqIEluc2VydHMgYSBzaW5nbGUgcm93IGludG8gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgaW5zZXJ0KFxuICAgIGRldGFpbHM6IEFkYXB0ZXJJbnNlcnREZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJJbnNlcnRPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJJbnNlcnRSZXN1bHQ+PjtcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGdpdmVuIHJvdyBpbiB0aGUgZGF0YWJhc2Ugd2l0aCBnaXZlbiBjaGFuZ2VzLlxuICAgKi9cbiAgdXBkYXRlKFxuICAgIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PjtcblxuICAvKipcbiAgICogRGVsZXRlcyBnaXZlbiByb3dzIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIGRldGFpbHM6IEFkYXB0ZXJEZWxldGVEZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJEZWxldGVPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJEZWxldGVSZXN1bHQ+Pjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVySW50cm9zcGVjdE9wdGlvbnMgZXh0ZW5kcyBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyUXVlcnlPcHRpb25zIGV4dGVuZHMgQWRhcHRlckJhc2VPcHRpb25zIHtcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJJbnNlcnRPcHRpb25zIGV4dGVuZHMgQWRhcHRlckJhc2VPcHRpb25zIHt9XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclVwZGF0ZU9wdGlvbnMgZXh0ZW5kcyBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyRGVsZXRlT3B0aW9ucyBleHRlbmRzIEFkYXB0ZXJCYXNlT3B0aW9ucyB7fVxuXG50eXBlIFNjaGVtYU5hbWUgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlckludHJvc3BlY3RSZXN1bHQge1xuICBzY2hlbWFzOiBSZWNvcmQ8U2NoZW1hTmFtZSwgU2NoZW1hPjtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgZmlsdGVyT3BlcmF0b3JzOiBGaWx0ZXJPcGVyYXRvcltdO1xuICBxdWVyeTogUXVlcnk7XG59XG5cbnR5cGUgVGFibGVOYW1lID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGFibGVzOiBSZWNvcmQ8VGFibGVOYW1lLCBUYWJsZT47XG59XG5cbnR5cGUgQ29sdW1uTmFtZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZSB7XG4gIGNvbHVtbnM6IFJlY29yZDxDb2x1bW5OYW1lLCBDb2x1bW4+O1xuICBuYW1lOiBUYWJsZU5hbWU7XG4gIHNjaGVtYTogU2NoZW1hTmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xuICBkYXRhdHlwZTogRGF0YVR5cGU7XG4gIGlzQ29tcHV0ZWQ6IGJvb2xlYW47XG4gIGlzSW5QcmltYXJ5S2V5OiBib29sZWFuO1xuICBuYW1lOiBDb2x1bW5OYW1lO1xuICBudWxsYWJsZTogYm9vbGVhbjtcbiAgc2NoZW1hOiBTY2hlbWFOYW1lO1xuICB0YWJsZTogVGFibGVOYW1lO1xuICBma1NjaGVtYTogU2NoZW1hTmFtZSB8IG51bGw7XG4gIGZrQ29sdW1uOiBDb2x1bW5OYW1lIHwgbnVsbDtcbiAgZmtUYWJsZTogVGFibGVOYW1lIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVHlwZSB7XG4gIC8qKlxuICAgKiBBIHNpbXBsaWZpY2F0aW9uL25vcm1hbGl6YXRpb24gZm9yIFVJIHVzYWdlLlxuICAgKlxuICAgKiBlLmcuIHZhcmNoYXIgYW5kIGNoYXIgYXJlIHN0cmluZ3MuXG4gICAqL1xuICBncm91cDogRGF0YVR5cGVHcm91cDtcblxuICAvKipcbiAgICogSXMgdGhpcyBhIG5hdGl2ZSBhcnJheSB0eXBlP1xuICAgKi9cbiAgaXNBcnJheTogYm9vbGVhbjtcblxuICAvKipcbiAgICogSXMgYSBuYXRpdmUgZGF0YWJhc2UgZGF0YXR5cGUgb3IgYSB1c2VyLWRlZmluZWQgZGF0YXR5cGU/XG4gICAqXG4gICAqIGUuZy4gUG9zdGdyZVNRTCBlbnVtcyBhcmUgdXNlci1kZWZpbmVkIGRhdGF0eXBlcywgYnV0IGBpbnQ0YCBpcyBhIG5hdGl2ZSBkYXRhdHlwZS5cbiAgICovXG4gIGlzTmF0aXZlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGRpc3BsYXllZCBhcy1pcy5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW51bSB2YWx1ZXMgZm9yIGVudW0gdHlwZXMuXG4gICAqL1xuICBvcHRpb25zOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSB0aGUgZGF0YXR5cGUgYmVsb25ncyB0by5cbiAgICovXG4gIHNjaGVtYTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEYXRhVHlwZUdyb3VwID0gXCJzdHJpbmdcIiB8IFwiZGF0ZXRpbWVcIiB8IFwiYm9vbGVhblwiIHwgXCJlbnVtXCIgfCBcInRpbWVcIiB8IFwicmF3XCIgfCBcIm51bWVyaWNcIiB8IFwianNvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJRdWVyeURldGFpbHMge1xuICAvKipcbiAgICogWmVyby1iYXNlZCBpbmRleCBvZiB0aGUgcGFnZSB0byBmZXRjaC5cbiAgICovXG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIGZldGNoIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcGFnZVNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogU29ydCBvcmRlciBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcblxuICAvKipcbiAgICogVGhlIGZpbHRlciB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgZmlsdGVyPzogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yID1cbiAgfCBcIj1cIlxuICB8IFwiIT1cIlxuICB8IFwiPlwiXG4gIHwgXCI+PVwiXG4gIHwgXCI8XCJcbiAgfCBcIjw9XCJcbiAgfCBcImlzXCJcbiAgfCBcImlzIG5vdFwiXG4gIHwgXCJsaWtlXCJcbiAgfCBcIm5vdCBsaWtlXCJcbiAgfCBcImlsaWtlXCJcbiAgfCBcIm5vdCBpbGlrZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkZpbHRlciB7XG4gIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCI7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3I7XG4gIHZhbHVlOiB1bmtub3duO1xuICBhZnRlcjogXCJhbmRcIiB8IFwib3JcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cCB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIjtcbiAgZmlsdGVyczogKENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKVtdO1xuICBhZnRlcjogXCJhbmRcIiB8IFwib3JcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3JkZXJJdGVtIHtcbiAgLyoqXG4gICAqIFRoZSBjb2x1bW4gdG8gc29ydCBieS5cbiAgICovXG4gIGNvbHVtbjogQ29sdW1uTmFtZTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0byBzb3J0IHRoZSBjb2x1bW4gYnkuXG4gICAqL1xuICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG59XG5cbmV4cG9ydCB0eXBlIFNvcnREaXJlY3Rpb24gPSBcImFzY1wiIHwgXCJkZXNjXCI7XG5cbmV4cG9ydCBjbGFzcyBBZGFwdGVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHF1ZXJ5PzogUXVlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclF1ZXJ5UmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB0aGUgcXVlcnkgd291bGQgcmV0dXJuIGlmIG5vdCBsaW1pdGVkLlxuICAgKlxuICAgKiBJZiB0aGUgZGF0YWJhc2UgZG9lcyBub3Qgc3VwcG9ydCBjb3VudGluZyByb3dzLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYEluZmluaXR5YC5cbiAgICovXG4gIGZpbHRlcmVkUm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIHJldHVybmVkIGJ5IHRoZSBxdWVyeS5cbiAgICovXG4gIHJvd3M6IFJlY29yZDxDb2x1bW5OYW1lLCB1bmtub3duPltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0ZWQgcXVlcnkgc3RyaW5nLlxuICAgKi9cbiAgcXVlcnk6IFF1ZXJ5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJJbnNlcnREZXRhaWxzIHtcbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBpbnNlcnQgaW50by5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlcyB0byBpbnNlcnQgaW50byB0aGUgdGFibGUuXG4gICAqIC0gVGhlIGtleXMgc2hvdWxkIG1hdGNoIHRoZSBjb2x1bW4gbmFtZXMgaW4gdGhlIHRhYmxlLlxuICAgKiAtIFRoZSB2YWx1ZXMgc2hvdWxkIGJlIHRoZSB2YWx1ZXMgdG8gaW5zZXJ0IGludG8gdGhlIHRhYmxlLlxuICAgKi9cbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVySW5zZXJ0UmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBmcmVzaGx5IGluc2VydGVkIHJvdyBkYXRhLlxuICAgKi9cbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGVkIHF1ZXJ5IHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5OiBRdWVyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyVXBkYXRlRGV0YWlscyB7XG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIGFwcGx5IHRvIHRoZSByb3cuXG4gICAqL1xuICBjaGFuZ2VzOiBSZWNvcmQ8Q29sdW1uTmFtZSwgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSByb3cgdG8gdXBkYXRlLlxuICAgKi9cbiAgcm93OiBSZWNvcmQ8Q29sdW1uTmFtZSwgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byB1cGRhdGUgaW4uXG4gICAqL1xuICB0YWJsZTogVGFibGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclVwZGF0ZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgdXBkYXRlZCByb3cgZGF0YS5cbiAgICovXG4gIHJvdzogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+ICYge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGNoYW5nZXMgd2VyZSBhcHBsaWVkIGluIGRhdGFiYXNlIHRpbWUuXG4gICAgICovXG4gICAgX19wc191cGRhdGVkX2F0X186IHN0cmluZyB8IG51bWJlciB8IERhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRlZCBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBxdWVyeTogUXVlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlckRlbGV0ZURldGFpbHMge1xuICAvKipcbiAgICogVGhlIHJvd3MgdG8gZGVsZXRlLlxuICAgKi9cbiAgcm93czogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+W107XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBkZWxldGUgZnJvbS5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyRGVsZXRlUmVzdWx0IHtcbiAgcm93czogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+W107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRlZCBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBxdWVyeTogUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGFwdGVyRXJyb3IoYXJnczogeyBlcnJvcjogRXJyb3I7IHF1ZXJ5PzogUXVlcnkgfSkge1xuICBjb25zdCB7IGVycm9yLCBxdWVyeSB9ID0gYXJncztcblxuICBjb25zdCBhZGFwdGVyRXJyb3IgPSBlcnJvciBhcyBBZGFwdGVyRXJyb3I7XG5cbiAgYWRhcHRlckVycm9yLnF1ZXJ5ID0gcXVlcnk7XG5cbiAgcmV0dXJuIFthZGFwdGVyRXJyb3JdIGFzIFtBZGFwdGVyRXJyb3JdO1xufVxuIiwgImltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNvbnN0IFBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQTogUmVjb3JkPHN0cmluZywgUGljazxEYXRhVHlwZSwgXCJncm91cFwiPj4gPSB7XG4gIGJvb2w6IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJ5dGVhOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIGNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgY2l0ZXh0OiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCdcbiAgICovXG4gIGRhdGU6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogQGV4YW1wbGUgJzEgZGF5IDIgaG91cnMnXG4gICAqL1xuICBpbnRlcnZhbDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBuYW1lOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHZhcmNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgdGV4dDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRob3V0IHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIHRpbWU6IHtcbiAgICBncm91cDogXCJ0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCdcbiAgICovXG4gIHRpbWVzdGFtcDoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIHRpbWVzdGFtcHR6OiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wYC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDAnXG4gICAqL1xuICBcInRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wdHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZXN0YW1wIHdpdGggdGltZSB6b25lXCI6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRoIHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCswMDowMCdcbiAgICovXG4gIHRpbWV0ejoge1xuICAgIGdyb3VwOiBcInRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIFwidGltZSB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwidGltZVwiLFxuICB9LFxuICAvKipcbiAgICogbG9uZyBmb3JtIG9mIGB0aW1ldHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZSB3aXRoIHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgdXVpZDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvLyBOdW1lcmljIHR5cGVzXG4gIGludDI6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDg6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHNtYWxsaW50OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBpbnRlZ2VyOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBiaWdpbnQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGRlY2ltYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIG51bWVyaWM6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHJlYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGZsb2F0NDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgZmxvYXQ4OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBcImRvdWJsZSBwcmVjaXNpb25cIjoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAganNvbjoge1xuICAgIGdyb3VwOiBcImpzb25cIixcbiAgfSxcbiAganNvbmI6IHtcbiAgICBncm91cDogXCJqc29uXCIsXG4gIH0sXG59O1xuIiwgImltcG9ydCB7IEV4cHJlc3Npb24sIEV4cHJlc3Npb25CdWlsZGVyLCBzcWwsIFNxbEJvb2wgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWRhcHRlckRlbGV0ZURldGFpbHMsXG4gIEFkYXB0ZXJJbnNlcnREZXRhaWxzLFxuICBBZGFwdGVyUXVlcnlEZXRhaWxzLFxuICBBZGFwdGVyVXBkYXRlRGV0YWlscyxcbiAgQ29sdW1uRmlsdGVyLFxuICBGaWx0ZXJHcm91cCxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgeyBhcHBseUluZmVycmVkUm93RmlsdGVycywgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBjb21waWxlIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZyB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBnZXRQb3N0Z3JlU1FMQnVpbGRlciB9IGZyb20gXCIuL2J1aWxkZXJcIjtcbmltcG9ydCB0eXBlIHsgbW9ja1RhYmxlc1F1ZXJ5IH0gZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIGBjdGlkYCBpcyBhIHN5c3RlbSBjb2x1bW4gdGhhdCByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiBhIHJvdyBpbiBhIHRhYmxlLlxuICogSXQgaXMgYSB0dXBsZSBvZiB0d28gaW50ZWdlcnM6IGAoYmxvY2tOdW1iZXIsIHR1cGxlSW5kZXgpYC5cbiAqIEl0IGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSByb3cgaW4gYSB0YWJsZSwgZXZlbiBpZiB0aGUgcm93IGhhcyBubyBwcmltYXJ5IGtleSwgb3Igb3RoZXIgdW5pcXVlIGNvbnN0cmFpbnRzLlxuICpcbiAqIEV4YW1wbGU6ICcoMCwyMyknIHJlcHJlc2VudHMgdGhlIDI0dGggcm93IGluIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIENUSURhc1RleHQgPSBgKCR7bnVtYmVyfSwke251bWJlcn0pYDtcblxuLyoqXG4gKiBJbnNlcnRzIG9uZSBvciBtb3JlIHJvd3MgaW50byBhIHRhYmxlIGFuZCByZXR1cm5zIHRoZSBpbnNlcnRlZCByb3dzIGFsb25nIHdpdGggdGhlaXIgYGN0aWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zZXJ0UXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJJbnNlcnREZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHsgdGFibGUsIHJvd3MgfSA9IGRldGFpbHM7XG4gIGNvbnN0IHsgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEsIGNvbHVtbnMgfSA9IHRhYmxlO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCB7IGN0aWQ6IHVua25vd24gfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcbiAgY29uc3QgY29scyA9IE9iamVjdC5rZXlzKGNvbHVtbnMpO1xuICBjb25zdCBlbXB0eVJvd1dvcmthcm91bmQgPSB7IFtjb2xzWzBdIV06IHNxbGBkZWZhdWx0YCB9O1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC5pbnNlcnRJbnRvKHRhYmxlTmFtZSlcbiAgICAgIC52YWx1ZXMocm93cy5tYXAoKHJvdykgPT4gKE9iamVjdC5rZXlzKHJvdykubGVuZ3RoID09PSAwID8gZW1wdHlSb3dXb3JrYXJvdW5kIDogcm93KSkpXG4gICAgICAucmV0dXJuaW5nKGNvbHMpXG4gICAgICAucmV0dXJuaW5nKChlYikgPT4gZWIuY2FzdDxDVElEYXNUZXh0PihcImN0aWRcIiwgXCJ0ZXh0XCIpLmFzKFwiY3RpZFwiKSksXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgc2VsZWN0cyBhbGwgY29sdW1ucyBmcm9tIGEgdGFibGUsIGFsb25nIHdpdGggdGhlIGBjdGlkYCBjb2x1bW4sIGFuZCB1bmJvdW5kIHJvdyBjb3VudCBhcyBgb2lkYCAocmVzZXJ2ZWQgY29sdW1uIG5hbWUgdGhhdCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB1c2VyIGNvbHVtbnMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0UXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJRdWVyeURldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIHBhZ2VJbmRleCxcbiAgICBwYWdlU2l6ZSxcbiAgICBzb3J0T3JkZXIsXG4gICAgdGFibGU6IHsgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEsIGNvbHVtbnMgfSxcbiAgICBmaWx0ZXIgPSB7IGtpbmQ6IFwiRmlsdGVyR3JvdXBcIiwgYWZ0ZXI6IFwiYW5kXCIsIGZpbHRlcnM6IFtdIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCB7IGN0aWQ6IHVua25vd24gfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcbiAgY29uc3QgY29scyA9IE9iamVjdC5rZXlzKGNvbHVtbnMpO1xuXG4gIGNvbnN0IGNvdW50UXVlcnkgPSBidWlsZGVyXG4gICAgLndpdGhTY2hlbWEoc2NoZW1hKVxuICAgIC5zZWxlY3RGcm9tKHRhYmxlTmFtZSlcbiAgICAuc2VsZWN0KChlYikgPT4gZWIuY2FzdDxCaWdJbnRTdHJpbmc+KGViLmZuLmNvYWxlc2NlKGViLmZuLmNvdW50QWxsKCksIHNxbC5saXQoMCkpLCBcInRleHRcIikuYXMoXCJvaWRcIikpO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoKFwiY291bnRcIiwgKCkgPT4gY291bnRRdWVyeSlcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC5zZWxlY3RGcm9tKFt0YWJsZU5hbWUsIFwiY291bnRcIl0pXG4gICAgICAvLyBgb2lkYCBpcyBhIHJlc2VydmVkIGNvbHVtbiBuYW1lIGluIFBvc3RncmVTUUwsIHNvIHdlIHVzZSBpdCBhcyBhbiBhbGlhcyBmb3IgdGhlIHJvdyBjb3VudCB0byBub3QgY29uZmxpY3Qgd2l0aCB1c2VyIGNvbHVtbnMuXG4gICAgICAuc2VsZWN0KHNxbC5yZWYoXCJjb3VudC5vaWRcIikuJGNhc3RUbzxCaWdJbnRTdHJpbmc+KCkuYXMoXCJvaWRcIikpXG4gICAgICAuc2VsZWN0KChlYikgPT4gZWIuY2FzdDxDVElEYXNUZXh0PihcImN0aWRcIiwgXCJ0ZXh0XCIpLmFzKFwiY3RpZFwiKSlcbiAgICAgIC5zZWxlY3QoY29scylcbiAgICAgIC4kY2FsbCgocWIpID0+IHNvcnRPcmRlci5yZWR1Y2UoKHFiLCBpdGVtKSA9PiBxYi5vcmRlckJ5KGl0ZW0uY29sdW1uLCBpdGVtLmRpcmVjdGlvbiksIHFiKSlcbiAgICAgIC8vIFRPRE86IGN1cnNvciBwYWdpbmF0aW9uP1xuICAgICAgLndoZXJlKGdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24oZmlsdGVyLmZpbHRlcnMsIGNvbHVtbnMpKVxuICAgICAgLmxpbWl0KHBhZ2VTaXplKVxuICAgICAgLy8gd2UncmUgaW5qZWN0aW5nIHRoZSBvZmZzZXQgdmFsdWUgaGVyZSB0byBhdm9pZCBzZXJpYWxpemF0aW9uIGNvbXBsZXhpdHkgKGBiaWdpbnRgIGlzIGEgbm8tZ28gZm9yIGBKU09OLnN0cmluZ2lmeWApLlxuICAgICAgLm9mZnNldChzcWwubGl0KEJpZ0ludChwYWdlSW5kZXgpICogQmlnSW50KHBhZ2VTaXplKSkpLFxuICApO1xufVxuXG4vLyBIZWxwZXIgdG8gYnVpbGQgYW4gZXhwcmVzc2lvbiBidWlsZGVyIGZvciBhIHNpbmdsZSBmaWx0ZXIgb3IgYSBncm91cFxuZnVuY3Rpb24gYnVpbGRCYXNlRXhwcmVzc2lvbkJ1aWxkZXIoXG4gIHNwZWM6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwLFxuICBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pOiAoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPiB7XG4gIGlmIChzcGVjLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKGViKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IsIHZhbHVlIH0gPSBzcGVjO1xuXG4gICAgICBjb25zdCBjb2x1bW5SZWYgPSBzcWwucmVmKGNvbHVtbik7XG5cbiAgICAgIGNvbnN0IGxocyA9IGNvbHVtbnNbY29sdW1uXT8uZGF0YXR5cGUuZ3JvdXAgPT09IFwiZW51bVwiID8gZWIuY2FzdChjb2x1bW5SZWYsIFwidGV4dFwiKSA6IGNvbHVtblJlZjtcblxuICAgICAgcmV0dXJuIGViKGxocywgb3BlcmF0b3IsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKHNwZWMuZmlsdGVycywgY29sdW1ucyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbihcbiAgZmlsdGVyczogKENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKVtdLFxuICBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0sXG4pOiAoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPiB7XG4gIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIChlYikgPT4gZWIubGl0KHRydWUpOyAvLyBubyBmaWx0ZXJzLCBhbHdheXMgdHJ1ZVxuXG4gIGNvbnN0IG9yR3JvdXBzT2ZBbmRCdWlsZGVyczogKChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBFeHByZXNzaW9uPFNxbEJvb2w+KVtdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzOiAoKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IEV4cHJlc3Npb248U3FsQm9vbD4pW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjdXJyZW50QW5kR3JvdXBCdWlsZGVycy5wdXNoKGJ1aWxkQmFzZUV4cHJlc3Npb25CdWlsZGVyKGZpbHRlcnNbaV0hLCBjb2x1bW5zKSk7XG5cbiAgICAvLyAmbiBBTkQgZ3JvdXAgZW5kcyBpZiBpdCdzIHRoZSBsYXN0IGZpbHRlciwgb3IgdGhlIGl0ZW0gaXMgZm9sbG93ZWQgYnkgYW4gJ29yJ1xuICAgIGlmIChpID09PSBmaWx0ZXJzLmxlbmd0aCAtIDEgfHwgZmlsdGVyc1tpXSEuYWZ0ZXIgPT09IFwib3JcIikge1xuICAgICAgb3JHcm91cHNPZkFuZEJ1aWxkZXJzLnB1c2goY3VycmVudEFuZEdyb3VwQnVpbGRlcnMpO1xuICAgICAgY3VycmVudEFuZEdyb3VwQnVpbGRlcnMgPSBbXTsgLy8gc3RhcnQgYSBuZXcgZ3JvdXBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IHtcbiAgICBjb25zdCBhbmRFeHByZXNzaW9ucyA9IG9yR3JvdXBzT2ZBbmRCdWlsZGVycy5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICByZXR1cm4gZWIuYW5kKGdyb3VwLm1hcCgoYnVpbGRlcikgPT4gYnVpbGRlcihlYikpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBlYi5vcihhbmRFeHByZXNzaW9ucyk7XG4gIH07XG59XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrU2VsZWN0UXVlcnkoKSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoXCIyMDI1LTAxLTI2VDIxOjU2OjEyLjM0NVpcIiksXG4gICAgICBjdGlkOiBcIigwLDEpXCIsXG4gICAgICBkZWxldGVkX2F0OiBudWxsLFxuICAgICAgaWQ6IDEsXG4gICAgICBuYW1lOiBcIkpvaG4gRG9lXCIsXG4gICAgICBvaWQ6IFwiMlwiLFxuICAgICAgcm9sZTogXCJhZG1pblwiLFxuICAgICAgbmFtZV9yb2xlOiBcIkpvbm4gRG9lIC0gYWRtaW5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKFwiMjAyNS0wMS0yNlQyMDo1NjoxMi4zNDVaXCIpLFxuICAgICAgY3RpZDogXCIoMCwyKVwiLFxuICAgICAgZGVsZXRlZF9hdDogbnVsbCxcbiAgICAgIGlkOiAyLFxuICAgICAgbmFtZTogXCJKYW5lIERvZVwiLFxuICAgICAgb2lkOiBcIjJcIixcbiAgICAgIHJvbGU6IFwicG93ZXJ1c2VyXCIsXG4gICAgICBuYW1lX3JvbGU6IFwiSmFuZSBEb2UgLSBwb3dlcnVzZXJcIixcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyB7XG4gICAgLy8gYmVzdCBlZmZvcnQgbm8gbmVlZCB0byBnbyBvdmVyYm9hcmRcbiAgICBbSyBpbiBSZXR1cm5UeXBlPHR5cGVvZiBtb2NrVGFibGVzUXVlcnk+WzFdW1wiY29sdW1uc1wiXVtudW1iZXJdW1wibmFtZVwiXSB8IFwiY3RpZFwiIHwgXCJvaWRcIl06IHVua25vd247XG4gIH1bXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCB1cGRhdGVzIGEgZ2l2ZW4gcm93IGluIGEgdGFibGUgd2l0aCBnaXZlbiBjaGFuZ2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlUXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFuZ2VzLFxuICAgIHJvdyxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUsIHNjaGVtYSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgeyBjdGlkOiB1bmtub3duIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG4gIGNvbnN0IGNvbHMgPSBPYmplY3Qua2V5cyhjb2x1bW5zKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAudXBkYXRlVGFibGUodGFibGVOYW1lKVxuICAgICAgLnNldChjaGFuZ2VzKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKFtyb3ddLCBjb2x1bW5zKSlcbiAgICAgIC5yZXR1cm5pbmcoY29scylcbiAgICAgIC5yZXR1cm5pbmcoKGViKSA9PiBbXG4gICAgICAgIGViLmNhc3Q8Q1RJRGFzVGV4dD4oXCJjdGlkXCIsIFwidGV4dFwiKS5hcyhcImN0aWRcIiksXG4gICAgICAgIGViXG4gICAgICAgICAgLmNhc3Q8QmlnSW50U3RyaW5nPihlYi5mbihcImZsb29yXCIsIFtlYihlYi5mbihcImV4dHJhY3RcIiwgW3NxbGBlcG9jaCBmcm9tIG5vdygpYF0pLCBcIipcIiwgMV8wMDBfMDAwKV0pLCBcInRleHRcIilcbiAgICAgICAgICAuYXMoXCJfX3BzX3VwZGF0ZWRfYXRfX1wiKSxcbiAgICAgIF0pLFxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IGRlbGV0ZXMgYSBnaXZlbiBzZXQgb2Ygcm93cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGV0ZVF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVyRGVsZXRlRGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7XG4gICAgcm93cyxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUsIHNjaGVtYSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgeyBjdGlkOiB1bmtub3duIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoYnVpbGRlci53aXRoU2NoZW1hKHNjaGVtYSkuZGVsZXRlRnJvbSh0YWJsZU5hbWUpLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKHJvd3MsIGNvbHVtbnMpKSk7XG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCIuL3Jhdy1idWlsZGVyLmQudHNcIiAvPlxuaW1wb3J0IHsgQWxpYXNOb2RlIH0gZnJvbSAnLi4vb3BlcmF0aW9uLW5vZGUvYWxpYXMtbm9kZS5qcyc7XG5pbXBvcnQgeyBmcmVlemUgfSBmcm9tICcuLi91dGlsL29iamVjdC11dGlscy5qcyc7XG5pbXBvcnQgeyBOT09QX1FVRVJZX0VYRUNVVE9SIH0gZnJvbSAnLi4vcXVlcnktZXhlY3V0b3Ivbm9vcC1xdWVyeS1leGVjdXRvci5qcyc7XG5pbXBvcnQgeyBJZGVudGlmaWVyTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2lkZW50aWZpZXItbm9kZS5qcyc7XG5pbXBvcnQgeyBpc09wZXJhdGlvbk5vZGVTb3VyY2UgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9vcGVyYXRpb24tbm9kZS1zb3VyY2UuanMnO1xuY2xhc3MgUmF3QnVpbGRlckltcGwge1xuICAgICNwcm9wcztcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICB0aGlzLiNwcm9wcyA9IGZyZWV6ZShwcm9wcyk7XG4gICAgfVxuICAgIGdldCBleHByZXNzaW9uVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0IGlzUmF3QnVpbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBuZXcgQWxpYXNlZFJhd0J1aWxkZXJJbXBsKHRoaXMsIGFsaWFzKTtcbiAgICB9XG4gICAgJGNhc3RUbygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYXdCdWlsZGVySW1wbCh7IC4uLnRoaXMuI3Byb3BzIH0pO1xuICAgIH1cbiAgICAkbm90TnVsbCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYXdCdWlsZGVySW1wbCh0aGlzLiNwcm9wcyk7XG4gICAgfVxuICAgIHdpdGhQbHVnaW4ocGx1Z2luKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmF3QnVpbGRlckltcGwoe1xuICAgICAgICAgICAgLi4udGhpcy4jcHJvcHMsXG4gICAgICAgICAgICBwbHVnaW5zOiB0aGlzLiNwcm9wcy5wbHVnaW5zICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGZyZWV6ZShbLi4udGhpcy4jcHJvcHMucGx1Z2lucywgcGx1Z2luXSlcbiAgICAgICAgICAgICAgICA6IGZyZWV6ZShbcGx1Z2luXSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b09wZXJhdGlvbk5vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiN0b09wZXJhdGlvbk5vZGUodGhpcy4jZ2V0RXhlY3V0b3IoKSk7XG4gICAgfVxuICAgIGNvbXBpbGUoZXhlY3V0b3JQcm92aWRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy4jY29tcGlsZSh0aGlzLiNnZXRFeGVjdXRvcihleGVjdXRvclByb3ZpZGVyKSk7XG4gICAgfVxuICAgIGFzeW5jIGV4ZWN1dGUoZXhlY3V0b3JQcm92aWRlcikge1xuICAgICAgICBjb25zdCBleGVjdXRvciA9IHRoaXMuI2dldEV4ZWN1dG9yKGV4ZWN1dG9yUHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gZXhlY3V0b3IuZXhlY3V0ZVF1ZXJ5KHRoaXMuI2NvbXBpbGUoZXhlY3V0b3IpLCB0aGlzLiNwcm9wcy5xdWVyeUlkKTtcbiAgICB9XG4gICAgI2dldEV4ZWN1dG9yKGV4ZWN1dG9yUHJvdmlkZXIpIHtcbiAgICAgICAgY29uc3QgZXhlY3V0b3IgPSBleGVjdXRvclByb3ZpZGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gZXhlY3V0b3JQcm92aWRlci5nZXRFeGVjdXRvcigpXG4gICAgICAgICAgICA6IE5PT1BfUVVFUllfRVhFQ1VUT1I7XG4gICAgICAgIHJldHVybiB0aGlzLiNwcm9wcy5wbHVnaW5zICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gZXhlY3V0b3Iud2l0aFBsdWdpbnModGhpcy4jcHJvcHMucGx1Z2lucylcbiAgICAgICAgICAgIDogZXhlY3V0b3I7XG4gICAgfVxuICAgICN0b09wZXJhdGlvbk5vZGUoZXhlY3V0b3IpIHtcbiAgICAgICAgcmV0dXJuIGV4ZWN1dG9yLnRyYW5zZm9ybVF1ZXJ5KHRoaXMuI3Byb3BzLnJhd05vZGUsIHRoaXMuI3Byb3BzLnF1ZXJ5SWQpO1xuICAgIH1cbiAgICAjY29tcGlsZShleGVjdXRvcikge1xuICAgICAgICByZXR1cm4gZXhlY3V0b3IuY29tcGlsZVF1ZXJ5KHRoaXMuI3RvT3BlcmF0aW9uTm9kZShleGVjdXRvciksIHRoaXMuI3Byb3BzLnF1ZXJ5SWQpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSYXdCdWlsZGVyKHByb3BzKSB7XG4gICAgcmV0dXJuIG5ldyBSYXdCdWlsZGVySW1wbChwcm9wcyk7XG59XG5jbGFzcyBBbGlhc2VkUmF3QnVpbGRlckltcGwge1xuICAgICNyYXdCdWlsZGVyO1xuICAgICNhbGlhcztcbiAgICBjb25zdHJ1Y3RvcihyYXdCdWlsZGVyLCBhbGlhcykge1xuICAgICAgICB0aGlzLiNyYXdCdWlsZGVyID0gcmF3QnVpbGRlcjtcbiAgICAgICAgdGhpcy4jYWxpYXMgPSBhbGlhcztcbiAgICB9XG4gICAgZ2V0IGV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNyYXdCdWlsZGVyO1xuICAgIH1cbiAgICBnZXQgYWxpYXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNhbGlhcztcbiAgICB9XG4gICAgZ2V0IHJhd0J1aWxkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNyYXdCdWlsZGVyO1xuICAgIH1cbiAgICB0b09wZXJhdGlvbk5vZGUoKSB7XG4gICAgICAgIHJldHVybiBBbGlhc05vZGUuY3JlYXRlKHRoaXMuI3Jhd0J1aWxkZXIudG9PcGVyYXRpb25Ob2RlKCksIGlzT3BlcmF0aW9uTm9kZVNvdXJjZSh0aGlzLiNhbGlhcylcbiAgICAgICAgICAgID8gdGhpcy4jYWxpYXMudG9PcGVyYXRpb25Ob2RlKClcbiAgICAgICAgICAgIDogSWRlbnRpZmllck5vZGUuY3JlYXRlKHRoaXMuI2FsaWFzKSk7XG4gICAgfVxufVxuIiwgIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiLi9zcWwuZC50c1wiIC8+XG5pbXBvcnQgeyBJZGVudGlmaWVyTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2lkZW50aWZpZXItbm9kZS5qcyc7XG5pbXBvcnQgeyBpc09wZXJhdGlvbk5vZGVTb3VyY2UgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9vcGVyYXRpb24tbm9kZS1zb3VyY2UuanMnO1xuaW1wb3J0IHsgUmF3Tm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL3Jhdy1ub2RlLmpzJztcbmltcG9ydCB7IFZhbHVlTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL3ZhbHVlLW5vZGUuanMnO1xuaW1wb3J0IHsgcGFyc2VTdHJpbmdSZWZlcmVuY2UgfSBmcm9tICcuLi9wYXJzZXIvcmVmZXJlbmNlLXBhcnNlci5qcyc7XG5pbXBvcnQgeyBwYXJzZVRhYmxlIH0gZnJvbSAnLi4vcGFyc2VyL3RhYmxlLXBhcnNlci5qcyc7XG5pbXBvcnQgeyBwYXJzZVZhbHVlRXhwcmVzc2lvbiB9IGZyb20gJy4uL3BhcnNlci92YWx1ZS1wYXJzZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUXVlcnlJZCB9IGZyb20gJy4uL3V0aWwvcXVlcnktaWQuanMnO1xuaW1wb3J0IHsgY3JlYXRlUmF3QnVpbGRlciB9IGZyb20gJy4vcmF3LWJ1aWxkZXIuanMnO1xuZXhwb3J0IGNvbnN0IHNxbCA9IE9iamVjdC5hc3NpZ24oKHNxbEZyYWdtZW50cywgLi4ucGFyYW1ldGVycykgPT4ge1xuICAgIHJldHVybiBjcmVhdGVSYXdCdWlsZGVyKHtcbiAgICAgICAgcXVlcnlJZDogY3JlYXRlUXVlcnlJZCgpLFxuICAgICAgICByYXdOb2RlOiBSYXdOb2RlLmNyZWF0ZShzcWxGcmFnbWVudHMsIHBhcmFtZXRlcnM/Lm1hcChwYXJzZVBhcmFtZXRlcikgPz8gW10pLFxuICAgIH0pO1xufSwge1xuICAgIHJlZihjb2x1bW5SZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJhd0J1aWxkZXIoe1xuICAgICAgICAgICAgcXVlcnlJZDogY3JlYXRlUXVlcnlJZCgpLFxuICAgICAgICAgICAgcmF3Tm9kZTogUmF3Tm9kZS5jcmVhdGVXaXRoQ2hpbGQocGFyc2VTdHJpbmdSZWZlcmVuY2UoY29sdW1uUmVmZXJlbmNlKSksXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdmFsKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSYXdCdWlsZGVyKHtcbiAgICAgICAgICAgIHF1ZXJ5SWQ6IGNyZWF0ZVF1ZXJ5SWQoKSxcbiAgICAgICAgICAgIHJhd05vZGU6IFJhd05vZGUuY3JlYXRlV2l0aENoaWxkKHBhcnNlVmFsdWVFeHByZXNzaW9uKHZhbHVlKSksXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdmFsdWUodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsKHZhbHVlKTtcbiAgICB9LFxuICAgIHRhYmxlKHRhYmxlUmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSYXdCdWlsZGVyKHtcbiAgICAgICAgICAgIHF1ZXJ5SWQ6IGNyZWF0ZVF1ZXJ5SWQoKSxcbiAgICAgICAgICAgIHJhd05vZGU6IFJhd05vZGUuY3JlYXRlV2l0aENoaWxkKHBhcnNlVGFibGUodGFibGVSZWZlcmVuY2UpKSxcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBpZCguLi5pZHMpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnRzID0gbmV3IEFycmF5KGlkcy5sZW5ndGggKyAxKS5maWxsKCcuJyk7XG4gICAgICAgIGZyYWdtZW50c1swXSA9ICcnO1xuICAgICAgICBmcmFnbWVudHNbZnJhZ21lbnRzLmxlbmd0aCAtIDFdID0gJyc7XG4gICAgICAgIHJldHVybiBjcmVhdGVSYXdCdWlsZGVyKHtcbiAgICAgICAgICAgIHF1ZXJ5SWQ6IGNyZWF0ZVF1ZXJ5SWQoKSxcbiAgICAgICAgICAgIHJhd05vZGU6IFJhd05vZGUuY3JlYXRlKGZyYWdtZW50cywgaWRzLm1hcChJZGVudGlmaWVyTm9kZS5jcmVhdGUpKSxcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBsaXQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJhd0J1aWxkZXIoe1xuICAgICAgICAgICAgcXVlcnlJZDogY3JlYXRlUXVlcnlJZCgpLFxuICAgICAgICAgICAgcmF3Tm9kZTogUmF3Tm9kZS5jcmVhdGVXaXRoQ2hpbGQoVmFsdWVOb2RlLmNyZWF0ZUltbWVkaWF0ZSh2YWx1ZSkpLFxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGxpdGVyYWwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGl0KHZhbHVlKTtcbiAgICB9LFxuICAgIHJhdyhzcWwpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJhd0J1aWxkZXIoe1xuICAgICAgICAgICAgcXVlcnlJZDogY3JlYXRlUXVlcnlJZCgpLFxuICAgICAgICAgICAgcmF3Tm9kZTogUmF3Tm9kZS5jcmVhdGVXaXRoU3FsKHNxbCksXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgam9pbihhcnJheSwgc2VwYXJhdG9yID0gc3FsIGAsIGApIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBuZXcgQXJyYXkoTWF0aC5tYXgoMiAqIGFycmF5Lmxlbmd0aCAtIDEsIDApKTtcbiAgICAgICAgY29uc3Qgc2VwID0gc2VwYXJhdG9yLnRvT3BlcmF0aW9uTm9kZSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBub2Rlc1syICogaV0gPSBwYXJzZVBhcmFtZXRlcihhcnJheVtpXSk7XG4gICAgICAgICAgICBpZiAoaSAhPT0gYXJyYXkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIG5vZGVzWzIgKiBpICsgMV0gPSBzZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJhd0J1aWxkZXIoe1xuICAgICAgICAgICAgcXVlcnlJZDogY3JlYXRlUXVlcnlJZCgpLFxuICAgICAgICAgICAgcmF3Tm9kZTogUmF3Tm9kZS5jcmVhdGVXaXRoQ2hpbGRyZW4obm9kZXMpLFxuICAgICAgICB9KTtcbiAgICB9LFxufSk7XG5mdW5jdGlvbiBwYXJzZVBhcmFtZXRlcihwYXJhbSkge1xuICAgIGlmIChpc09wZXJhdGlvbk5vZGVTb3VyY2UocGFyYW0pKSB7XG4gICAgICAgIHJldHVybiBwYXJhbS50b09wZXJhdGlvbk5vZGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlVmFsdWVFeHByZXNzaW9uKHBhcmFtKTtcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIi4vZGVmYXVsdC1xdWVyeS1jb21waWxlci5kLnRzXCIgLz5cbmltcG9ydCB7IENyZWF0ZVRhYmxlTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2NyZWF0ZS10YWJsZS1ub2RlLmpzJztcbmltcG9ydCB7IEluc2VydFF1ZXJ5Tm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2luc2VydC1xdWVyeS1ub2RlLmpzJztcbmltcG9ydCB7IE9wZXJhdGlvbk5vZGVWaXNpdG9yIH0gZnJvbSAnLi4vb3BlcmF0aW9uLW5vZGUvb3BlcmF0aW9uLW5vZGUtdmlzaXRvci5qcyc7XG5pbXBvcnQgeyBPcGVyYXRvck5vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9vcGVyYXRvci1ub2RlLmpzJztcbmltcG9ydCB7IFBhcmVuc05vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9wYXJlbnMtbm9kZS5qcyc7XG5pbXBvcnQgeyBRdWVyeU5vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9xdWVyeS1ub2RlLmpzJztcbmltcG9ydCB7IGZyZWV6ZSwgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0Jvb2xlYW4sIGlzTnVsbCwgaXNEYXRlLCBpc0JpZ0ludCwgfSBmcm9tICcuLi91dGlsL29iamVjdC11dGlscy5qcyc7XG5pbXBvcnQgeyBDcmVhdGVWaWV3Tm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2NyZWF0ZS12aWV3LW5vZGUuanMnO1xuaW1wb3J0IHsgU2V0T3BlcmF0aW9uTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL3NldC1vcGVyYXRpb24tbm9kZS5qcyc7XG5pbXBvcnQgeyBNZXJnZVF1ZXJ5Tm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL21lcmdlLXF1ZXJ5LW5vZGUuanMnO1xuaW1wb3J0IHsgbG9nT25jZSB9IGZyb20gJy4uL3V0aWwvbG9nLW9uY2UuanMnO1xuY29uc3QgTElUX1dSQVBfUkVHRVggPSAvJy9nO1xuZXhwb3J0IGNsYXNzIERlZmF1bHRRdWVyeUNvbXBpbGVyIGV4dGVuZHMgT3BlcmF0aW9uTm9kZVZpc2l0b3Ige1xuICAgICNzcWwgPSAnJztcbiAgICAjcGFyYW1ldGVycyA9IFtdO1xuICAgIGdldCBudW1QYXJhbWV0ZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgfVxuICAgIGNvbXBpbGVRdWVyeShub2RlLCBxdWVyeUlkKSB7XG4gICAgICAgIHRoaXMuI3NxbCA9ICcnO1xuICAgICAgICB0aGlzLiNwYXJhbWV0ZXJzID0gW107XG4gICAgICAgIHRoaXMubm9kZVN0YWNrLnNwbGljZSgwLCB0aGlzLm5vZGVTdGFjay5sZW5ndGgpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlKTtcbiAgICAgICAgcmV0dXJuIGZyZWV6ZSh7XG4gICAgICAgICAgICBxdWVyeTogbm9kZSxcbiAgICAgICAgICAgIHF1ZXJ5SWQsXG4gICAgICAgICAgICBzcWw6IHRoaXMuZ2V0U3FsKCksXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBbLi4udGhpcy4jcGFyYW1ldGVyc10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRTcWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzcWw7XG4gICAgfVxuICAgIHZpc2l0U2VsZWN0UXVlcnkobm9kZSkge1xuICAgICAgICBjb25zdCB3cmFwSW5QYXJlbnMgPSB0aGlzLnBhcmVudE5vZGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgIVBhcmVuc05vZGUuaXModGhpcy5wYXJlbnROb2RlKSAmJlxuICAgICAgICAgICAgIUluc2VydFF1ZXJ5Tm9kZS5pcyh0aGlzLnBhcmVudE5vZGUpICYmXG4gICAgICAgICAgICAhQ3JlYXRlVGFibGVOb2RlLmlzKHRoaXMucGFyZW50Tm9kZSkgJiZcbiAgICAgICAgICAgICFDcmVhdGVWaWV3Tm9kZS5pcyh0aGlzLnBhcmVudE5vZGUpICYmXG4gICAgICAgICAgICAhU2V0T3BlcmF0aW9uTm9kZS5pcyh0aGlzLnBhcmVudE5vZGUpO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnROb2RlID09PSB1bmRlZmluZWQgJiYgbm9kZS5leHBsYWluKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cGxhaW4pO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3JhcEluUGFyZW5zKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndpdGgpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUud2l0aCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCdzZWxlY3QnKTtcbiAgICAgICAgaWYgKG5vZGUuZGlzdGluY3RPbikge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZURpc3RpbmN0T24obm9kZS5kaXN0aW5jdE9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5mcm9udE1vZGlmaWVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmZyb250TW9kaWZpZXJzLCAnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnRvcCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudG9wKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5zZWxlY3Rpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLnNlbGVjdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmZyb20pIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmpvaW5zKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmpvaW5zLCAnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndoZXJlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS53aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZ3JvdXBCeSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZ3JvdXBCeSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuaGF2aW5nKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5oYXZpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnNldE9wZXJhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuc2V0T3BlcmF0aW9ucywgJyAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcmRlckJ5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5saW1pdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUub2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5mZXRjaCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZmV0Y2gpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmVuZE1vZGlmaWVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdCh0aGlzLnNvcnRTZWxlY3RNb2RpZmllcnMoWy4uLm5vZGUuZW5kTW9kaWZpZXJzXSksICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdyYXBJblBhcmVucykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdEZyb20obm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZnJvbSAnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmZyb21zKTtcbiAgICB9XG4gICAgdmlzaXRTZWxlY3Rpb24obm9kZSkge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnNlbGVjdGlvbik7XG4gICAgfVxuICAgIHZpc2l0Q29sdW1uKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb2x1bW4pO1xuICAgIH1cbiAgICBjb21waWxlRGlzdGluY3RPbihleHByZXNzaW9ucykge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZGlzdGluY3Qgb24gKCcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KGV4cHJlc3Npb25zKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICB9XG4gICAgY29tcGlsZUxpc3Qobm9kZXMsIHNlcGFyYXRvciA9ICcsICcpIHtcbiAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gbm9kZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGFzdEluZGV4OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGVzW2ldKTtcbiAgICAgICAgICAgIGlmIChpIDwgbGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdFdoZXJlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ3doZXJlICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLndoZXJlKTtcbiAgICB9XG4gICAgdmlzaXRIYXZpbmcobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnaGF2aW5nICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmhhdmluZyk7XG4gICAgfVxuICAgIHZpc2l0SW5zZXJ0UXVlcnkobm9kZSkge1xuICAgICAgICBjb25zdCByb290UXVlcnlOb2RlID0gdGhpcy5ub2RlU3RhY2suZmluZChRdWVyeU5vZGUuaXMpO1xuICAgICAgICBjb25zdCBpc1N1YlF1ZXJ5ID0gcm9vdFF1ZXJ5Tm9kZSAhPT0gbm9kZTtcbiAgICAgICAgaWYgKCFpc1N1YlF1ZXJ5ICYmIG5vZGUuZXhwbGFpbikge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHBsYWluKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3ViUXVlcnkgJiYgIU1lcmdlUXVlcnlOb2RlLmlzKHJvb3RRdWVyeU5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndpdGgpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUud2l0aCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKG5vZGUucmVwbGFjZSA/ICdyZXBsYWNlJyA6ICdpbnNlcnQnKTtcbiAgICAgICAgLy8gVE9ETzogcmVtb3ZlIGluIDAuMjkuXG4gICAgICAgIGlmIChub2RlLmlnbm9yZSkge1xuICAgICAgICAgICAgbG9nT25jZSgnYEluc2VydFF1ZXJ5Tm9kZS5pZ25vcmVgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgSW5zZXJ0UXVlcnlOb2RlLm9yQWN0aW9uYCBpbnN0ZWFkLicpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBpZ25vcmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vckFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUub3JBY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnRvcCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudG9wKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5pbnRvKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIGludG8gJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmludG8pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgKCcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmNvbHVtbnMpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vdXRwdXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnZGVmYXVsdCB2YWx1ZXMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vbkNvbmZsaWN0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vbkNvbmZsaWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vbkR1cGxpY2F0ZUtleSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUub25EdXBsaWNhdGVLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnJldHVybmluZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmV0dXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTdWJRdWVyeSAmJiAhTWVyZ2VRdWVyeU5vZGUuaXMocm9vdFF1ZXJ5Tm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZW5kTW9kaWZpZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuZW5kTW9kaWZpZXJzLCAnICcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0VmFsdWVzKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ3ZhbHVlcyAnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLnZhbHVlcyk7XG4gICAgfVxuICAgIHZpc2l0RGVsZXRlUXVlcnkobm9kZSkge1xuICAgICAgICBjb25zdCBpc1N1YlF1ZXJ5ID0gdGhpcy5ub2RlU3RhY2suZmluZChRdWVyeU5vZGUuaXMpICE9PSBub2RlO1xuICAgICAgICBpZiAoIWlzU3ViUXVlcnkgJiYgbm9kZS5leHBsYWluKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cGxhaW4pO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTdWJRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJygnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS53aXRoKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLndpdGgpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnZGVsZXRlICcpO1xuICAgICAgICBpZiAobm9kZS50b3ApIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudG9wKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5mcm9tKTtcbiAgICAgICAgaWYgKG5vZGUub3V0cHV0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vdXRwdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnVzaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS51c2luZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuam9pbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuam9pbnMsICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUud2hlcmUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLndoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcmRlckJ5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5saW1pdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnJldHVybmluZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmV0dXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTdWJRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5lbmRNb2RpZmllcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5lbmRNb2RpZmllcnMsICcgJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRSZXR1cm5pbmcobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgncmV0dXJuaW5nICcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuc2VsZWN0aW9ucyk7XG4gICAgfVxuICAgIHZpc2l0QWxpYXMobm9kZSkge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5vZGUpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnIGFzICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmFsaWFzKTtcbiAgICB9XG4gICAgdmlzaXRSZWZlcmVuY2Uobm9kZSkge1xuICAgICAgICBpZiAobm9kZS50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnLicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sdW1uKTtcbiAgICB9XG4gICAgdmlzaXRTZWxlY3RBbGwoXykge1xuICAgICAgICB0aGlzLmFwcGVuZCgnKicpO1xuICAgIH1cbiAgICB2aXNpdElkZW50aWZpZXIobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCh0aGlzLmdldExlZnRJZGVudGlmaWVyV3JhcHBlcigpKTtcbiAgICAgICAgdGhpcy5jb21waWxlVW53cmFwcGVkSWRlbnRpZmllcihub2RlKTtcbiAgICAgICAgdGhpcy5hcHBlbmQodGhpcy5nZXRSaWdodElkZW50aWZpZXJXcmFwcGVyKCkpO1xuICAgIH1cbiAgICBjb21waWxlVW53cmFwcGVkSWRlbnRpZmllcihub2RlKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcobm9kZS5uYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhIG5vbi1zdHJpbmcgaWRlbnRpZmllciB3YXMgcGFzc2VkIHRvIGNvbXBpbGVVbndyYXBwZWRJZGVudGlmaWVyLicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKHRoaXMuc2FuaXRpemVJZGVudGlmaWVyKG5vZGUubmFtZSkpO1xuICAgIH1cbiAgICB2aXNpdEFuZChub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGVmdCk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgYW5kICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgICB9XG4gICAgdmlzaXRPcihub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGVmdCk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgb3IgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmlnaHQpO1xuICAgIH1cbiAgICB2aXNpdFZhbHVlKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZEltbWVkaWF0ZVZhbHVlKG5vZGUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRWYWx1ZShub2RlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdFZhbHVlTGlzdChub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcoJyk7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS52YWx1ZXMpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgIH1cbiAgICB2aXNpdFR1cGxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJygnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLnZhbHVlcyk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgfVxuICAgIHZpc2l0UHJpbWl0aXZlVmFsdWVMaXN0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJygnKTtcbiAgICAgICAgY29uc3QgeyB2YWx1ZXMgfSA9IG5vZGU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZFZhbHVlKHZhbHVlc1tpXSk7XG4gICAgICAgICAgICBpZiAoaSAhPT0gdmFsdWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgnLCAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgIH1cbiAgICB2aXNpdFBhcmVucyhub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcoJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubm9kZSk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgfVxuICAgIHZpc2l0Sm9pbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKEpPSU5fVFlQRV9TUUxbbm9kZS5qb2luVHlwZV0pO1xuICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRhYmxlKTtcbiAgICAgICAgaWYgKG5vZGUub24pIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdE9uKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ29uICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9uKTtcbiAgICB9XG4gICAgdmlzaXRSYXcobm9kZSkge1xuICAgICAgICBjb25zdCB7IHNxbEZyYWdtZW50cywgcGFyYW1ldGVyczogcGFyYW1zIH0gPSBub2RlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNxbEZyYWdtZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoc3FsRnJhZ21lbnRzW2ldKTtcbiAgICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gaSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKHBhcmFtc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRPcGVyYXRvcihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5vZGUub3BlcmF0b3IpO1xuICAgIH1cbiAgICB2aXNpdFRhYmxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgfVxuICAgIHZpc2l0U2NoZW1hYmxlSWRlbnRpZmllcihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnNjaGVtYSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5zY2hlbWEpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJy4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmlkZW50aWZpZXIpO1xuICAgIH1cbiAgICB2aXNpdENyZWF0ZVRhYmxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2NyZWF0ZSAnKTtcbiAgICAgICAgaWYgKG5vZGUuZnJvbnRNb2RpZmllcnMgJiYgbm9kZS5mcm9udE1vZGlmaWVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuZnJvbnRNb2RpZmllcnMsICcgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnRlbXBvcmFyeSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ3RlbXBvcmFyeSAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgndGFibGUgJyk7XG4gICAgICAgIGlmIChub2RlLmlmTm90RXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnaWYgbm90IGV4aXN0cyAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRhYmxlKTtcbiAgICAgICAgaWYgKG5vZGUuc2VsZWN0UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgYXMgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnNlbGVjdFF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgKCcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChbLi4ubm9kZS5jb2x1bW5zLCAuLi4obm9kZS5jb25zdHJhaW50cyA/PyBbXSldKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgICAgICBpZiAobm9kZS5vbkNvbW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgb24gY29tbWl0ICcpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kKG5vZGUub25Db21taXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGUuZW5kTW9kaWZpZXJzICYmIG5vZGUuZW5kTW9kaWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5lbmRNb2RpZmllcnMsICcgJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRDb2x1bW5EZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuaWZOb3RFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdpZiBub3QgZXhpc3RzICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sdW1uKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5kYXRhVHlwZSk7XG4gICAgICAgIGlmIChub2RlLnVuc2lnbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHVuc2lnbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZnJvbnRNb2RpZmllcnMgJiYgbm9kZS5mcm9udE1vZGlmaWVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmZyb250TW9kaWZpZXJzLCAnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmdlbmVyYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZ2VuZXJhdGVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5pZGVudGl0eSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBpZGVudGl0eScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRlZmF1bHRUbykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGVmYXVsdFRvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5ub3ROdWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIG5vdCBudWxsJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudW5pcXVlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHVuaXF1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLm51bGxzTm90RGlzdGluY3QpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgbnVsbHMgbm90IGRpc3RpbmN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUucHJpbWFyeUtleSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBwcmltYXJ5IGtleScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmF1dG9JbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCh0aGlzLmdldEF1dG9JbmNyZW1lbnQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUucmVmZXJlbmNlcykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuY2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmNoZWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5lbmRNb2RpZmllcnMgJiYgbm9kZS5lbmRNb2RpZmllcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5lbmRNb2RpZmllcnMsICcgJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0QXV0b0luY3JlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuICdhdXRvX2luY3JlbWVudCc7XG4gICAgfVxuICAgIHZpc2l0UmVmZXJlbmNlcyhub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdyZWZlcmVuY2VzICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRhYmxlKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyAoJyk7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgaWYgKG5vZGUub25EZWxldGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgb24gZGVsZXRlICcpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQobm9kZS5vbkRlbGV0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUub25VcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgb24gdXBkYXRlICcpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQobm9kZS5vblVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXREcm9wVGFibGUobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCB0YWJsZSAnKTtcbiAgICAgICAgaWYgKG5vZGUuaWZFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdpZiBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgICAgIGlmIChub2RlLmNhc2NhZGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgY2FzY2FkZScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0RGF0YVR5cGUobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChub2RlLmRhdGFUeXBlKTtcbiAgICB9XG4gICAgdmlzaXRPcmRlckJ5KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ29yZGVyIGJ5ICcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuaXRlbXMpO1xuICAgIH1cbiAgICB2aXNpdE9yZGVyQnlJdGVtKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcmRlckJ5KTtcbiAgICAgICAgaWYgKG5vZGUuY29sbGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb2xsYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGlyZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5udWxscykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBudWxscyAnKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKG5vZGUubnVsbHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0R3JvdXBCeShub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdncm91cCBieSAnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLml0ZW1zKTtcbiAgICB9XG4gICAgdmlzaXRHcm91cEJ5SXRlbShub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZ3JvdXBCeSk7XG4gICAgfVxuICAgIHZpc2l0VXBkYXRlUXVlcnkobm9kZSkge1xuICAgICAgICBjb25zdCByb290UXVlcnlOb2RlID0gdGhpcy5ub2RlU3RhY2suZmluZChRdWVyeU5vZGUuaXMpO1xuICAgICAgICBjb25zdCBpc1N1YlF1ZXJ5ID0gcm9vdFF1ZXJ5Tm9kZSAhPT0gbm9kZTtcbiAgICAgICAgaWYgKCFpc1N1YlF1ZXJ5ICYmIG5vZGUuZXhwbGFpbikge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHBsYWluKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3ViUXVlcnkgJiYgIU1lcmdlUXVlcnlOb2RlLmlzKHJvb3RRdWVyeU5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndpdGgpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUud2l0aCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCd1cGRhdGUgJyk7XG4gICAgICAgIGlmIChub2RlLnRvcCkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50b3ApO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCdzZXQgJyk7XG4gICAgICAgIGlmIChub2RlLnVwZGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS51cGRhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vdXRwdXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZnJvbSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuam9pbnMpIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5mcm9tKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSm9pbnMgaW4gYW4gdXBkYXRlIHF1ZXJ5IGFyZSBvbmx5IHN1cHBvcnRlZCBhcyBhIHBhcnQgb2YgYSBQb3N0Z3JlU1FMICd1cGRhdGUgc2V0IGZyb20gam9pbicgcXVlcnkuIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIE15U1FMICd1cGRhdGUgam9pbiBzZXQnIHF1ZXJ5LCBzZWUgaHR0cHM6Ly9reXNlbHkuZGV2L2RvY3MvZXhhbXBsZXMvdXBkYXRlL215LXNxbC1qb2luc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuam9pbnMsICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUud2hlcmUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLndoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcmRlckJ5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5saW1pdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnJldHVybmluZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmV0dXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTdWJRdWVyeSAmJiAhTWVyZ2VRdWVyeU5vZGUuaXMocm9vdFF1ZXJ5Tm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZW5kTW9kaWZpZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuZW5kTW9kaWZpZXJzLCAnICcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0Q29sdW1uVXBkYXRlKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb2x1bW4pO1xuICAgICAgICB0aGlzLmFwcGVuZCgnID0gJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudmFsdWUpO1xuICAgIH1cbiAgICB2aXNpdExpbWl0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2xpbWl0ICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxpbWl0KTtcbiAgICB9XG4gICAgdmlzaXRPZmZzZXQobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnb2Zmc2V0ICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9mZnNldCk7XG4gICAgfVxuICAgIHZpc2l0T25Db25mbGljdChub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdvbiBjb25mbGljdCcpO1xuICAgICAgICBpZiAobm9kZS5jb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICgnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5jb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS5jb25zdHJhaW50KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIG9uIGNvbnN0cmFpbnQgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmNvbnN0cmFpbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUuaW5kZXhFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICgnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuaW5kZXhFeHByZXNzaW9uKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuaW5kZXhXaGVyZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuaW5kZXhXaGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZG9Ob3RoaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIGRvIG5vdGhpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnVwZGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgZG8gdXBkYXRlIHNldCAnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS51cGRhdGVzKTtcbiAgICAgICAgICAgIGlmIChub2RlLnVwZGF0ZVdoZXJlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnVwZGF0ZVdoZXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdE9uRHVwbGljYXRlS2V5KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ29uIGR1cGxpY2F0ZSBrZXkgdXBkYXRlICcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUudXBkYXRlcyk7XG4gICAgfVxuICAgIHZpc2l0Q3JlYXRlSW5kZXgobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnY3JlYXRlICcpO1xuICAgICAgICBpZiAobm9kZS51bmlxdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCd1bmlxdWUgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBlbmQoJ2luZGV4ICcpO1xuICAgICAgICBpZiAobm9kZS5pZk5vdEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2lmIG5vdCBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgaWYgKG5vZGUudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgb24gJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS51c2luZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyB1c2luZyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudXNpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgKCcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmNvbHVtbnMpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5udWxsc05vdERpc3RpbmN0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIG51bGxzIG5vdCBkaXN0aW5jdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndoZXJlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS53aGVyZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXREcm9wSW5kZXgobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCBpbmRleCAnKTtcbiAgICAgICAgaWYgKG5vZGUuaWZFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdpZiBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgaWYgKG5vZGUudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgb24gJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5jYXNjYWRlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIGNhc2NhZGUnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdENyZWF0ZVNjaGVtYShub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdjcmVhdGUgc2NoZW1hICcpO1xuICAgICAgICBpZiAobm9kZS5pZk5vdEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2lmIG5vdCBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5zY2hlbWEpO1xuICAgIH1cbiAgICB2aXNpdERyb3BTY2hlbWEobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCBzY2hlbWEgJyk7XG4gICAgICAgIGlmIChub2RlLmlmRXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnaWYgZXhpc3RzICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuc2NoZW1hKTtcbiAgICAgICAgaWYgKG5vZGUuY2FzY2FkZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBjYXNjYWRlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRQcmltYXJ5S2V5Q29uc3RyYWludChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdjb25zdHJhaW50ICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBlbmQoJ3ByaW1hcnkga2V5ICgnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICB0aGlzLmJ1aWxkRGVmZXJyYWJsZShub2RlKTtcbiAgICB9XG4gICAgYnVpbGREZWZlcnJhYmxlKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZGVmZXJyYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5kZWZlcnJhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBkZWZlcnJhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgnIG5vdCBkZWZlcnJhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuaW5pdGlhbGx5RGVmZXJyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKG5vZGUuaW5pdGlhbGx5RGVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgnIGluaXRpYWxseSBkZWZlcnJlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBpbml0aWFsbHkgaW1tZWRpYXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRVbmlxdWVDb25zdHJhaW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2NvbnN0cmFpbnQgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgndW5pcXVlJyk7XG4gICAgICAgIGlmIChub2RlLm51bGxzTm90RGlzdGluY3QpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgbnVsbHMgbm90IGRpc3RpbmN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBlbmQoJyAoJyk7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyknKTtcbiAgICAgICAgdGhpcy5idWlsZERlZmVycmFibGUobm9kZSk7XG4gICAgfVxuICAgIHZpc2l0Q2hlY2tDb25zdHJhaW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2NvbnN0cmFpbnQgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnY2hlY2sgKCcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgIH1cbiAgICB2aXNpdEZvcmVpZ25LZXlDb25zdHJhaW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2NvbnN0cmFpbnQgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnZm9yZWlnbiBrZXkgKCcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuY29sdW1ucyk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcpICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJlZmVyZW5jZXMpO1xuICAgICAgICBpZiAobm9kZS5vbkRlbGV0ZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBvbiBkZWxldGUgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZChub2RlLm9uRGVsZXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vblVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBvbiB1cGRhdGUgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZChub2RlLm9uVXBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1aWxkRGVmZXJyYWJsZShub2RlKTtcbiAgICB9XG4gICAgdmlzaXRMaXN0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLml0ZW1zKTtcbiAgICB9XG4gICAgdmlzaXRXaXRoKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ3dpdGggJyk7XG4gICAgICAgIGlmIChub2RlLnJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ3JlY3Vyc2l2ZSAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuZXhwcmVzc2lvbnMpO1xuICAgIH1cbiAgICB2aXNpdENvbW1vblRhYmxlRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubmFtZSk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgYXMgJyk7XG4gICAgICAgIGlmIChpc0Jvb2xlYW4obm9kZS5tYXRlcmlhbGl6ZWQpKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUubWF0ZXJpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ25vdCAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdtYXRlcmlhbGl6ZWQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICB9XG4gICAgdmlzaXRDb21tb25UYWJsZUV4cHJlc3Npb25OYW1lKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgICAgIGlmIChub2RlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcoJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuY29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0QWx0ZXJUYWJsZShub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdhbHRlciB0YWJsZSAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50YWJsZSk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIGlmIChub2RlLnJlbmFtZVRvKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgncmVuYW1lIHRvICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5yZW5hbWVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuc2V0U2NoZW1hKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnc2V0IHNjaGVtYSAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuc2V0U2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5hZGRDb25zdHJhaW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmFkZENvbnN0cmFpbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRyb3BDb25zdHJhaW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmRyb3BDb25zdHJhaW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5yZW5hbWVDb25zdHJhaW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJlbmFtZUNvbnN0cmFpbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNvbHVtbkFsdGVyYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVDb2x1bW5BbHRlcmF0aW9ucyhub2RlLmNvbHVtbkFsdGVyYXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5hZGRJbmRleCkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5hZGRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZHJvcEluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmRyb3BJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRBZGRDb2x1bW4obm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnYWRkIGNvbHVtbiAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb2x1bW4pO1xuICAgIH1cbiAgICB2aXNpdFJlbmFtZUNvbHVtbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdyZW5hbWUgY29sdW1uICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmNvbHVtbik7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgdG8gJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmVuYW1lVG8pO1xuICAgIH1cbiAgICB2aXNpdERyb3BDb2x1bW4obm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCBjb2x1bW4gJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sdW1uKTtcbiAgICB9XG4gICAgdmlzaXRBbHRlckNvbHVtbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdhbHRlciBjb2x1bW4gJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sdW1uKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgaWYgKG5vZGUuZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFubm91bmNlc05ld0NvbHVtbkRhdGFUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgndHlwZSAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGF0YVR5cGUpO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGF0YVR5cGVFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ3VzaW5nICcpO1xuICAgICAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGF0YVR5cGVFeHByZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5zZXREZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnc2V0IGRlZmF1bHQgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnNldERlZmF1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRyb3BEZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCBkZWZhdWx0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuc2V0Tm90TnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ3NldCBub3QgbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmRyb3BOb3ROdWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnZHJvcCBub3QgbnVsbCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0TW9kaWZ5Q29sdW1uKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ21vZGlmeSBjb2x1bW4gJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sdW1uKTtcbiAgICB9XG4gICAgdmlzaXRBZGRDb25zdHJhaW50KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2FkZCAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25zdHJhaW50KTtcbiAgICB9XG4gICAgdmlzaXREcm9wQ29uc3RyYWludChub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdkcm9wIGNvbnN0cmFpbnQgJyk7XG4gICAgICAgIGlmIChub2RlLmlmRXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnaWYgZXhpc3RzICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uc3RyYWludE5hbWUpO1xuICAgICAgICBpZiAobm9kZS5tb2RpZmllciA9PT0gJ2Nhc2NhZGUnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIGNhc2NhZGUnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLm1vZGlmaWVyID09PSAncmVzdHJpY3QnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHJlc3RyaWN0Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRSZW5hbWVDb25zdHJhaW50KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ3JlbmFtZSBjb25zdHJhaW50ICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9sZE5hbWUpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnIHRvICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5ld05hbWUpO1xuICAgIH1cbiAgICB2aXNpdFNldE9wZXJhdGlvbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5vZGUub3BlcmF0b3IpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICBpZiAobm9kZS5hbGwpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdhbGwgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICB9XG4gICAgdmlzaXRDcmVhdGVWaWV3KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2NyZWF0ZSAnKTtcbiAgICAgICAgaWYgKG5vZGUub3JSZXBsYWNlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnb3IgcmVwbGFjZSAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5tYXRlcmlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdtYXRlcmlhbGl6ZWQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudGVtcG9yYXJ5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgndGVtcG9yYXJ5ICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCd2aWV3ICcpO1xuICAgICAgICBpZiAobm9kZS5pZk5vdEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2lmIG5vdCBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgaWYgKG5vZGUuY29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJygnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5jb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmFzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnYXMgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdFJlZnJlc2hNYXRlcmlhbGl6ZWRWaWV3KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ3JlZnJlc2ggbWF0ZXJpYWxpemVkIHZpZXcgJyk7XG4gICAgICAgIGlmIChub2RlLmNvbmN1cnJlbnRseSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ2NvbmN1cnJlbnRseSAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm5hbWUpO1xuICAgICAgICBpZiAobm9kZS53aXRoTm9EYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHdpdGggbm8gZGF0YScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyB3aXRoIGRhdGEnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdERyb3BWaWV3KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2Ryb3AgJyk7XG4gICAgICAgIGlmIChub2RlLm1hdGVyaWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ21hdGVyaWFsaXplZCAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgndmlldyAnKTtcbiAgICAgICAgaWYgKG5vZGUuaWZFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdpZiBleGlzdHMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgaWYgKG5vZGUuY2FzY2FkZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBjYXNjYWRlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRHZW5lcmF0ZWQobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnZ2VuZXJhdGVkICcpO1xuICAgICAgICBpZiAobm9kZS5hbHdheXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCdhbHdheXMgJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuYnlEZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnYnkgZGVmYXVsdCAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnYXMgJyk7XG4gICAgICAgIGlmIChub2RlLmlkZW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnaWRlbnRpdHknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5leHByZXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKCcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuc3RvcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHN0b3JlZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0RGVmYXVsdFZhbHVlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2RlZmF1bHQgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gICAgdmlzaXRTZWxlY3RNb2RpZmllcihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnJhd01vZGlmaWVyKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJhd01vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKFNFTEVDVF9NT0RJRklFUl9TUUxbbm9kZS5tb2RpZmllcl0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLm9mKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIG9mICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLm9mLCAnLCAnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdENyZWF0ZVR5cGUobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgnY3JlYXRlIHR5cGUgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubmFtZSk7XG4gICAgICAgIGlmIChub2RlLmVudW0pIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgYXMgZW51bSAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZW51bSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXREcm9wVHlwZShub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdkcm9wIHR5cGUgJyk7XG4gICAgICAgIGlmIChub2RlLmlmRXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnaWYgZXhpc3RzICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubmFtZSk7XG4gICAgfVxuICAgIHZpc2l0RXhwbGFpbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdleHBsYWluJyk7XG4gICAgICAgIGlmIChub2RlLm9wdGlvbnMgfHwgbm9kZS5mb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCh0aGlzLmdldExlZnRFeHBsYWluT3B0aW9uc1dyYXBwZXIoKSk7XG4gICAgICAgICAgICBpZiAobm9kZS5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQodGhpcy5nZXRFeHBsYWluT3B0aW9uc0RlbGltaXRlcigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZS5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZCgnZm9ybWF0Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQodGhpcy5nZXRFeHBsYWluT3B0aW9uQXNzaWdubWVudCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZChub2RlLmZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCh0aGlzLmdldFJpZ2h0RXhwbGFpbk9wdGlvbnNXcmFwcGVyKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0RGVmYXVsdEluc2VydFZhbHVlKF8pIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2RlZmF1bHQnKTtcbiAgICB9XG4gICAgdmlzaXRBZ2dyZWdhdGVGdW5jdGlvbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5vZGUuZnVuYyk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcoJyk7XG4gICAgICAgIGlmIChub2RlLmRpc3RpbmN0KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnZGlzdGluY3QgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmFnZ3JlZ2F0ZWQpO1xuICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcmRlckJ5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICBpZiAobm9kZS53aXRoaW5Hcm91cCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyB3aXRoaW4gZ3JvdXAgKCcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS53aXRoaW5Hcm91cCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBmaWx0ZXIoJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLm92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm92ZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0T3Zlcihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdvdmVyKCcpO1xuICAgICAgICBpZiAobm9kZS5wYXJ0aXRpb25CeSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5wYXJ0aXRpb25CeSk7XG4gICAgICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9yZGVyQnkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgfVxuICAgIHZpc2l0UGFydGl0aW9uQnkobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgncGFydGl0aW9uIGJ5ICcpO1xuICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuaXRlbXMpO1xuICAgIH1cbiAgICB2aXNpdFBhcnRpdGlvbkJ5SXRlbShub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucGFydGl0aW9uQnkpO1xuICAgIH1cbiAgICB2aXNpdEJpbmFyeU9wZXJhdGlvbihub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUubGVmdE9wZXJhbmQpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhdG9yKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5yaWdodE9wZXJhbmQpO1xuICAgIH1cbiAgICB2aXNpdFVuYXJ5T3BlcmF0aW9uKG5vZGUpIHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYXRvcik7XG4gICAgICAgIGlmICghdGhpcy5pc01pbnVzT3BlcmF0b3Iobm9kZS5vcGVyYXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgICB9XG4gICAgaXNNaW51c09wZXJhdG9yKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIE9wZXJhdG9yTm9kZS5pcyhub2RlKSAmJiBub2RlLm9wZXJhdG9yID09PSAnLSc7XG4gICAgfVxuICAgIHZpc2l0VXNpbmcobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZCgndXNpbmcgJyk7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS50YWJsZXMpO1xuICAgIH1cbiAgICB2aXNpdEZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobm9kZS5mdW5jKTtcbiAgICAgICAgdGhpcy5hcHBlbmQoJygnKTtcbiAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcpJyk7XG4gICAgfVxuICAgIHZpc2l0Q2FzZShub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdjYXNlJyk7XG4gICAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUud2hlbikge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS53aGVuLCAnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmVsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgZWxzZSAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBlbmQoJyBlbmQnKTtcbiAgICAgICAgaWYgKG5vZGUuaXNTdGF0ZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgY2FzZScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0V2hlbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCd3aGVuICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmNvbmRpdGlvbik7XG4gICAgICAgIGlmIChub2RlLnJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyB0aGVuICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5yZXN1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0SlNPTlJlZmVyZW5jZShub2RlKSB7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS50cmF2ZXJzYWwpO1xuICAgIH1cbiAgICB2aXNpdEpTT05QYXRoKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuaW5PcGVyYXRvcikge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5pbk9wZXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZChcIickXCIpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhMZWcgb2Ygbm9kZS5wYXRoTGVncykge1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUocGF0aExlZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBlbmQoXCInXCIpO1xuICAgIH1cbiAgICB2aXNpdEpTT05QYXRoTGVnKG5vZGUpIHtcbiAgICAgICAgY29uc3QgaXNBcnJheUxvY2F0aW9uID0gbm9kZS50eXBlID09PSAnQXJyYXlMb2NhdGlvbic7XG4gICAgICAgIHRoaXMuYXBwZW5kKGlzQXJyYXlMb2NhdGlvbiA/ICdbJyA6ICcuJyk7XG4gICAgICAgIHRoaXMuYXBwZW5kKFN0cmluZyhub2RlLnZhbHVlKSk7XG4gICAgICAgIGlmIChpc0FycmF5TG9jYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCddJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRKU09OT3BlcmF0b3JDaGFpbihub2RlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBub2RlLnZhbHVlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgPT09IGxlbiAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kKCctPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZXNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0TWVyZ2VRdWVyeShub2RlKSB7XG4gICAgICAgIGlmIChub2RlLndpdGgpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUud2l0aCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCdtZXJnZSAnKTtcbiAgICAgICAgaWYgKG5vZGUudG9wKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnRvcCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCdpbnRvICcpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmludG8pO1xuICAgICAgICBpZiAobm9kZS51c2luZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUudXNpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLndoZW5zKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnICcpO1xuICAgICAgICAgICAgdGhpcy5jb21waWxlTGlzdChub2RlLndoZW5zLCAnICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnJldHVybmluZykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAnKTtcbiAgICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucmV0dXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5vdXRwdXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZW5kTW9kaWZpZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuZW5kTW9kaWZpZXJzLCAnICcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpc2l0TWF0Y2hlZChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJ25vdCAnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGVuZCgnbWF0Y2hlZCcpO1xuICAgICAgICBpZiAobm9kZS5ieVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyBieSBzb3VyY2UnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aXNpdEFkZEluZGV4KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2FkZCAnKTtcbiAgICAgICAgaWYgKG5vZGUudW5pcXVlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgndW5pcXVlICcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwZW5kKCdpbmRleCAnKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICAgICAgaWYgKG5vZGUuY29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoJyAoJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVMaXN0KG5vZGUuY29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnVzaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnIHVzaW5nICcpO1xuICAgICAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS51c2luZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRDYXN0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2Nhc3QoJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuYXBwZW5kKCcgYXMgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZGF0YVR5cGUpO1xuICAgICAgICB0aGlzLmFwcGVuZCgnKScpO1xuICAgIH1cbiAgICB2aXNpdEZldGNoKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2ZldGNoIG5leHQgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUucm93Q291bnQpO1xuICAgICAgICB0aGlzLmFwcGVuZChgIHJvd3MgJHtub2RlLm1vZGlmaWVyfWApO1xuICAgIH1cbiAgICB2aXNpdE91dHB1dChub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCdvdXRwdXQgJyk7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3Qobm9kZS5zZWxlY3Rpb25zKTtcbiAgICB9XG4gICAgdmlzaXRUb3Aobm9kZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChgdG9wKCR7bm9kZS5leHByZXNzaW9ufSlgKTtcbiAgICAgICAgaWYgKG5vZGUubW9kaWZpZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZChgICR7bm9kZS5tb2RpZmllcnN9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlzaXRPckFjdGlvbihub2RlKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5vZGUuYWN0aW9uKTtcbiAgICB9XG4gICAgdmlzaXRDb2xsYXRlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoJ2NvbGxhdGUgJyk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29sbGF0aW9uKTtcbiAgICB9XG4gICAgYXBwZW5kKHN0cikge1xuICAgICAgICB0aGlzLiNzcWwgKz0gc3RyO1xuICAgIH1cbiAgICBhcHBlbmRWYWx1ZShwYXJhbWV0ZXIpIHtcbiAgICAgICAgdGhpcy5hZGRQYXJhbWV0ZXIocGFyYW1ldGVyKTtcbiAgICAgICAgdGhpcy5hcHBlbmQodGhpcy5nZXRDdXJyZW50UGFyYW1ldGVyUGxhY2Vob2xkZXIoKSk7XG4gICAgfVxuICAgIGdldExlZnRJZGVudGlmaWVyV3JhcHBlcigpIHtcbiAgICAgICAgcmV0dXJuICdcIic7XG4gICAgfVxuICAgIGdldFJpZ2h0SWRlbnRpZmllcldyYXBwZXIoKSB7XG4gICAgICAgIHJldHVybiAnXCInO1xuICAgIH1cbiAgICBnZXRDdXJyZW50UGFyYW1ldGVyUGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiAnJCcgKyB0aGlzLm51bVBhcmFtZXRlcnM7XG4gICAgfVxuICAgIGdldExlZnRFeHBsYWluT3B0aW9uc1dyYXBwZXIoKSB7XG4gICAgICAgIHJldHVybiAnKCc7XG4gICAgfVxuICAgIGdldEV4cGxhaW5PcHRpb25Bc3NpZ25tZW50KCkge1xuICAgICAgICByZXR1cm4gJyAnO1xuICAgIH1cbiAgICBnZXRFeHBsYWluT3B0aW9uc0RlbGltaXRlcigpIHtcbiAgICAgICAgcmV0dXJuICcsICc7XG4gICAgfVxuICAgIGdldFJpZ2h0RXhwbGFpbk9wdGlvbnNXcmFwcGVyKCkge1xuICAgICAgICByZXR1cm4gJyknO1xuICAgIH1cbiAgICBzYW5pdGl6ZUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICAgICAgICBjb25zdCBsZWZ0V3JhcCA9IHRoaXMuZ2V0TGVmdElkZW50aWZpZXJXcmFwcGVyKCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0V3JhcCA9IHRoaXMuZ2V0UmlnaHRJZGVudGlmaWVyV3JhcHBlcigpO1xuICAgICAgICBsZXQgc2FuaXRpemVkID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBzYW5pdGl6ZWQgKz0gYztcbiAgICAgICAgICAgIGlmIChjID09PSBsZWZ0V3JhcCkge1xuICAgICAgICAgICAgICAgIHNhbml0aXplZCArPSBsZWZ0V3JhcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IHJpZ2h0V3JhcCkge1xuICAgICAgICAgICAgICAgIHNhbml0aXplZCArPSByaWdodFdyYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhbml0aXplZDtcbiAgICB9XG4gICAgc2FuaXRpemVTdHJpbmdMaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKExJVF9XUkFQX1JFR0VYLCBcIicnXCIpO1xuICAgIH1cbiAgICBhZGRQYXJhbWV0ZXIocGFyYW1ldGVyKSB7XG4gICAgICAgIHRoaXMuI3BhcmFtZXRlcnMucHVzaChwYXJhbWV0ZXIpO1xuICAgIH1cbiAgICBhcHBlbmRJbW1lZGlhdGVWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZFN0cmluZ0xpdGVyYWwodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbHVlKSB8fCBpc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc051bGwodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZCgnbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kSW1tZWRpYXRlVmFsdWUodmFsdWUudG9JU09TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNCaWdJbnQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZEltbWVkaWF0ZVZhbHVlKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGltbWVkaWF0ZSB2YWx1ZSAke3ZhbHVlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFwcGVuZFN0cmluZ0xpdGVyYWwodmFsdWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoXCInXCIpO1xuICAgICAgICB0aGlzLmFwcGVuZCh0aGlzLnNhbml0aXplU3RyaW5nTGl0ZXJhbCh2YWx1ZSkpO1xuICAgICAgICB0aGlzLmFwcGVuZChcIidcIik7XG4gICAgfVxuICAgIHNvcnRTZWxlY3RNb2RpZmllcnMoYXJyKSB7XG4gICAgICAgIGFyci5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5tb2RpZmllciAmJiByaWdodC5tb2RpZmllclxuICAgICAgICAgICAgPyBTRUxFQ1RfTU9ESUZJRVJfUFJJT1JJVFlbbGVmdC5tb2RpZmllcl0gLVxuICAgICAgICAgICAgICAgIFNFTEVDVF9NT0RJRklFUl9QUklPUklUWVtyaWdodC5tb2RpZmllcl1cbiAgICAgICAgICAgIDogMSk7XG4gICAgICAgIHJldHVybiBmcmVlemUoYXJyKTtcbiAgICB9XG4gICAgY29tcGlsZUNvbHVtbkFsdGVyYXRpb25zKGNvbHVtbkFsdGVyYXRpb25zKSB7XG4gICAgICAgIHRoaXMuY29tcGlsZUxpc3QoY29sdW1uQWx0ZXJhdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBjb250cm9scyB3aGV0aGVyIHRoZSBkaWFsZWN0IGFkZHMgYSBcInR5cGVcIiBrZXl3b3JkIGJlZm9yZSBhIGNvbHVtbidzIG5ldyBkYXRhXG4gICAgICogdHlwZSBpbiBhbiBBTFRFUiBUQUJMRSBzdGF0ZW1lbnQuXG4gICAgICovXG4gICAgYW5ub3VuY2VzTmV3Q29sdW1uRGF0YVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbmNvbnN0IFNFTEVDVF9NT0RJRklFUl9TUUwgPSBmcmVlemUoe1xuICAgIEZvcktleVNoYXJlOiAnZm9yIGtleSBzaGFyZScsXG4gICAgRm9yTm9LZXlVcGRhdGU6ICdmb3Igbm8ga2V5IHVwZGF0ZScsXG4gICAgRm9yVXBkYXRlOiAnZm9yIHVwZGF0ZScsXG4gICAgRm9yU2hhcmU6ICdmb3Igc2hhcmUnLFxuICAgIE5vV2FpdDogJ25vd2FpdCcsXG4gICAgU2tpcExvY2tlZDogJ3NraXAgbG9ja2VkJyxcbiAgICBEaXN0aW5jdDogJ2Rpc3RpbmN0Jyxcbn0pO1xuY29uc3QgU0VMRUNUX01PRElGSUVSX1BSSU9SSVRZID0gZnJlZXplKHtcbiAgICBGb3JLZXlTaGFyZTogMSxcbiAgICBGb3JOb0tleVVwZGF0ZTogMSxcbiAgICBGb3JVcGRhdGU6IDEsXG4gICAgRm9yU2hhcmU6IDEsXG4gICAgTm9XYWl0OiAyLFxuICAgIFNraXBMb2NrZWQ6IDIsXG4gICAgRGlzdGluY3Q6IDAsXG59KTtcbmNvbnN0IEpPSU5fVFlQRV9TUUwgPSBmcmVlemUoe1xuICAgIElubmVySm9pbjogJ2lubmVyIGpvaW4nLFxuICAgIExlZnRKb2luOiAnbGVmdCBqb2luJyxcbiAgICBSaWdodEpvaW46ICdyaWdodCBqb2luJyxcbiAgICBGdWxsSm9pbjogJ2Z1bGwgam9pbicsXG4gICAgQ3Jvc3NKb2luOiAnY3Jvc3Mgam9pbicsXG4gICAgTGF0ZXJhbElubmVySm9pbjogJ2lubmVyIGpvaW4gbGF0ZXJhbCcsXG4gICAgTGF0ZXJhbExlZnRKb2luOiAnbGVmdCBqb2luIGxhdGVyYWwnLFxuICAgIExhdGVyYWxDcm9zc0pvaW46ICdjcm9zcyBqb2luIGxhdGVyYWwnLFxuICAgIE91dGVyQXBwbHk6ICdvdXRlciBhcHBseScsXG4gICAgQ3Jvc3NBcHBseTogJ2Nyb3NzIGFwcGx5JyxcbiAgICBVc2luZzogJ3VzaW5nJyxcbn0pO1xuIiwgIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiLi9vcGVyYXRpb24tbm9kZS12aXNpdG9yLmQudHNcIiAvPlxuaW1wb3J0IHsgZnJlZXplIH0gZnJvbSAnLi4vdXRpbC9vYmplY3QtdXRpbHMuanMnO1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbk5vZGVWaXNpdG9yIHtcbiAgICBub2RlU3RhY2sgPSBbXTtcbiAgICBnZXQgcGFyZW50Tm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZVN0YWNrW3RoaXMubm9kZVN0YWNrLmxlbmd0aCAtIDJdO1xuICAgIH1cbiAgICAjdmlzaXRvcnMgPSBmcmVlemUoe1xuICAgICAgICBBbGlhc05vZGU6IHRoaXMudmlzaXRBbGlhcy5iaW5kKHRoaXMpLFxuICAgICAgICBDb2x1bW5Ob2RlOiB0aGlzLnZpc2l0Q29sdW1uLmJpbmQodGhpcyksXG4gICAgICAgIElkZW50aWZpZXJOb2RlOiB0aGlzLnZpc2l0SWRlbnRpZmllci5iaW5kKHRoaXMpLFxuICAgICAgICBTY2hlbWFibGVJZGVudGlmaWVyTm9kZTogdGhpcy52aXNpdFNjaGVtYWJsZUlkZW50aWZpZXIuYmluZCh0aGlzKSxcbiAgICAgICAgUmF3Tm9kZTogdGhpcy52aXNpdFJhdy5iaW5kKHRoaXMpLFxuICAgICAgICBSZWZlcmVuY2VOb2RlOiB0aGlzLnZpc2l0UmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgIFNlbGVjdFF1ZXJ5Tm9kZTogdGhpcy52aXNpdFNlbGVjdFF1ZXJ5LmJpbmQodGhpcyksXG4gICAgICAgIFNlbGVjdGlvbk5vZGU6IHRoaXMudmlzaXRTZWxlY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgVGFibGVOb2RlOiB0aGlzLnZpc2l0VGFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgRnJvbU5vZGU6IHRoaXMudmlzaXRGcm9tLmJpbmQodGhpcyksXG4gICAgICAgIFNlbGVjdEFsbE5vZGU6IHRoaXMudmlzaXRTZWxlY3RBbGwuYmluZCh0aGlzKSxcbiAgICAgICAgQW5kTm9kZTogdGhpcy52aXNpdEFuZC5iaW5kKHRoaXMpLFxuICAgICAgICBPck5vZGU6IHRoaXMudmlzaXRPci5iaW5kKHRoaXMpLFxuICAgICAgICBWYWx1ZU5vZGU6IHRoaXMudmlzaXRWYWx1ZS5iaW5kKHRoaXMpLFxuICAgICAgICBWYWx1ZUxpc3ROb2RlOiB0aGlzLnZpc2l0VmFsdWVMaXN0LmJpbmQodGhpcyksXG4gICAgICAgIFByaW1pdGl2ZVZhbHVlTGlzdE5vZGU6IHRoaXMudmlzaXRQcmltaXRpdmVWYWx1ZUxpc3QuYmluZCh0aGlzKSxcbiAgICAgICAgUGFyZW5zTm9kZTogdGhpcy52aXNpdFBhcmVucy5iaW5kKHRoaXMpLFxuICAgICAgICBKb2luTm9kZTogdGhpcy52aXNpdEpvaW4uYmluZCh0aGlzKSxcbiAgICAgICAgT3BlcmF0b3JOb2RlOiB0aGlzLnZpc2l0T3BlcmF0b3IuYmluZCh0aGlzKSxcbiAgICAgICAgV2hlcmVOb2RlOiB0aGlzLnZpc2l0V2hlcmUuYmluZCh0aGlzKSxcbiAgICAgICAgSW5zZXJ0UXVlcnlOb2RlOiB0aGlzLnZpc2l0SW5zZXJ0UXVlcnkuYmluZCh0aGlzKSxcbiAgICAgICAgRGVsZXRlUXVlcnlOb2RlOiB0aGlzLnZpc2l0RGVsZXRlUXVlcnkuYmluZCh0aGlzKSxcbiAgICAgICAgUmV0dXJuaW5nTm9kZTogdGhpcy52aXNpdFJldHVybmluZy5iaW5kKHRoaXMpLFxuICAgICAgICBDcmVhdGVUYWJsZU5vZGU6IHRoaXMudmlzaXRDcmVhdGVUYWJsZS5iaW5kKHRoaXMpLFxuICAgICAgICBBZGRDb2x1bW5Ob2RlOiB0aGlzLnZpc2l0QWRkQ29sdW1uLmJpbmQodGhpcyksXG4gICAgICAgIENvbHVtbkRlZmluaXRpb25Ob2RlOiB0aGlzLnZpc2l0Q29sdW1uRGVmaW5pdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICBEcm9wVGFibGVOb2RlOiB0aGlzLnZpc2l0RHJvcFRhYmxlLmJpbmQodGhpcyksXG4gICAgICAgIERhdGFUeXBlTm9kZTogdGhpcy52aXNpdERhdGFUeXBlLmJpbmQodGhpcyksXG4gICAgICAgIE9yZGVyQnlOb2RlOiB0aGlzLnZpc2l0T3JkZXJCeS5iaW5kKHRoaXMpLFxuICAgICAgICBPcmRlckJ5SXRlbU5vZGU6IHRoaXMudmlzaXRPcmRlckJ5SXRlbS5iaW5kKHRoaXMpLFxuICAgICAgICBHcm91cEJ5Tm9kZTogdGhpcy52aXNpdEdyb3VwQnkuYmluZCh0aGlzKSxcbiAgICAgICAgR3JvdXBCeUl0ZW1Ob2RlOiB0aGlzLnZpc2l0R3JvdXBCeUl0ZW0uYmluZCh0aGlzKSxcbiAgICAgICAgVXBkYXRlUXVlcnlOb2RlOiB0aGlzLnZpc2l0VXBkYXRlUXVlcnkuYmluZCh0aGlzKSxcbiAgICAgICAgQ29sdW1uVXBkYXRlTm9kZTogdGhpcy52aXNpdENvbHVtblVwZGF0ZS5iaW5kKHRoaXMpLFxuICAgICAgICBMaW1pdE5vZGU6IHRoaXMudmlzaXRMaW1pdC5iaW5kKHRoaXMpLFxuICAgICAgICBPZmZzZXROb2RlOiB0aGlzLnZpc2l0T2Zmc2V0LmJpbmQodGhpcyksXG4gICAgICAgIE9uQ29uZmxpY3ROb2RlOiB0aGlzLnZpc2l0T25Db25mbGljdC5iaW5kKHRoaXMpLFxuICAgICAgICBPbkR1cGxpY2F0ZUtleU5vZGU6IHRoaXMudmlzaXRPbkR1cGxpY2F0ZUtleS5iaW5kKHRoaXMpLFxuICAgICAgICBDcmVhdGVJbmRleE5vZGU6IHRoaXMudmlzaXRDcmVhdGVJbmRleC5iaW5kKHRoaXMpLFxuICAgICAgICBEcm9wSW5kZXhOb2RlOiB0aGlzLnZpc2l0RHJvcEluZGV4LmJpbmQodGhpcyksXG4gICAgICAgIExpc3ROb2RlOiB0aGlzLnZpc2l0TGlzdC5iaW5kKHRoaXMpLFxuICAgICAgICBQcmltYXJ5S2V5Q29uc3RyYWludE5vZGU6IHRoaXMudmlzaXRQcmltYXJ5S2V5Q29uc3RyYWludC5iaW5kKHRoaXMpLFxuICAgICAgICBVbmlxdWVDb25zdHJhaW50Tm9kZTogdGhpcy52aXNpdFVuaXF1ZUNvbnN0cmFpbnQuYmluZCh0aGlzKSxcbiAgICAgICAgUmVmZXJlbmNlc05vZGU6IHRoaXMudmlzaXRSZWZlcmVuY2VzLmJpbmQodGhpcyksXG4gICAgICAgIENoZWNrQ29uc3RyYWludE5vZGU6IHRoaXMudmlzaXRDaGVja0NvbnN0cmFpbnQuYmluZCh0aGlzKSxcbiAgICAgICAgV2l0aE5vZGU6IHRoaXMudmlzaXRXaXRoLmJpbmQodGhpcyksXG4gICAgICAgIENvbW1vblRhYmxlRXhwcmVzc2lvbk5vZGU6IHRoaXMudmlzaXRDb21tb25UYWJsZUV4cHJlc3Npb24uYmluZCh0aGlzKSxcbiAgICAgICAgQ29tbW9uVGFibGVFeHByZXNzaW9uTmFtZU5vZGU6IHRoaXMudmlzaXRDb21tb25UYWJsZUV4cHJlc3Npb25OYW1lLmJpbmQodGhpcyksXG4gICAgICAgIEhhdmluZ05vZGU6IHRoaXMudmlzaXRIYXZpbmcuYmluZCh0aGlzKSxcbiAgICAgICAgQ3JlYXRlU2NoZW1hTm9kZTogdGhpcy52aXNpdENyZWF0ZVNjaGVtYS5iaW5kKHRoaXMpLFxuICAgICAgICBEcm9wU2NoZW1hTm9kZTogdGhpcy52aXNpdERyb3BTY2hlbWEuYmluZCh0aGlzKSxcbiAgICAgICAgQWx0ZXJUYWJsZU5vZGU6IHRoaXMudmlzaXRBbHRlclRhYmxlLmJpbmQodGhpcyksXG4gICAgICAgIERyb3BDb2x1bW5Ob2RlOiB0aGlzLnZpc2l0RHJvcENvbHVtbi5iaW5kKHRoaXMpLFxuICAgICAgICBSZW5hbWVDb2x1bW5Ob2RlOiB0aGlzLnZpc2l0UmVuYW1lQ29sdW1uLmJpbmQodGhpcyksXG4gICAgICAgIEFsdGVyQ29sdW1uTm9kZTogdGhpcy52aXNpdEFsdGVyQ29sdW1uLmJpbmQodGhpcyksXG4gICAgICAgIE1vZGlmeUNvbHVtbk5vZGU6IHRoaXMudmlzaXRNb2RpZnlDb2x1bW4uYmluZCh0aGlzKSxcbiAgICAgICAgQWRkQ29uc3RyYWludE5vZGU6IHRoaXMudmlzaXRBZGRDb25zdHJhaW50LmJpbmQodGhpcyksXG4gICAgICAgIERyb3BDb25zdHJhaW50Tm9kZTogdGhpcy52aXNpdERyb3BDb25zdHJhaW50LmJpbmQodGhpcyksXG4gICAgICAgIFJlbmFtZUNvbnN0cmFpbnROb2RlOiB0aGlzLnZpc2l0UmVuYW1lQ29uc3RyYWludC5iaW5kKHRoaXMpLFxuICAgICAgICBGb3JlaWduS2V5Q29uc3RyYWludE5vZGU6IHRoaXMudmlzaXRGb3JlaWduS2V5Q29uc3RyYWludC5iaW5kKHRoaXMpLFxuICAgICAgICBDcmVhdGVWaWV3Tm9kZTogdGhpcy52aXNpdENyZWF0ZVZpZXcuYmluZCh0aGlzKSxcbiAgICAgICAgUmVmcmVzaE1hdGVyaWFsaXplZFZpZXdOb2RlOiB0aGlzLnZpc2l0UmVmcmVzaE1hdGVyaWFsaXplZFZpZXcuYmluZCh0aGlzKSxcbiAgICAgICAgRHJvcFZpZXdOb2RlOiB0aGlzLnZpc2l0RHJvcFZpZXcuYmluZCh0aGlzKSxcbiAgICAgICAgR2VuZXJhdGVkTm9kZTogdGhpcy52aXNpdEdlbmVyYXRlZC5iaW5kKHRoaXMpLFxuICAgICAgICBEZWZhdWx0VmFsdWVOb2RlOiB0aGlzLnZpc2l0RGVmYXVsdFZhbHVlLmJpbmQodGhpcyksXG4gICAgICAgIE9uTm9kZTogdGhpcy52aXNpdE9uLmJpbmQodGhpcyksXG4gICAgICAgIFZhbHVlc05vZGU6IHRoaXMudmlzaXRWYWx1ZXMuYmluZCh0aGlzKSxcbiAgICAgICAgU2VsZWN0TW9kaWZpZXJOb2RlOiB0aGlzLnZpc2l0U2VsZWN0TW9kaWZpZXIuYmluZCh0aGlzKSxcbiAgICAgICAgQ3JlYXRlVHlwZU5vZGU6IHRoaXMudmlzaXRDcmVhdGVUeXBlLmJpbmQodGhpcyksXG4gICAgICAgIERyb3BUeXBlTm9kZTogdGhpcy52aXNpdERyb3BUeXBlLmJpbmQodGhpcyksXG4gICAgICAgIEV4cGxhaW5Ob2RlOiB0aGlzLnZpc2l0RXhwbGFpbi5iaW5kKHRoaXMpLFxuICAgICAgICBEZWZhdWx0SW5zZXJ0VmFsdWVOb2RlOiB0aGlzLnZpc2l0RGVmYXVsdEluc2VydFZhbHVlLmJpbmQodGhpcyksXG4gICAgICAgIEFnZ3JlZ2F0ZUZ1bmN0aW9uTm9kZTogdGhpcy52aXNpdEFnZ3JlZ2F0ZUZ1bmN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgIE92ZXJOb2RlOiB0aGlzLnZpc2l0T3Zlci5iaW5kKHRoaXMpLFxuICAgICAgICBQYXJ0aXRpb25CeU5vZGU6IHRoaXMudmlzaXRQYXJ0aXRpb25CeS5iaW5kKHRoaXMpLFxuICAgICAgICBQYXJ0aXRpb25CeUl0ZW1Ob2RlOiB0aGlzLnZpc2l0UGFydGl0aW9uQnlJdGVtLmJpbmQodGhpcyksXG4gICAgICAgIFNldE9wZXJhdGlvbk5vZGU6IHRoaXMudmlzaXRTZXRPcGVyYXRpb24uYmluZCh0aGlzKSxcbiAgICAgICAgQmluYXJ5T3BlcmF0aW9uTm9kZTogdGhpcy52aXNpdEJpbmFyeU9wZXJhdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICBVbmFyeU9wZXJhdGlvbk5vZGU6IHRoaXMudmlzaXRVbmFyeU9wZXJhdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICBVc2luZ05vZGU6IHRoaXMudmlzaXRVc2luZy5iaW5kKHRoaXMpLFxuICAgICAgICBGdW5jdGlvbk5vZGU6IHRoaXMudmlzaXRGdW5jdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICBDYXNlTm9kZTogdGhpcy52aXNpdENhc2UuYmluZCh0aGlzKSxcbiAgICAgICAgV2hlbk5vZGU6IHRoaXMudmlzaXRXaGVuLmJpbmQodGhpcyksXG4gICAgICAgIEpTT05SZWZlcmVuY2VOb2RlOiB0aGlzLnZpc2l0SlNPTlJlZmVyZW5jZS5iaW5kKHRoaXMpLFxuICAgICAgICBKU09OUGF0aE5vZGU6IHRoaXMudmlzaXRKU09OUGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICBKU09OUGF0aExlZ05vZGU6IHRoaXMudmlzaXRKU09OUGF0aExlZy5iaW5kKHRoaXMpLFxuICAgICAgICBKU09OT3BlcmF0b3JDaGFpbk5vZGU6IHRoaXMudmlzaXRKU09OT3BlcmF0b3JDaGFpbi5iaW5kKHRoaXMpLFxuICAgICAgICBUdXBsZU5vZGU6IHRoaXMudmlzaXRUdXBsZS5iaW5kKHRoaXMpLFxuICAgICAgICBNZXJnZVF1ZXJ5Tm9kZTogdGhpcy52aXNpdE1lcmdlUXVlcnkuYmluZCh0aGlzKSxcbiAgICAgICAgTWF0Y2hlZE5vZGU6IHRoaXMudmlzaXRNYXRjaGVkLmJpbmQodGhpcyksXG4gICAgICAgIEFkZEluZGV4Tm9kZTogdGhpcy52aXNpdEFkZEluZGV4LmJpbmQodGhpcyksXG4gICAgICAgIENhc3ROb2RlOiB0aGlzLnZpc2l0Q2FzdC5iaW5kKHRoaXMpLFxuICAgICAgICBGZXRjaE5vZGU6IHRoaXMudmlzaXRGZXRjaC5iaW5kKHRoaXMpLFxuICAgICAgICBUb3BOb2RlOiB0aGlzLnZpc2l0VG9wLmJpbmQodGhpcyksXG4gICAgICAgIE91dHB1dE5vZGU6IHRoaXMudmlzaXRPdXRwdXQuYmluZCh0aGlzKSxcbiAgICAgICAgT3JBY3Rpb25Ob2RlOiB0aGlzLnZpc2l0T3JBY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgQ29sbGF0ZU5vZGU6IHRoaXMudmlzaXRDb2xsYXRlLmJpbmQodGhpcyksXG4gICAgfSk7XG4gICAgdmlzaXROb2RlID0gKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5ub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICAgICAgdGhpcy4jdmlzaXRvcnNbbm9kZS5raW5kXShub2RlKTtcbiAgICAgICAgdGhpcy5ub2RlU3RhY2sucG9wKCk7XG4gICAgfTtcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIi4vZGlhbGVjdC1hZGFwdGVyLWJhc2UuZC50c1wiIC8+XG4vKipcbiAqIEEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgYERpYWxlY3RBZGFwdGVyYCB3aXRoIHNlbnNpYmxlIGRlZmF1bHQgdmFsdWVzLlxuICogVGhpcmQtcGFydHkgZGlhbGVjdHMgY2FuIGV4dGVuZCB0aGlzIGluc3RlYWQgb2YgaW1wbGVtZW50aW5nIHRoZSBgRGlhbGVjdEFkYXB0ZXJgXG4gKiBpbnRlcmZhY2UgZnJvbSBzY3JhdGNoLiBUaGF0IHdheSBhbGwgbmV3IHNldHRpbmdzIHdpbGwgZ2V0IGRlZmF1bHQgdmFsdWVzIHdoZW5cbiAqIHRoZXkgYXJlIGFkZGVkIGFuZCB0aGVyZSB3aWxsIGJlIGxlc3MgYnJlYWtpbmcgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpYWxlY3RBZGFwdGVyQmFzZSB7XG4gICAgZ2V0IHN1cHBvcnRzQ3JlYXRlSWZOb3RFeGlzdHMoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXQgc3VwcG9ydHNUcmFuc2FjdGlvbmFsRGRsKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGdldCBzdXBwb3J0c1JldHVybmluZygpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBnZXQgc3VwcG9ydHNPdXRwdXQoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCIuL3Bvc3RncmVzLXF1ZXJ5LWNvbXBpbGVyLmQudHNcIiAvPlxuaW1wb3J0IHsgRGVmYXVsdFF1ZXJ5Q29tcGlsZXIgfSBmcm9tICcuLi8uLi9xdWVyeS1jb21waWxlci9kZWZhdWx0LXF1ZXJ5LWNvbXBpbGVyLmpzJztcbmNvbnN0IElEX1dSQVBfUkVHRVggPSAvXCIvZztcbmV4cG9ydCBjbGFzcyBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgZXh0ZW5kcyBEZWZhdWx0UXVlcnlDb21waWxlciB7XG4gICAgc2FuaXRpemVJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIucmVwbGFjZShJRF9XUkFQX1JFR0VYLCAnXCJcIicpO1xuICAgIH1cbn1cbiIsICIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIi4vcG9zdGdyZXMtYWRhcHRlci5kLnRzXCIgLz5cbmltcG9ydCB7IHNxbCB9IGZyb20gJy4uLy4uL3Jhdy1idWlsZGVyL3NxbC5qcyc7XG5pbXBvcnQgeyBEaWFsZWN0QWRhcHRlckJhc2UgfSBmcm9tICcuLi9kaWFsZWN0LWFkYXB0ZXItYmFzZS5qcyc7XG4vLyBSYW5kb20gaWQgZm9yIG91ciB0cmFuc2FjdGlvbiBsb2NrLlxuY29uc3QgTE9DS19JRCA9IEJpZ0ludCgnMzg1MzMxNDc5MTA2MjMwOTEwNycpO1xuZXhwb3J0IGNsYXNzIFBvc3RncmVzQWRhcHRlciBleHRlbmRzIERpYWxlY3RBZGFwdGVyQmFzZSB7XG4gICAgZ2V0IHN1cHBvcnRzVHJhbnNhY3Rpb25hbERkbCgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldCBzdXBwb3J0c1JldHVybmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGFjcXVpcmVNaWdyYXRpb25Mb2NrKGRiLCBfb3B0KSB7XG4gICAgICAgIC8vIEFjcXVpcmUgYSB0cmFuc2FjdGlvbiBsZXZlbCBhZHZpc29yeSBsb2NrLlxuICAgICAgICBhd2FpdCBzcWwgYHNlbGVjdCBwZ19hZHZpc29yeV94YWN0X2xvY2soJHtzcWwubGl0KExPQ0tfSUQpfSlgLmV4ZWN1dGUoZGIpO1xuICAgIH1cbiAgICBhc3luYyByZWxlYXNlTWlncmF0aW9uTG9jayhfZGIsIF9vcHQpIHtcbiAgICAgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLiBgcGdfYWR2aXNvcnlfeGFjdF9sb2NrYCBpcyBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIGF0IHRoZVxuICAgICAgICAvLyBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBzaW5jZSBgc3VwcG9ydHNUcmFuc2FjdGlvbmFsRGRsYCB0cnVlLCB3ZSBrbm93XG4gICAgICAgIC8vIHRoZSBgZGJgIGluc3RhbmNlIHBhc3NlZCB0byBhY3F1aXJlTWlncmF0aW9uTG9jayBpcyBhY3R1YWxseSBhIHRyYW5zYWN0aW9uLlxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyB0eXBlIEt5c2VseSwgUG9zdGdyZXNBZGFwdGVyLCBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB7IHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cywgZ2V0QnVpbGRlciB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlID0gYW55PihcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbik6IEt5c2VseTxEYXRhYmFzZT4ge1xuICByZXR1cm4gZ2V0QnVpbGRlcih7IC4uLnJlcXVpcmVtZW50cywgQWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyLCBRdWVyeUNvbXBpbGVyOiBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBTZWxlY3RRdWVyeUJ1aWxkZXIsIHNxbCB9IGZyb20gXCJreXNlbHlcIjtcbmltcG9ydCB7IGpzb25BcnJheUZyb20gfSBmcm9tIFwia3lzZWx5L2hlbHBlcnMvcG9zdGdyZXNcIjtcblxuaW1wb3J0IHsgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBjb21waWxlLCB0eXBlIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRQb3N0Z3JlU1FMQnVpbGRlciB9IGZyb20gXCIuL2J1aWxkZXJcIjtcblxuY29uc3QgUkVHVUxBUl9UQUJMRV9LSU5EID0gXCJyXCI7XG5jb25zdCBWSUVXX1RBQkxFX0tJTkQgPSBcInZcIjtcbmNvbnN0IFRBQkxFX0tJTkRTID0gW1JFR1VMQVJfVEFCTEVfS0lORCwgVklFV19UQUJMRV9LSU5EXSBhcyBjb25zdDtcbnR5cGUgVGFibGVLaW5kID0gKHR5cGVvZiBUQUJMRV9LSU5EUylbbnVtYmVyXTtcblxuaW50ZXJmYWNlIERhdGFiYXNlIHtcbiAgLyoqIGNvbHVtbnMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVwiOiB7XG4gICAgLyoqIGNvbHVtbiBvcmRlciBudW1iZXIgaW4gaXRzIHRhYmxlICovXG4gICAgYXR0bnVtOiBudW1iZXI7XG4gICAgLyoqIHRhYmxlL3ZpZXcgaWRlbnRpZmllciAqL1xuICAgIGF0dHJlbGlkOiBzdHJpbmc7XG4gICAgLyoqIGNvbHVtbiBuYW1lICovXG4gICAgYXR0bmFtZTogc3RyaW5nO1xuICAgIC8qKiB3YXMgdGhlIGNvbHVtbiBkcm9wcGVkLiBkcm9wcGVkIGNvbHVtbnMgbWlnaHQgbm90IGJlIDEwMCUgcmVtb3ZlZCBpbW1lZGlhdGVseS4gKi9cbiAgICBhdHRpc2Ryb3BwZWQ6IGJvb2xlYW47XG4gICAgLyoqIGNvbHVtbiBkYXRhdHlwZSBpZGVudGlmaWVyICovXG4gICAgYXR0dHlwaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBnZW5lcmF0aW9uIGZsYWcgZm9yIGNvbXB1dGVkIGNvbHVtbnM6XG4gICAgICogJycgKGVtcHR5KSBmb3IgcmVndWxhciBjb2x1bW5zLFxuICAgICAqICdzJyBmb3IgU1RPUkVEIGdlbmVyYXRlZCBjb2x1bW5zIChQb3N0Z3JlcyBHRU5FUkFURUQgQUxXQVlTIEFTKS5cbiAgICAgKi9cbiAgICBhdHRnZW5lcmF0ZWQ6IFwiXCIgfCBcInNcIjtcbiAgICAvKiogTk9UIE5VTEwgY29uc3RyYWludDogdHJ1ZSBpZiB0aGUgY29sdW1uIGhhcyBhIE5PVCBOVUxMIGNvbnN0cmFpbnQgKi9cbiAgICBhdHRub3RudWxsOiBib29sZWFuO1xuICB9O1xuICAvKiogcmVzb3VyY2VzLCBlLmcuIHRhYmxlcywgc2VxdWVuY2VzLCBldGMuICovXG4gIFwicGdfY2F0YWxvZy5wZ19jbGFzc1wiOiB7XG4gICAgLyoqIHJlc291cmNlIGlkICovXG4gICAgb2lkOiBudW1iZXI7XG4gICAgLyoqIHJlc291cmNlIG5hbWUgKi9cbiAgICByZWxuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIHJlbG5hbWVzcGFjZTogbnVtYmVyO1xuICAgIC8qKiByZXNvdXJjZSBraW5kOiByZWd1bGFyIHRhYmxlLCB2aWV3ICovXG4gICAgcmVsa2luZDogVGFibGVLaW5kO1xuICB9O1xuICAvKiogZW51bSB0eXBlcycgdmFsdWVzICovXG4gIFwicGdfY2F0YWxvZy5wZ19lbnVtXCI6IHtcbiAgICAvKiogZW51bSB2YWx1ZSAqL1xuICAgIGVudW1sYWJlbDogc3RyaW5nO1xuICAgIC8qKiBlbnVtJ3MgdHlwZSBpZCAqL1xuICAgIGVudW10eXBpZDogbnVtYmVyO1xuICB9O1xuICAvKiogc2NoZW1hcyAqL1xuICBcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlXCI6IHtcbiAgICAvKiogc2NoZW1hIG5hbWUgKi9cbiAgICBuc3BuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICB9O1xuICAvKiogZGF0YXR5cGVzICovXG4gIFwicGdfY2F0YWxvZy5wZ190eXBlXCI6IHtcbiAgICAvKiogdHlwZSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICAgIC8qKiB0eXBlIG5hbWUgKi9cbiAgICB0eXBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHR5cGUncyBzY2hlbWEgKGFrYSBuYW1lc3BhY2UpIGlkICovXG4gICAgdHlwbmFtZXNwYWNlOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogdHlwZSdzIGtpbmRcbiAgICAgKlxuICAgICAqICdlJyAtIGVudW0gdHlwZVxuICAgICAqL1xuICAgIHR5cHR5cGU6IFwiZVwiIHwgKHN0cmluZyAmIHt9KTtcbiAgfTtcbiAgLyoqIGNvbnN0cmFpbnRzICovXG4gIFwicGdfY2F0YWxvZy5wZ19jb25zdHJhaW50XCI6IHtcbiAgICAvKiogcmVsYXRpb24gKHRhYmxlKSBpZCB3aGljaCB0aGlzIGNvbnN0cmFpbnQgd2FzIGNyZWF0ZWQgZm9yICovXG4gICAgY29ucmVsaWQ6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBjb25zdHJhaW50IHR5cGUuXG4gICAgICpcbiAgICAgKiBgJ3AnYCAtIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuXG4gICAgICogYCdmJ2AgLSBmb3JlaWduIGtleSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIGNvbnR5cGU6IFwicFwiIHwgXCJmXCIgfCAoc3RyaW5nICYge30pO1xuICAgIC8qKlxuICAgICAqIGFuIG9yZGVyZWQgYXJyYXkgb2YgY29sdW1ucyBpbmNsdWRlZCBpbiB0aGUgY29uc3RyYWludC5cbiAgICAgKlxuICAgICAqIHRoZSBjb2x1bW5zIGFyZSByZXByZXNlbnRlZCBieSB0aGVpciBvcmRpbmFsIG51bWJlciAoYGF0dG51bWApIGluIHRoZWlyIHJlbGF0aW9uICh0YWJsZSkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBgJ3sxLDN9J2AgLSBhIGNvbnN0cmFpbnQgd2l0aCAyIGNvbHVtbnMsIHRoZSAxc3QgJiAzcmQgaW4gdGhlaXIgdGFibGUuXG4gICAgICovXG4gICAgY29ua2V5OiBudW1iZXJbXTtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgdGFibGUgKi9cbiAgICBjb25mcmVsaWQ6IG51bWJlcjtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgY29sdW1ucyAqL1xuICAgIGNvbmZrZXk6IG51bWJlcltdO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIGFsbCB1c2VyLWRlZmluZWQgdGFibGVzIGFuZCB2aWV3cyBpbiB0aGUgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZXNRdWVyeShyZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+KSB7XG4gIHJldHVybiBjb21waWxlKFxuICAgIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlPihyZXF1aXJlbWVudHMpXG4gICAgICAuc2VsZWN0RnJvbShcInBnX2NhdGFsb2cucGdfY2xhc3MgYXMgY2xzXCIpXG4gICAgICAuaW5uZXJKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgbnNcIiwgXCJjbHMucmVsbmFtZXNwYWNlXCIsIFwibnMub2lkXCIpXG4gICAgICAuJGNhbGwoZXhjbHVkZVN5c3RlbVRhYmxlcylcbiAgICAgIC8vIHJlZ3VsYXIgdGFibGVzIG9yIHZpZXdzXG4gICAgICAud2hlcmUoXCJjbHMucmVsa2luZFwiLCBcImluXCIsIFRBQkxFX0tJTkRTKVxuICAgICAgLnNlbGVjdCgoZWIpID0+IFtcbiAgICAgICAgXCJucy5uc3BuYW1lIGFzIHNjaGVtYVwiLFxuICAgICAgICBcImNscy5yZWxuYW1lIGFzIG5hbWVcIixcbiAgICAgICAganNvbkFycmF5RnJvbShcbiAgICAgICAgICBlYlxuICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBhdHRcIilcbiAgICAgICAgICAgIC5pbm5lckpvaW4oXCJwZ19jYXRhbG9nLnBnX3R5cGUgYXMgdHlwXCIsIFwidHlwLm9pZFwiLCBcImF0dC5hdHR0eXBpZFwiKVxuICAgICAgICAgICAgLmlubmVySm9pbihcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIGFzIHRuc1wiLCBcInRucy5vaWRcIiwgXCJ0eXAudHlwbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYXMgcGtfY29uXCIsIChqYikgPT5cbiAgICAgICAgICAgICAgamJcbiAgICAgICAgICAgICAgICAub24oXCJwa19jb24uY29udHlwZVwiLCBcIj1cIiwgXCJwXCIpXG4gICAgICAgICAgICAgICAgLm9uUmVmKFwicGtfY29uLmNvbnJlbGlkXCIsIFwiPVwiLCBcImNscy5vaWRcIilcbiAgICAgICAgICAgICAgICAub24oKGViKSA9PiBlYihcImF0dC5hdHRudW1cIiwgXCI9XCIsIGViLmZuLmFueShcInBrX2Nvbi5jb25rZXlcIikpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5sZWZ0Sm9pbihcInBnX2NhdGFsb2cucGdfY29uc3RyYWludCBhcyBma19jb25cIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vbihcImZrX2Nvbi5jb250eXBlXCIsIFwiPVwiLCBcImZcIilcbiAgICAgICAgICAgICAgICAub25SZWYoXCJma19jb24uY29ucmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgICAgIC5vbigoZWIpID0+IGViKFwiYXR0LmF0dG51bVwiLCBcIj1cIiwgZWIuZm4uYW55KFwiZmtfY29uLmNvbmtleVwiKSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19jbGFzcyBhcyBma19jbHNcIiwgXCJma19jbHMub2lkXCIsIFwiZmtfY29uLmNvbmZyZWxpZFwiKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgZmtfbnNcIiwgXCJma19ucy5vaWRcIiwgXCJma19jbHMucmVsbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBma19hdHRcIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vblJlZihcImZrX2F0dC5hdHRyZWxpZFwiLCBcIj1cIiwgXCJma19jbHMub2lkXCIpXG4gICAgICAgICAgICAgICAgLy8gVXNlIGEgY2FsbGJhY2sgZm9yIHRoZSAub24oKSBjb25kaXRpb24gdG8gZW5zdXJlIGNvcnJlY3QgY29udGV4dCBmb3IgdHlwZXNcbiAgICAgICAgICAgICAgICAub24oKG9uX2ViKSA9PiBvbl9lYihcImZrX2F0dC5hdHRudW1cIiwgXCI9XCIsIG9uX2ViLmZuLmFueShcImZrX2Nvbi5jb25ma2V5XCIpKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAud2hlcmVSZWYoXCJhdHQuYXR0cmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgLy8gZXhjbHVkZSBzeXN0ZW0gY29sdW1uc1xuICAgICAgICAgICAgLndoZXJlKFwiYXR0LmF0dG51bVwiLCBcIj49XCIsIDApXG4gICAgICAgICAgICAud2hlcmUoXCJhdHQuYXR0aXNkcm9wcGVkXCIsIFwiIT1cIiwgdHJ1ZSlcbiAgICAgICAgICAgIC5zZWxlY3QoW1xuICAgICAgICAgICAgICBcImF0dC5hdHRuYW1lIGFzIG5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0eXAudHlwbmFtZSBhcyBkYXRhdHlwZVwiLFxuICAgICAgICAgICAgICBcInRucy5uc3BuYW1lIGFzIGRhdGF0eXBlX3NjaGVtYVwiLFxuICAgICAgICAgICAgICBcImZrX25zLm5zcG5hbWUgYXMgZm9yZWlnbl9rZXlfc2NoZW1hXCIsXG4gICAgICAgICAgICAgIFwiZmtfY2xzLnJlbG5hbWUgYXMgZm9yZWlnbl9rZXlfdGFibGVcIixcbiAgICAgICAgICAgICAgXCJma19hdHQuYXR0bmFtZSBhcyBmb3JlaWduX2tleV9jb2x1bW5cIixcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gW1xuICAgICAgICAgICAgICBlYihcInBrX2Nvbi5jb25rZXlcIiwgXCJpcyBub3RcIiwgbnVsbCkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwicGtcIiksXG4gICAgICAgICAgICAgIGViKFwiYXR0LmF0dGdlbmVyYXRlZFwiLCBcIiE9XCIsIFwiXCIpLiRjYXN0VG88Ym9vbGVhbj4oKS5hcyhcImNvbXB1dGVkXCIpLFxuICAgICAgICAgICAgICBlYihcImF0dC5hdHRub3RudWxsXCIsIFwiIT1cIiwgdHJ1ZSkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwibnVsbGFibGVcIiksXG4gICAgICAgICAgICAgIGViLmZuXG4gICAgICAgICAgICAgICAgLmNvYWxlc2NlKFxuICAgICAgICAgICAgICAgICAgZWJcbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2VudW0gYXMgZW5tXCIpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZVJlZihcImVubS5lbnVtdHlwaWRcIiwgXCI9XCIsIFwidHlwLm9pZFwiKVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gZWIuZm4uanNvbkFnZyhlYi5yZWYoXCJlbm0uZW51bWxhYmVsXCIpKS5hcyhcIm9cIikpLFxuICAgICAgICAgICAgICAgICAgc3FsPHN0cmluZ1tdPmAnW10nYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmFzKFwib3B0aW9uc1wiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApLmFzKFwiY29sdW1uc1wiKSxcbiAgICAgIF0pLFxuICApO1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1RhYmxlc1F1ZXJ5KCkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHNjaGVtYTogXCJ6b29cIixcbiAgICAgIG5hbWU6IFwiYW5pbWFsc1wiLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcImludDRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiB0cnVlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzY2hlbWE6IFwicHVibGljXCIsXG4gICAgICBuYW1lOiBcInVzZXJzXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwiaW50NFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogZmFsc2UsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV90YWJsZTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV9jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImRlbGV0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicm9sZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZV9yb2xlXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgdGltZXpvbmUgc2V0dGluZyBvZiB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWV6b25lUXVlcnkoKSB7XG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcigpO1xuXG4gIHJldHVybiBjb21waWxlKGJ1aWxkZXIuc2VsZWN0Tm9Gcm9tKGJ1aWxkZXIuZm48c3RyaW5nPihcImN1cnJlbnRfc2V0dGluZ1wiLCBbc3FsLmxpdChcInRpbWV6b25lXCIpXSkuYXMoXCJ0aW1lem9uZVwiKSkpO1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1RpbWV6b25lUXVlcnkoKSB7XG4gIHJldHVybiBbeyB0aW1lem9uZTogXCJVVENcIiB9XSBhcyBjb25zdCBzYXRpc2ZpZXMgUXVlcnlSZXN1bHQ8dHlwZW9mIGdldFRpbWV6b25lUXVlcnk+O1xufVxuXG4vKipcbiAqIFdlIGRvbid0IHdhbnQgUG9zdGdyZVNRTCBpbnRlcm5hbHMgaW4gaW50cm9zcGVjdGlvbiByZXN1bHRzLiBUbyBiZSB1c2VkIGluIGAkY2FsbGAuXG4gKi9cbmZ1bmN0aW9uIGV4Y2x1ZGVTeXN0ZW1UYWJsZXM8XG4gIFQgZXh0ZW5kcyBTZWxlY3RRdWVyeUJ1aWxkZXI8XG4gICAgRGF0YWJhc2UgJiB7IG5zOiBEYXRhYmFzZVtcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlXCJdOyBjbHM6IERhdGFiYXNlW1wicGdfY2F0YWxvZy5wZ19jbGFzc1wiXSB9LFxuICAgIFwibnNcIiB8IFwiY2xzXCIsXG4gICAgb2JqZWN0XG4gID4sXG4+KHFiOiBUKTogVCB7XG4gIHJldHVybiBxYi53aGVyZShgbnMubnNwbmFtZWAsIGAhfmAsIGBecGdfYCkud2hlcmUoYG5zLm5zcG5hbWVgLCBgIT1gLCBgaW5mb3JtYXRpb25fc2NoZW1hYCkgYXMgbmV2ZXI7XG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCIuL3Bvc3RncmVzLmQudHNcIiAvPlxuaW1wb3J0IHsgc3FsIH0gZnJvbSAnLi4vcmF3LWJ1aWxkZXIvc3FsLmpzJztcbi8qKlxuICogQSBwb3N0Z3JlcyBoZWxwZXIgZm9yIGFnZ3JlZ2F0aW5nIGEgc3VicXVlcnkgKG9yIG90aGVyIGV4cHJlc3Npb24pIGludG8gYSBKU09OQiBhcnJheS5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiA8IS0tIHNpdGVFeGFtcGxlKFwic2VsZWN0XCIsIFwiTmVzdGVkIGFycmF5XCIsIDExMCkgLS0+XG4gKlxuICogV2hpbGUga3lzZWx5IGlzIG5vdCBhbiBPUk0gYW5kIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdCBvZiByZWxhdGlvbnMsIHdlIGRvIHByb3ZpZGVcbiAqIGhlbHBlcnMgZm9yIGZldGNoaW5nIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMgaW4gYSBzaW5nbGUgcXVlcnkuIEluIHRoaXMgZXhhbXBsZSB3ZVxuICogdXNlIHRoZSBganNvbkFycmF5RnJvbWAgaGVscGVyIHRvIGZldGNoIHBlcnNvbidzIHBldHMgYWxvbmcgd2l0aCB0aGUgcGVyc29uJ3MgaWQuXG4gKlxuICogUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBoZWxwZXJzIHVuZGVyIHRoZSBga3lzZWx5L2hlbHBlcnNgIGZvbGRlciwgaW5jbHVkaW5nXG4gKiBganNvbkFycmF5RnJvbWAsIGFyZSBub3QgZ3VhcmFudGVlZCB0byB3b3JrIHdpdGggdGhpcmQgcGFydHkgZGlhbGVjdHMuIEluIG9yZGVyIGZvclxuICogdGhlbSB0byB3b3JrLCB0aGUgZGlhbGVjdCBtdXN0IGF1dG9tYXRpY2FsbHkgcGFyc2UgdGhlIGBqc29uYCBkYXRhIHR5cGUgaW50b1xuICogSmF2YVNjcmlwdCBKU09OIHZhbHVlcyBsaWtlIG9iamVjdHMgYW5kIGFycmF5cy4gU29tZSBkaWFsZWN0cyBtaWdodCBzaW1wbHkgcmV0dXJuXG4gKiB0aGUgZGF0YSBhcyBhIEpTT04gc3RyaW5nLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW4gYFBhcnNlSlNPTlJlc3VsdHNQbHVnaW5gXG4gKiB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbkFycmF5RnJvbSB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbkFycmF5RnJvbShcbiAqICAgICAgIGViLnNlbGVjdEZyb20oJ3BldCcpXG4gKiAgICAgICAgIC5zZWxlY3QoWydwZXQuaWQgYXMgcGV0X2lkJywgJ3BldC5uYW1lJ10pXG4gKiAgICAgICAgIC53aGVyZVJlZigncGV0Lm93bmVyX2lkJywgJz0nLCAncGVyc29uLmlkJylcbiAqICAgICAgICAgLm9yZGVyQnkoJ3BldC5uYW1lJylcbiAqICAgICApLmFzKCdwZXRzJylcbiAqICAgXSlcbiAqICAgLmV4ZWN1dGUoKVxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogc2VsZWN0IFwiaWRcIiwgKFxuICogICBzZWxlY3QgY29hbGVzY2UoanNvbl9hZ2coYWdnKSwgJ1tdJykgZnJvbSAoXG4gKiAgICAgc2VsZWN0IFwicGV0XCIuXCJpZFwiIGFzIFwicGV0X2lkXCIsIFwicGV0XCIuXCJuYW1lXCJcbiAqICAgICBmcm9tIFwicGV0XCJcbiAqICAgICB3aGVyZSBcInBldFwiLlwib3duZXJfaWRcIiA9IFwicGVyc29uXCIuXCJpZFwiXG4gKiAgICAgb3JkZXIgYnkgXCJwZXRcIi5cIm5hbWVcIlxuICogICApIGFzIGFnZ1xuICogKSBhcyBcInBldHNcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25BcnJheUZyb20oZXhwcikge1xuICAgIHJldHVybiBzcWwgYChzZWxlY3QgY29hbGVzY2UoanNvbl9hZ2coYWdnKSwgJ1tdJykgZnJvbSAke2V4cHJ9IGFzIGFnZylgO1xufVxuLyoqXG4gKiBBIHBvc3RncmVzIGhlbHBlciBmb3IgdHVybmluZyBhIHN1YnF1ZXJ5IChvciBvdGhlciBleHByZXNzaW9uKSBpbnRvIGEgSlNPTiBvYmplY3QuXG4gKlxuICogVGhlIHN1YnF1ZXJ5IG11c3Qgb25seSByZXR1cm4gb25lIHJvdy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiA8IS0tIHNpdGVFeGFtcGxlKFwic2VsZWN0XCIsIFwiTmVzdGVkIG9iamVjdFwiLCAxMjApIC0tPlxuICpcbiAqIFdoaWxlIGt5c2VseSBpcyBub3QgYW4gT1JNIGFuZCBpdCBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVsYXRpb25zLCB3ZSBkbyBwcm92aWRlXG4gKiBoZWxwZXJzIGZvciBmZXRjaGluZyBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzIGluIGEgc2luZ2xlIHF1ZXJ5LiBJbiB0aGlzIGV4YW1wbGUgd2VcbiAqIHVzZSB0aGUgYGpzb25PYmplY3RGcm9tYCBoZWxwZXIgdG8gZmV0Y2ggcGVyc29uJ3MgZmF2b3JpdGUgcGV0IGFsb25nIHdpdGggdGhlIHBlcnNvbidzIGlkLlxuICpcbiAqIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgaGVscGVycyB1bmRlciB0aGUgYGt5c2VseS9oZWxwZXJzYCBmb2xkZXIsIGluY2x1ZGluZ1xuICogYGpzb25PYmplY3RGcm9tYCwgYXJlIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsgd2l0aCB0aGlyZC1wYXJ0eSBkaWFsZWN0cy4gSW4gb3JkZXIgZm9yXG4gKiB0aGVtIHRvIHdvcmssIHRoZSBkaWFsZWN0IG11c3QgYXV0b21hdGljYWxseSBwYXJzZSB0aGUgYGpzb25gIGRhdGEgdHlwZSBpbnRvXG4gKiBKYXZhU2NyaXB0IEpTT04gdmFsdWVzIGxpa2Ugb2JqZWN0cyBhbmQgYXJyYXlzLiBTb21lIGRpYWxlY3RzIG1pZ2h0IHNpbXBseSByZXR1cm5cbiAqIHRoZSBkYXRhIGFzIGEgSlNPTiBzdHJpbmcuIEluIHRoZXNlIGNhc2VzIHlvdSBjYW4gdXNlIHRoZSBidWlsdCBpbiBgUGFyc2VKU09OUmVzdWx0c1BsdWdpbmBcbiAqIHRvIHBhcnNlIHRoZSByZXN1bHRzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqc29uT2JqZWN0RnJvbSB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbk9iamVjdEZyb20oXG4gKiAgICAgICBlYi5zZWxlY3RGcm9tKCdwZXQnKVxuICogICAgICAgICAuc2VsZWN0KFsncGV0LmlkIGFzIHBldF9pZCcsICdwZXQubmFtZSddKVxuICogICAgICAgICAud2hlcmVSZWYoJ3BldC5vd25lcl9pZCcsICc9JywgJ3BlcnNvbi5pZCcpXG4gKiAgICAgICAgIC53aGVyZSgncGV0LmlzX2Zhdm9yaXRlJywgJz0nLCB0cnVlKVxuICogICAgICkuYXMoJ2Zhdm9yaXRlX3BldCcpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChQb3N0Z3JlU1FMKTpcbiAqXG4gKiBgYGBzcWxcbiAqIHNlbGVjdCBcImlkXCIsIChcbiAqICAgc2VsZWN0IHRvX2pzb24ob2JqKSBmcm9tIChcbiAqICAgICBzZWxlY3QgXCJwZXRcIi5cImlkXCIgYXMgXCJwZXRfaWRcIiwgXCJwZXRcIi5cIm5hbWVcIlxuICogICAgIGZyb20gXCJwZXRcIlxuICogICAgIHdoZXJlIFwicGV0XCIuXCJvd25lcl9pZFwiID0gXCJwZXJzb25cIi5cImlkXCJcbiAqICAgICBhbmQgXCJwZXRcIi5cImlzX2Zhdm9yaXRlXCIgPSAkMVxuICogICApIGFzIG9ialxuICogKSBhcyBcImZhdm9yaXRlX3BldFwiXG4gKiBmcm9tIFwicGVyc29uXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbk9iamVjdEZyb20oZXhwcikge1xuICAgIHJldHVybiBzcWwgYChzZWxlY3QgdG9fanNvbihvYmopIGZyb20gJHtleHByfSBhcyBvYmopYDtcbn1cbi8qKlxuICogVGhlIFBvc3RncmVTUUwgYGpzb25fYnVpbGRfb2JqZWN0YCBmdW5jdGlvbi5cbiAqXG4gKiBOT1RFOiBUaGlzIGhlbHBlciBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gZnVsbHkgd29yayB3aXRoIHRoZSBidWlsdC1pbiBgUG9zdGdyZXNEaWFsZWN0YC5cbiAqIFdoaWxlIHRoZSBwcm9kdWNlZCBTUUwgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBQb3N0Z3JlU1FMIGRhdGFiYXNlcywgc29tZSB0aGlyZC1wYXJ0eSBkaWFsZWN0c1xuICogbWF5IG5vdCBwYXJzZSB0aGUgbmVzdGVkIEpTT04gaW50byBvYmplY3RzLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW5cbiAqIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYCB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc3FsIH0gZnJvbSAna3lzZWx5J1xuICogaW1wb3J0IHsganNvbkJ1aWxkT2JqZWN0IH0gZnJvbSAna3lzZWx5L2hlbHBlcnMvcG9zdGdyZXMnXG4gKlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZGJcbiAqICAgLnNlbGVjdEZyb20oJ3BlcnNvbicpXG4gKiAgIC5zZWxlY3QoKGViKSA9PiBbXG4gKiAgICAgJ2lkJyxcbiAqICAgICBqc29uQnVpbGRPYmplY3Qoe1xuICogICAgICAgZmlyc3Q6IGViLnJlZignZmlyc3RfbmFtZScpLFxuICogICAgICAgbGFzdDogZWIucmVmKCdsYXN0X25hbWUnKSxcbiAqICAgICAgIGZ1bGw6IHNxbDxzdHJpbmc+YGZpcnN0X25hbWUgfHxcdTAwQTAnICcgfHwgbGFzdF9uYW1lYFxuICogICAgIH0pLmFzKCduYW1lJylcbiAqICAgXSlcbiAqICAgLmV4ZWN1dGUoKVxuICpcbiAqIHJlc3VsdFswXT8uaWRcbiAqIHJlc3VsdFswXT8ubmFtZS5maXJzdFxuICogcmVzdWx0WzBdPy5uYW1lLmxhc3RcbiAqIHJlc3VsdFswXT8ubmFtZS5mdWxsXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgXCJpZFwiLCBqc29uX2J1aWxkX29iamVjdChcbiAqICAgJ2ZpcnN0JywgZmlyc3RfbmFtZSxcbiAqICAgJ2xhc3QnLCBsYXN0X25hbWUsXG4gKiAgICdmdWxsJywgZmlyc3RfbmFtZSB8fCAnICcgfHwgbGFzdF9uYW1lXG4gKiApIGFzIFwibmFtZVwiXG4gKiBmcm9tIFwicGVyc29uXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbkJ1aWxkT2JqZWN0KG9iaikge1xuICAgIHJldHVybiBzcWwgYGpzb25fYnVpbGRfb2JqZWN0KCR7c3FsLmpvaW4oT2JqZWN0LmtleXMob2JqKS5mbGF0TWFwKChrKSA9PiBbc3FsLmxpdChrKSwgb2JqW2tdXSkpfSlgO1xufVxuLyoqXG4gKiBUaGUgUG9zdGdyZVNRTCBgbWVyZ2VfYWN0aW9uYCBmdW5jdGlvbi5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgYHJldHVybmluZ2AgY2xhdXNlIHRvIGdldCB0aGUgYWN0aW9uIHRoYXQgd2FzXG4gKiBwZXJmb3JtZWQgaW4gYSBgbWVyZ2VJbnRvYCBxdWVyeS4gVGhlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmdcbiAqIHN0cmluZ3M6IGAnSU5TRVJUJ2AsIGAnVVBEQVRFJ2AsIG9yIGAnREVMRVRFJ2AuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1lcmdlQWN0aW9uIH0gZnJvbSAna3lzZWx5L2hlbHBlcnMvcG9zdGdyZXMnXG4gKlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZGJcbiAqICAgLm1lcmdlSW50bygncGVyc29uIGFzIHAnKVxuICogICAudXNpbmcoJ3BlcnNvbl9iYWNrdXAgYXMgcGInLCAncC5pZCcsICdwYi5pZCcpXG4gKiAgIC53aGVuTWF0Y2hlZCgpXG4gKiAgIC50aGVuVXBkYXRlU2V0KCh7IHJlZiB9KSA9PiAoe1xuICogICAgIGZpcnN0X25hbWU6IHJlZigncGIuZmlyc3RfbmFtZScpLFxuICogICAgIHVwZGF0ZWRfYXQ6IHJlZigncGIudXBkYXRlZF9hdCcpLiRjYXN0VG88c3RyaW5nIHwgbnVsbD4oKSxcbiAqICAgfSkpXG4gKiAgIC53aGVuTm90TWF0Y2hlZCgpXG4gKiAgIC50aGVuSW5zZXJ0VmFsdWVzKCh7IHJlZn0pID0+ICh7XG4gKiAgICAgaWQ6IHJlZigncGIuaWQnKSxcbiAqICAgICBmaXJzdF9uYW1lOiByZWYoJ3BiLmZpcnN0X25hbWUnKSxcbiAqICAgICBjcmVhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKSxcbiAqICAgICB1cGRhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKS4kY2FzdFRvPHN0cmluZyB8IG51bGw+KCksXG4gKiAgIH0pKVxuICogICAucmV0dXJuaW5nKFttZXJnZUFjdGlvbigpLmFzKCdhY3Rpb24nKSwgJ3AuaWQnLCAncC51cGRhdGVkX2F0J10pXG4gKiAgIC5leGVjdXRlKClcbiAqXG4gKiByZXN1bHRbMF0uYWN0aW9uXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBtZXJnZSBpbnRvIFwicGVyc29uXCIgYXMgXCJwXCJcbiAqIHVzaW5nIFwicGVyc29uX2JhY2t1cFwiIGFzIFwicGJcIiBvbiBcInBcIi5cImlkXCIgPSBcInBiXCIuXCJpZFwiXG4gKiB3aGVuIG1hdGNoZWQgdGhlbiB1cGRhdGUgc2V0XG4gKiAgIFwiZmlyc3RfbmFtZVwiID0gXCJwYlwiLlwiZmlyc3RfbmFtZVwiLFxuICogICBcInVwZGF0ZWRfYXRcIiA9IFwicGJcIi5cInVwZGF0ZWRfYXRcIjo6dGV4dFxuICogd2hlbiBub3QgbWF0Y2hlZCB0aGVuIGluc2VydCB2YWx1ZXMgKFwiaWRcIiwgXCJmaXJzdF9uYW1lXCIsIFwiY3JlYXRlZF9hdFwiLCBcInVwZGF0ZWRfYXRcIilcbiAqIHZhbHVlcyAoXCJwYlwiLlwiaWRcIiwgXCJwYlwiLlwiZmlyc3RfbmFtZVwiLCBcInBiXCIuXCJ1cGRhdGVkX2F0XCIsIFwicGJcIi5cInVwZGF0ZWRfYXRcIilcbiAqIHJldHVybmluZyBtZXJnZV9hY3Rpb24oKSBhcyBcImFjdGlvblwiLCBcInBcIi5cImlkXCIsIFwicFwiLlwidXBkYXRlZF9hdFwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQWN0aW9uKCkge1xuICAgIHJldHVybiBzcWwgYG1lcmdlX2FjdGlvbigpYDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O3NSQUFBQSxJQ0FBQyxJQ0FBQyxJQTZUTyxTQUFTQyxF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QSxPQUNBLFdBQ0EsUUFDQSxXQUNGLEVBS08sU0FBU0MsSUFBaUIsQ0FDL0IsSUFBTWhDLEVBQVNpQyxHQUFnQixFQUN6QixDQUFDLENBQUUsU0FBQTdCLENBQVMsQ0FBQyxFQUFJOEIsR0FBa0IsRUFHekMsT0FBTzdCLEdBQW9CLENBQUUsT0FBQUwsRUFBUSxTQUFBSSxFQUFVLE1BRmpDLENBQUUsV0FBWSxDQUFDLEVBQUcsSUFBSyxVQUFXLENBRUssQ0FBQyxDQWN4RCIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJjcmVhdGVBZGFwdGVyRXJyb3IiLCAiYXJncyIsICJlcnJvciIsICJxdWVyeSIsICJhZGFwdGVyRXJyb3IiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiUE9TVEdSRVNRTF9EQVRBX1RZUEVTX1RPX01FVEFEQVRBIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgIlJhd0J1aWxkZXJJbXBsIiwgIl9SYXdCdWlsZGVySW1wbCIsICIjcHJvcHMiLCAicHJvcHMiLCAiZnJlZXplIiwgImFsaWFzIiwgIkFsaWFzZWRSYXdCdWlsZGVySW1wbCIsICJwbHVnaW4iLCAiI3RvT3BlcmF0aW9uTm9kZSIsICIjZ2V0RXhlY3V0b3IiLCAiZXhlY3V0b3JQcm92aWRlciIsICIjY29tcGlsZSIsICJleGVjdXRvciIsICJOT09QX1FVRVJZX0VYRUNVVE9SIiwgImNyZWF0ZVJhd0J1aWxkZXIiLCAiI3Jhd0J1aWxkZXIiLCAiI2FsaWFzIiwgInJhd0J1aWxkZXIiLCAiQWxpYXNOb2RlIiwgImlzT3BlcmF0aW9uTm9kZVNvdXJjZSIsICJJZGVudGlmaWVyTm9kZSIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJzcWwiLCAic3FsRnJhZ21lbnRzIiwgInBhcmFtZXRlcnMiLCAiY3JlYXRlUmF3QnVpbGRlciIsICJjcmVhdGVRdWVyeUlkIiwgIlJhd05vZGUiLCAicGFyc2VQYXJhbWV0ZXIiLCAiY29sdW1uUmVmZXJlbmNlIiwgInBhcnNlU3RyaW5nUmVmZXJlbmNlIiwgInZhbHVlIiwgInBhcnNlVmFsdWVFeHByZXNzaW9uIiwgInRhYmxlUmVmZXJlbmNlIiwgInBhcnNlVGFibGUiLCAiaWRzIiwgImZyYWdtZW50cyIsICJJZGVudGlmaWVyTm9kZSIsICJWYWx1ZU5vZGUiLCAiYXJyYXkiLCAic2VwYXJhdG9yIiwgIm5vZGVzIiwgInNlcCIsICJpIiwgInBhcmFtIiwgImlzT3BlcmF0aW9uTm9kZVNvdXJjZSIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJPcGVyYXRpb25Ob2RlVmlzaXRvciIsICIjdmlzaXRvcnMiLCAiZnJlZXplIiwgIm5vZGUiLCAiTElUX1dSQVBfUkVHRVgiLCAiRGVmYXVsdFF1ZXJ5Q29tcGlsZXIiLCAiT3BlcmF0aW9uTm9kZVZpc2l0b3IiLCAiI3NxbCIsICIjcGFyYW1ldGVycyIsICJub2RlIiwgInF1ZXJ5SWQiLCAiZnJlZXplIiwgIndyYXBJblBhcmVucyIsICJQYXJlbnNOb2RlIiwgIkluc2VydFF1ZXJ5Tm9kZSIsICJDcmVhdGVUYWJsZU5vZGUiLCAiQ3JlYXRlVmlld05vZGUiLCAiU2V0T3BlcmF0aW9uTm9kZSIsICJleHByZXNzaW9ucyIsICJub2RlcyIsICJzZXBhcmF0b3IiLCAibGFzdEluZGV4IiwgImkiLCAicm9vdFF1ZXJ5Tm9kZSIsICJRdWVyeU5vZGUiLCAiaXNTdWJRdWVyeSIsICJNZXJnZVF1ZXJ5Tm9kZSIsICJsb2dPbmNlIiwgIl8iLCAiaXNTdHJpbmciLCAidmFsdWVzIiwgIkpPSU5fVFlQRV9TUUwiLCAic3FsRnJhZ21lbnRzIiwgInBhcmFtcyIsICJpc0Jvb2xlYW4iLCAiU0VMRUNUX01PRElGSUVSX1NRTCIsICJPcGVyYXRvck5vZGUiLCAicGF0aExlZyIsICJpc0FycmF5TG9jYXRpb24iLCAibGVuIiwgInN0ciIsICJwYXJhbWV0ZXIiLCAiaWRlbnRpZmllciIsICJsZWZ0V3JhcCIsICJyaWdodFdyYXAiLCAic2FuaXRpemVkIiwgImMiLCAidmFsdWUiLCAiaXNOdW1iZXIiLCAiaXNOdWxsIiwgImlzRGF0ZSIsICJpc0JpZ0ludCIsICJhcnIiLCAibGVmdCIsICJyaWdodCIsICJTRUxFQ1RfTU9ESUZJRVJfUFJJT1JJVFkiLCAiY29sdW1uQWx0ZXJhdGlvbnMiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiRGlhbGVjdEFkYXB0ZXJCYXNlIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgIklEX1dSQVBfUkVHRVgiLCAiUG9zdGdyZXNRdWVyeUNvbXBpbGVyIiwgIkRlZmF1bHRRdWVyeUNvbXBpbGVyIiwgImlkZW50aWZpZXIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiTE9DS19JRCIsICJQb3N0Z3Jlc0FkYXB0ZXIiLCAiRGlhbGVjdEFkYXB0ZXJCYXNlIiwgImRiIiwgIl9vcHQiLCAic3FsIiwgIl9kYiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJnZXRQb3N0Z3JlU1FMQnVpbGRlciIsICJyZXF1aXJlbWVudHMiLCAiZ2V0QnVpbGRlciIsICJQb3N0Z3Jlc0FkYXB0ZXIiLCAiUG9zdGdyZXNRdWVyeUNvbXBpbGVyIiwgImdldEluc2VydFF1ZXJ5IiwgImRldGFpbHMiLCAicmVxdWlyZW1lbnRzIiwgInRhYmxlIiwgInJvd3MiLCAidGFibGVOYW1lIiwgInNjaGVtYSIsICJjb2x1bW5zIiwgImJ1aWxkZXIiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAiY29scyIsICJlbXB0eVJvd1dvcmthcm91bmQiLCAic3FsIiwgImNvbXBpbGUiLCAicm93IiwgImViIiwgImdldFNlbGVjdFF1ZXJ5IiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImNvdW50UXVlcnkiLCAicWIiLCAiaXRlbSIsICJnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uIiwgImJ1aWxkQmFzZUV4cHJlc3Npb25CdWlsZGVyIiwgInNwZWMiLCAiY29sdW1uIiwgIm9wZXJhdG9yIiwgInZhbHVlIiwgImNvbHVtblJlZiIsICJsaHMiLCAiZmlsdGVycyIsICJvckdyb3Vwc09mQW5kQnVpbGRlcnMiLCAiY3VycmVudEFuZEdyb3VwQnVpbGRlcnMiLCAiaSIsICJhbmRFeHByZXNzaW9ucyIsICJncm91cCIsICJtb2NrU2VsZWN0UXVlcnkiLCAiZ2V0VXBkYXRlUXVlcnkiLCAiY2hhbmdlcyIsICJhcHBseUluZmVycmVkUm93RmlsdGVycyIsICJnZXREZWxldGVRdWVyeSIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJqc29uQXJyYXlGcm9tIiwgImV4cHIiLCAic3FsIiwgIlJFR1VMQVJfVEFCTEVfS0lORCIsICJWSUVXX1RBQkxFX0tJTkQiLCAiVEFCTEVfS0lORFMiLCAiZ2V0VGFibGVzUXVlcnkiLCAicmVxdWlyZW1lbnRzIiwgImNvbXBpbGUiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAiZXhjbHVkZVN5c3RlbVRhYmxlcyIsICJlYiIsICJqc29uQXJyYXlGcm9tIiwgImpiIiwgIm9uX2ViIiwgInNxbCIsICJtb2NrVGFibGVzUXVlcnkiLCAiZ2V0VGltZXpvbmVRdWVyeSIsICJidWlsZGVyIiwgIm1vY2tUaW1lem9uZVF1ZXJ5IiwgInFiIiwgImNyZWF0ZVBvc3RncmVzQWRhcHRlciIsICJyZXF1aXJlbWVudHMiLCAiZXhlY3V0b3IiLCAib3RoZXJSZXF1aXJlbWVudHMiLCAib3B0aW9ucyIsICJ0YWJsZXNRdWVyeSIsICJnZXRUYWJsZXNRdWVyeSIsICJ0aW1lem9uZVF1ZXJ5IiwgImdldFRpbWV6b25lUXVlcnkiLCAidGFibGVzRXJyb3IiLCAidGFibGVzIiwgInRpbWV6b25lRXJyb3IiLCAidGltZXpvbmVzIiwgImNyZWF0ZUFkYXB0ZXJFcnJvciIsICJ0aW1lem9uZSIsICJjcmVhdGVJbnRyb3NwZWN0aW9uIiwgImVycm9yIiwgImRldGFpbHMiLCAicXVlcnkiLCAiZ2V0U2VsZWN0UXVlcnkiLCAicmVzdWx0cyIsICJnZXRJbnNlcnRRdWVyeSIsICJyb3dzIiwgImdldFVwZGF0ZVF1ZXJ5IiwgInJvdyIsICJnZXREZWxldGVRdWVyeSIsICJhcmdzIiwgInJlc3VsdCIsICJzY2hlbWFzIiwgImNvbHVtbnMiLCAidGFibGVOYW1lIiwgInNjaGVtYSIsICJjb2x1bW5zUmVjb3JkIiwgImNvbHVtbiIsICJkYXRhdHlwZSIsICJkYXRhdHlwZV9zY2hlbWEiLCAiY29sdW1uTmFtZSIsICJudWxsYWJsZSIsICJpc0FycmF5IiwgInN0cmlwcGVkRGF0YVR5cGUiLCAiUE9TVEdSRVNRTF9EQVRBX1RZUEVTX1RPX01FVEFEQVRBIiwgImZpbHRlck9wZXJhdG9ycyIsICJtb2NrSW50cm9zcGVjdCIsICJtb2NrVGFibGVzUXVlcnkiLCAibW9ja1RpbWV6b25lUXVlcnkiXQp9Cg==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var p=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var l=(a,b)=>()=>(a&&(b=a(a=0)),b);var q=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),r=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},m=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var s=(a,b,c)=>(c=a!=null?g(j(a)):{},m(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));var v,o=l(()=>{v={postgres:{encoded:"ZGF0YXNvdXJjZSBkYiB7CiAgICBwcm92aWRlciA9ICJwb3N0Z3JlcyIKICAgIHVybCAgICAgID0gZW52KCJEQVRBQkFTRV9VUkwiKQp9CiAgICAKZ2VuZXJhdG9yIGNsaWVudCB7CiAgICBwcm92aWRlciA9ICJwcmlzbWEtY2xpZW50LWpzIgp9",hash:"54195896aeafa3318ca33f5a8bb44c6b4d89c368cb15288f3bd5ace35a3f9227"}}});export{p as a,q as b,r as c,s as d,o as e,v as f};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPGRlZmluZTpBQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUj4iXSwKICAic291cmNlc0NvbnRlbnQiOiBbIiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7OzIxQkFBQSxJQUFBQSxFQUFBQyxFQUFBQyxFQUFBLEtBQUFGLEVBQUEsQ0FBQyxTQUFXLENBQUMsUUFBVSwyTEFBMkwsS0FBTyxrRUFBa0UsQ0FBQyIsCiAgIm5hbWVzIjogWyJkZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVJfZGVmYXVsdCIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJfX2VzbU1pbiJdCn0K
|