sonamu 0.7.21 → 0.7.23
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/ai/agents/agent.d.ts +6 -1
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +20 -5
- package/dist/api/base-frame.d.ts +4 -0
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/base-frame.js +9 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +2 -2
- package/dist/api/config.d.ts +35 -3
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/decorators.d.ts +4 -4
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +80 -18
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -1
- package/dist/api/secret.d.ts +7 -0
- package/dist/api/secret.d.ts.map +1 -0
- package/dist/api/secret.js +17 -0
- package/dist/api/sonamu.d.ts +17 -8
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +265 -47
- package/dist/cache/cache-manager.d.ts +11 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +22 -0
- package/dist/cache/decorator.d.ts +31 -0
- package/dist/cache/decorator.d.ts.map +1 -0
- package/dist/cache/decorator.js +86 -0
- package/dist/cache/drivers.d.ts +33 -0
- package/dist/cache/drivers.d.ts.map +1 -0
- package/dist/cache/drivers.js +36 -0
- package/dist/cache/index.d.ts +4 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +8 -0
- package/dist/cache/types.d.ts +28 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +6 -0
- package/dist/database/base-model.d.ts +4 -2
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +9 -4
- package/dist/database/code-generator.d.ts +3 -1
- package/dist/database/code-generator.d.ts.map +1 -1
- package/dist/database/code-generator.js +3 -2
- package/dist/database/db.d.ts +1 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +5 -5
- package/dist/database/knex.d.ts +3 -0
- package/dist/database/knex.d.ts.map +1 -0
- package/dist/database/knex.js +29 -0
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +49 -5
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/logger/category.d.ts +4 -0
- package/dist/logger/category.d.ts.map +1 -0
- package/dist/logger/category.js +34 -0
- package/dist/logger/configure.d.ts +9 -0
- package/dist/logger/configure.d.ts.map +1 -0
- package/dist/logger/configure.js +115 -0
- package/dist/migration/code-generation.d.ts +5 -1
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +13 -7
- package/dist/migration/migrator.d.ts +1 -1
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +7 -7
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +5 -3
- package/dist/naite/naite.d.ts +0 -4
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +11 -19
- package/dist/ssr/index.d.ts +4 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +4 -0
- package/dist/ssr/registry.d.ts +10 -0
- package/dist/ssr/registry.d.ts.map +1 -0
- package/dist/ssr/registry.js +43 -0
- package/dist/ssr/renderer.d.ts +6 -0
- package/dist/ssr/renderer.d.ts.map +1 -0
- package/dist/ssr/renderer.js +70 -0
- package/dist/ssr/types.d.ts +19 -0
- package/dist/ssr/types.d.ts.map +1 -0
- package/dist/ssr/types.js +4 -0
- package/dist/syncer/syncer.d.ts +1 -0
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +58 -1
- package/dist/tasks/decorator.d.ts +1 -0
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +9 -7
- package/dist/tasks/step-wrapper.d.ts +5 -0
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +11 -6
- package/dist/tasks/workflow-manager.d.ts +2 -0
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +5 -2
- package/dist/template/implementations/entry-server.template.d.ts +17 -0
- package/dist/template/implementations/entry-server.template.d.ts.map +1 -0
- package/dist/template/implementations/entry-server.template.js +78 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +5 -3
- package/dist/template/implementations/queries.template.d.ts +17 -0
- package/dist/template/implementations/queries.template.d.ts.map +1 -0
- package/dist/template/implementations/queries.template.js +83 -0
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_select.template.js +34 -20
- package/dist/template/implementations/view_form.template.d.ts +2 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +301 -129
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_async_select.template.js +136 -57
- package/dist/template/implementations/view_list.template.d.ts +2 -0
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +392 -227
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +46 -30
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +2 -2
- package/dist/testing/bootstrap.d.ts +28 -0
- package/dist/testing/bootstrap.d.ts.map +1 -0
- package/dist/testing/bootstrap.js +120 -0
- package/dist/testing/fixture-loader.d.ts +21 -0
- package/dist/testing/fixture-loader.d.ts.map +1 -0
- package/dist/testing/fixture-loader.js +28 -0
- package/dist/testing/fixture-manager.d.ts +1 -1
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +7 -7
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/naite-vitest-reporter.d.ts +12 -0
- package/dist/testing/naite-vitest-reporter.d.ts.map +1 -0
- package/dist/testing/naite-vitest-reporter.js +17 -0
- package/dist/types/types.d.ts +5 -6
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +7 -8
- package/dist/ui/ai-client.d.ts +3 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +27 -8
- package/dist/ui-web/assets/index-CTYv3qL6.js +92 -0
- package/dist/ui-web/index.html +1 -1
- package/package.json +43 -20
- package/src/ai/agents/agent.ts +38 -19
- package/src/api/base-frame.ts +8 -0
- package/src/api/caster.ts +6 -1
- package/src/api/config.ts +38 -4
- package/src/api/decorators.ts +106 -20
- package/src/api/index.ts +1 -0
- package/src/api/secret.ts +23 -0
- package/src/api/sonamu.ts +334 -61
- package/src/cache/cache-manager.ts +23 -0
- package/src/cache/decorator.ts +116 -0
- package/src/cache/drivers.ts +42 -0
- package/src/cache/index.ts +16 -0
- package/src/cache/types.ts +32 -0
- package/src/database/base-model.ts +7 -3
- package/src/database/code-generator.ts +3 -1
- package/src/database/db.ts +5 -5
- package/src/database/knex.ts +34 -0
- package/src/database/puri.types.ts +2 -3
- package/src/database/upsert-builder.ts +58 -4
- package/src/index.ts +4 -0
- package/src/logger/category.ts +42 -0
- package/src/logger/configure.ts +132 -0
- package/src/migration/code-generation.ts +19 -6
- package/src/migration/migrator.ts +7 -6
- package/src/migration/postgresql-schema-reader.ts +7 -2
- package/src/naite/naite.ts +10 -18
- package/src/shared/web.shared.ts.txt +1 -1
- package/src/ssr/index.ts +13 -0
- package/src/ssr/registry.ts +52 -0
- package/src/ssr/renderer.ts +105 -0
- package/src/ssr/types.ts +20 -0
- package/src/syncer/syncer.ts +59 -0
- package/src/tasks/decorator.ts +20 -4
- package/src/tasks/step-wrapper.ts +14 -5
- package/src/tasks/workflow-manager.ts +9 -1
- package/src/template/implementations/entry-server.template.ts +81 -0
- package/src/template/implementations/model.template.ts +4 -2
- package/src/template/implementations/queries.template.ts +111 -0
- package/src/template/implementations/view_enums_select.template.ts +33 -19
- package/src/template/implementations/view_form.template.ts +324 -145
- package/src/template/implementations/view_id_async_select.template.ts +145 -56
- package/src/template/implementations/view_list.template.ts +446 -236
- package/src/template/implementations/view_search_input.template.ts +45 -29
- package/src/template/zod-converter.ts +4 -1
- package/src/testing/bootstrap.ts +176 -0
- package/src/testing/fixture-loader.ts +28 -0
- package/src/testing/fixture-manager.ts +7 -6
- package/src/testing/index.ts +3 -0
- package/src/testing/naite-vitest-reporter.ts +18 -0
- package/src/types/types.ts +4 -5
- package/src/ui/ai-client.ts +82 -50
- package/dist/template/implementations/view_enums_dropdown.template.d.ts +0 -17
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +0 -1
- package/dist/template/implementations/view_enums_dropdown.template.js +0 -50
- package/dist/ui-web/assets/index-B87IyofX.js +0 -92
- package/src/template/implementations/view_enums_dropdown.template.ts +0 -53
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAU3D,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC;IAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IAEZ,kBAAkB,wCAA+C;IAEjE,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7D,qBAAqB,IAAI,kBAAkB;IAIlD,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAgC5B,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM;IA2BnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvB,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,cAAc;IAsDlE,eAAe,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAQ;IACjD,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAKlD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAIzC;AACD,eAAO,MAAM,EAAE,SAAgB,CAAC"}
|
package/dist/database/db.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
-
import knex from "knex";
|
|
3
2
|
import { assign } from "radashi";
|
|
4
3
|
import { Sonamu } from "../api/index.js";
|
|
4
|
+
import { createKnexInstance } from "./knex.js";
|
|
5
5
|
import { TransactionContext } from "./transaction-context.js";
|
|
6
6
|
/**
|
|
7
7
|
* 여러 설정 객체를 순차적으로 deep merge합니다.
|
|
@@ -28,7 +28,7 @@ export class DBClass {
|
|
|
28
28
|
} else if (this.wdb) {
|
|
29
29
|
return this.wdb;
|
|
30
30
|
} else {
|
|
31
|
-
this.wdb =
|
|
31
|
+
this.wdb = createKnexInstance({
|
|
32
32
|
...dbConfig.test,
|
|
33
33
|
// 단일 풀
|
|
34
34
|
pool: {
|
|
@@ -42,7 +42,7 @@ export class DBClass {
|
|
|
42
42
|
const instanceName = which === "w" ? "wdb" : "rdb";
|
|
43
43
|
if (!this[instanceName]) {
|
|
44
44
|
const config = this.getDBConfig(which);
|
|
45
|
-
this[instanceName] =
|
|
45
|
+
this[instanceName] = createKnexInstance(config);
|
|
46
46
|
}
|
|
47
47
|
return this[instanceName];
|
|
48
48
|
}
|
|
@@ -80,7 +80,7 @@ export class DBClass {
|
|
|
80
80
|
}
|
|
81
81
|
generateDBConfig(config) {
|
|
82
82
|
const defaultKnexConfig = assign({
|
|
83
|
-
client: "
|
|
83
|
+
client: "postgresql",
|
|
84
84
|
pool: {
|
|
85
85
|
min: 1,
|
|
86
86
|
max: 5
|
|
@@ -130,4 +130,4 @@ export class DBClass {
|
|
|
130
130
|
}
|
|
131
131
|
export const DB = new DBClass();
|
|
132
132
|
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCJhc3luY19ob29rc1wiO1xuaW1wb3J0IGtuZXgsIHsgdHlwZSBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb25maWcsIFNvbmFtdUNvbmZpZyB9IGZyb20gXCIuLi9hcGkvY29uZmlnXCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1jb250ZXh0XCI7XG5cbi8qKlxuICog7Jes65+sIOyEpOyglSDqsJ3ssrTrpbwg7Iic7LCo7KCB7Jy866GcIGRlZXAgbWVyZ2Xtlanri4jri6QuXG4gKiB1bmRlZmluZWQvbnVsbOyduCDsnbjsnpDripQg66y07Iuc65Cp64uI64ukLlxuICovXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3M8VCBleHRlbmRzIG9iamVjdD4oLi4uY29uZmlnczogKFBhcnRpYWw8VD4gfCB1bmRlZmluZWQgfCBudWxsKVtdKTogVCB7XG4gIHJldHVybiBjb25maWdzLnJlZHVjZTxUPigoYWNjLCBjb25maWcpID0+IChjb25maWcgPyBhc3NpZ24oYWNjLCBjb25maWcgYXMgVCkgOiBhY2MpLCB7fSBhcyBUKTtcbn1cblxuZXhwb3J0IHR5cGUgREJQcmVzZXQgPSBcIndcIiB8IFwiclwiO1xuXG5leHBvcnQgdHlwZSBTb25hbXVEQkNvbmZpZyA9IHtcbiAgZGV2ZWxvcG1lbnRfbWFzdGVyOiBLbmV4LkNvbmZpZztcbiAgZGV2ZWxvcG1lbnRfc2xhdmU6IEtuZXguQ29uZmlnO1xuICBwcm9kdWN0aW9uX21hc3RlcjogS25leC5Db25maWc7XG4gIHByb2R1Y3Rpb25fc2xhdmU6IEtuZXguQ29uZmlnO1xuICBmaXh0dXJlOiBLbmV4LkNvbmZpZztcbiAgdGVzdDogS25leC5Db25maWc7XG59O1xuXG5leHBvcnQgY2xhc3MgREJDbGFzcyB7XG4gIHByaXZhdGUgd2RiPzogS25leDtcbiAgcHJpdmF0ZSByZGI/OiBLbmV4O1xuXG4gIHB1YmxpYyB0cmFuc2FjdGlvblN0b3JhZ2UgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VHJhbnNhY3Rpb25Db250ZXh0PigpO1xuXG4gIHB1YmxpYyBydW5XaXRoVHJhbnNhY3Rpb248VD4oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UucnVuKG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQ29udGV4dCgpOiBUcmFuc2FjdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpID8/IG5ldyBUcmFuc2FjdGlvbkNvbnRleHQoKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIGNvbnN0IGRiQ29uZmlnID0gU29uYW11LmRiQ29uZmlnO1xuXG4gICAgLy8g7YWM7Iqk7Yq4IO2KuOuenOyereyFmCDqsqnrpqxcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICBpZiAodGhpcy50ZXN0VHJhbnNhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVzdFRyYW5zYWN0aW9uO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndkYikge1xuICAgICAgICByZXR1cm4gdGhpcy53ZGI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndkYiA9IGtuZXgoe1xuICAgICAgICAgIC4uLmRiQ29uZmlnLnRlc3QsXG4gICAgICAgICAgLy8g64uo7J28IO2SgFxuICAgICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHdoaWNoID09PSBcIndcIiA/IFwid2RiXCIgOiBcInJkYlwiO1xuXG4gICAgaWYgKCF0aGlzW2luc3RhbmNlTmFtZV0pIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0REJDb25maWcod2hpY2gpO1xuICAgICAgdGhpc1tpbnN0YW5jZU5hbWVdID0ga25leChjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzW2luc3RhbmNlTmFtZV07XG4gIH1cblxuICBnZXREQkNvbmZpZyh3aGljaDogREJQcmVzZXQpOiBLbmV4LkNvbmZpZyB7XG4gICAgY29uc3QgZGJDb25maWcgPSBTb25hbXUuZGJDb25maWc7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGJDb25maWcudGVzdCxcbiAgICAgICAgLy8g64uo7J28IO2SgFxuICAgICAgICBwb29sOiB7XG4gICAgICAgICAgbWluOiAxLFxuICAgICAgICAgIG1heDogMSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHN3aXRjaCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPz8gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICBjYXNlIFwiZGV2ZWxvcG1lbnRcIjpcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICA/IGRiQ29uZmlnLmRldmVsb3BtZW50X21hc3RlclxuICAgICAgICAgIDogKGRiQ29uZmlnLmRldmVsb3BtZW50X3NsYXZlID8/IGRiQ29uZmlnLmRldmVsb3BtZW50X21hc3Rlcik7XG4gICAgICBjYXNlIFwicHJvZHVjdGlvblwiOlxuICAgICAgICByZXR1cm4gd2hpY2ggPT09IFwid1wiXG4gICAgICAgICAgPyBkYkNvbmZpZy5wcm9kdWN0aW9uX21hc3RlclxuICAgICAgICAgIDogKGRiQ29uZmlnLnByb2R1Y3Rpb25fc2xhdmUgPz8gZGJDb25maWcucHJvZHVjdGlvbl9tYXN0ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDtmITsnqwgRU5WICR7cHJvY2Vzcy5lbnYuTk9ERV9FTlZ97JeQ64qUIOyEpOyglSDqsIDriqXtlZwgRELshKTsoJXsnbQg7JeG7Iq164uI64ukLmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2RiICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RiLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMud2RiID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlREJDb25maWcoY29uZmlnOiBTb25hbXVDb25maWdbXCJkYXRhYmFzZVwiXSk6IFNvbmFtdURCQ29uZmlnIHtcbiAgICBjb25zdCBkZWZhdWx0S25leENvbmZpZzogUGFydGlhbDxEYXRhYmFzZUNvbmZpZz4gPSBhc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBwb29sOiB7XG4gICAgICAgICAgbWluOiAxLFxuICAgICAgICAgIG1heDogNSxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgIGRpcmVjdG9yeTogXCIuL3NyYy9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICBkYXRhYmFzZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgLi4uY29uZmlnLmRlZmF1bHRPcHRpb25zPy5jb25uZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbmZpZy5kZWZhdWx0T3B0aW9ucyxcbiAgICApO1xuXG4gICAgLy8gYmlvbWUtaWdub3JlIGZvcm1hdDog7ISk7KCVIOq1rOyhsCDqsIDrj4XshLHsnYQg7JyE7ZW0IOyXrOufrCDspITroZwg7Jyg7KeAXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIOyXrOq4sOyXkCDrgpjsl7TtlZwg7Iic7ISc64yA66GcIFNvbmFtdSBVSeydmCBEQiBNaWdyYXRpb24g7YOt7JeQIO2RnOyLnOuQqeuLiOuLpC5cbiAgICAgIHRlc3Q6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsIFxuICAgICAgICB7IGNvbm5lY3Rpb246IHsgZGF0YWJhc2U6IGAke2NvbmZpZy5uYW1lfV90ZXN0YCB9IH0sXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LnRlc3RcbiAgICAgICksXG4gICAgICBmaXh0dXJlOiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLCBcbiAgICAgICAgeyBjb25uZWN0aW9uOiB7IGRhdGFiYXNlOiBgJHtjb25maWcubmFtZX1fZml4dHVyZWAgfSB9LFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5maXh0dXJlLFxuICAgICAgKSxcbiAgICAgIGRldmVsb3BtZW50X21hc3RlcjogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZywgXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LmRldmVsb3BtZW50XG4gICAgICApLFxuICAgICAgZGV2ZWxvcG1lbnRfc2xhdmU6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LmRldmVsb3BtZW50LFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudF9zbGF2ZSxcbiAgICAgICksXG4gICAgICBwcm9kdWN0aW9uX21hc3RlcjogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZywgXG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudHM/LnByb2R1Y3Rpb25cbiAgICAgICksXG4gICAgICBwcm9kdWN0aW9uX3NsYXZlOiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5wcm9kdWN0aW9uLFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5wcm9kdWN0aW9uX3NsYXZlLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gVGVzdCDtmZjqsr3sl5DshJwg7Yq4656c7J6t7IWYIOyCrOyaqVxuICBwdWJsaWMgdGVzdFRyYW5zYWN0aW9uOiBLbmV4LlRyYW5zYWN0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGFzeW5jIGNyZWF0ZVRlc3RUcmFuc2FjdGlvbigpOiBQcm9taXNlPEtuZXguVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gYXdhaXQgZGIudHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy50ZXN0VHJhbnNhY3Rpb247XG4gIH1cbiAgYXN5bmMgY2xlYXJUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50ZXN0VHJhbnNhY3Rpb24/LnJvbGxiYWNrKCk7XG4gICAgdGhpcy50ZXN0VHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG4gIGFzeW5jIGdldFRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8S25leD4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgcmV0dXJuIGRiO1xuICB9XG59XG5leHBvcnQgY29uc3QgREIgPSBuZXcgREJDbGFzcygpO1xuIl0sIm5hbWVzIjpbIkFzeW5jTG9jYWxTdG9yYWdlIiwia25leCIsImFzc2lnbiIsIlNvbmFtdSIsIlRyYW5zYWN0aW9uQ29udGV4dCIsIm1lcmdlQ29uZmlncyIsImNvbmZpZ3MiLCJyZWR1Y2UiLCJhY2MiLCJjb25maWciLCJEQkNsYXNzIiwid2RiIiwicmRiIiwidHJhbnNhY3Rpb25TdG9yYWdlIiwicnVuV2l0aFRyYW5zYWN0aW9uIiwiY2FsbGJhY2siLCJydW4iLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJnZXRTdG9yZSIsImdldERCIiwid2hpY2giLCJkYkNvbmZpZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInRlc3RUcmFuc2FjdGlvbiIsInRlc3QiLCJwb29sIiwibWluIiwibWF4IiwiaW5zdGFuY2VOYW1lIiwiZ2V0REJDb25maWciLCJkZXZlbG9wbWVudF9tYXN0ZXIiLCJkZXZlbG9wbWVudF9zbGF2ZSIsInByb2R1Y3Rpb25fbWFzdGVyIiwicHJvZHVjdGlvbl9zbGF2ZSIsIkVycm9yIiwiZGVzdHJveSIsInVuZGVmaW5lZCIsImdlbmVyYXRlREJDb25maWciLCJkZWZhdWx0S25leENvbmZpZyIsImNsaWVudCIsIm1pZ3JhdGlvbnMiLCJkaXJlY3RvcnkiLCJjb25uZWN0aW9uIiwiZGF0YWJhc2UiLCJuYW1lIiwiZGVmYXVsdE9wdGlvbnMiLCJlbnZpcm9ubWVudHMiLCJmaXh0dXJlIiwiZGV2ZWxvcG1lbnQiLCJwcm9kdWN0aW9uIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicm9sbGJhY2siLCJnZXRUZXN0Q29ubmVjdGlvbiIsIkRCIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxpQkFBaUIsUUFBUSxjQUFjO0FBQ2hELE9BQU9DLFVBQXlCLE9BQU87QUFDdkMsU0FBU0MsTUFBTSxRQUFRLFVBQVU7QUFFakMsU0FBU0Ms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
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCJhc3luY19ob29rc1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29uZmlnLCBTb25hbXVDb25maWcgfSBmcm9tIFwiLi4vYXBpL2NvbmZpZ1wiO1xuaW1wb3J0IHsgY3JlYXRlS25leEluc3RhbmNlIH0gZnJvbSBcIi4va25leFwiO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tY29udGV4dFwiO1xuXG4vKipcbiAqIOyXrOufrCDshKTsoJUg6rCd7LK066W8IOyInOywqOyggeycvOuhnCBkZWVwIG1lcmdl7ZWp64uI64ukLlxuICogdW5kZWZpbmVkL251bGzsnbgg7J247J6Q64qUIOustOyLnOuQqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VDb25maWdzPFQgZXh0ZW5kcyBvYmplY3Q+KC4uLmNvbmZpZ3M6IChQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkIHwgbnVsbClbXSk6IFQge1xuICByZXR1cm4gY29uZmlncy5yZWR1Y2U8VD4oKGFjYywgY29uZmlnKSA9PiAoY29uZmlnID8gYXNzaWduKGFjYywgY29uZmlnIGFzIFQpIDogYWNjKSwge30gYXMgVCk7XG59XG5cbmV4cG9ydCB0eXBlIERCUHJlc2V0ID0gXCJ3XCIgfCBcInJcIjtcblxuZXhwb3J0IHR5cGUgU29uYW11REJDb25maWcgPSB7XG4gIGRldmVsb3BtZW50X21hc3RlcjogS25leC5Db25maWc7XG4gIGRldmVsb3BtZW50X3NsYXZlOiBLbmV4LkNvbmZpZztcbiAgcHJvZHVjdGlvbl9tYXN0ZXI6IEtuZXguQ29uZmlnO1xuICBwcm9kdWN0aW9uX3NsYXZlOiBLbmV4LkNvbmZpZztcbiAgZml4dHVyZTogS25leC5Db25maWc7XG4gIHRlc3Q6IEtuZXguQ29uZmlnO1xufTtcblxuZXhwb3J0IGNsYXNzIERCQ2xhc3Mge1xuICBwcml2YXRlIHdkYj86IEtuZXg7XG4gIHByaXZhdGUgcmRiPzogS25leDtcblxuICBwdWJsaWMgdHJhbnNhY3Rpb25TdG9yYWdlID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRyYW5zYWN0aW9uQ29udGV4dD4oKTtcblxuICBwdWJsaWMgcnVuV2l0aFRyYW5zYWN0aW9uPFQ+KGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25TdG9yYWdlLnJ1bihuZXcgVHJhbnNhY3Rpb25Db250ZXh0KCksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkNvbnRleHQoKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKSA/PyBuZXcgVHJhbnNhY3Rpb25Db250ZXh0KCk7XG4gIH1cblxuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZztcblxuICAgIC8vIO2FjOyKpO2KuCDtirjrnpzsnq3shZgg6rKp66asXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgaWYgKHRoaXMudGVzdFRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RUcmFuc2FjdGlvbjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53ZGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53ZGIgPSBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgICAgIC4uLmRiQ29uZmlnLnRlc3QsXG4gICAgICAgICAgLy8g64uo7J28IO2SgFxuICAgICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHdoaWNoID09PSBcIndcIiA/IFwid2RiXCIgOiBcInJkYlwiO1xuXG4gICAgaWYgKCF0aGlzW2luc3RhbmNlTmFtZV0pIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0REJDb25maWcod2hpY2gpO1xuICAgICAgdGhpc1tpbnN0YW5jZU5hbWVdID0gY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNbaW5zdGFuY2VOYW1lXTtcbiAgfVxuXG4gIGdldERCQ29uZmlnKHdoaWNoOiBEQlByZXNldCk6IEtuZXguQ29uZmlnIHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYkNvbmZpZy50ZXN0LFxuICAgICAgICAvLyDri6jsnbwg7ZKAXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgc3dpdGNoIChwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgIGNhc2UgXCJkZXZlbG9wbWVudFwiOlxuICAgICAgY2FzZSBcInN0YWdpbmdcIjpcbiAgICAgICAgcmV0dXJuIHdoaWNoID09PSBcIndcIlxuICAgICAgICAgID8gZGJDb25maWcuZGV2ZWxvcG1lbnRfbWFzdGVyXG4gICAgICAgICAgOiAoZGJDb25maWcuZGV2ZWxvcG1lbnRfc2xhdmUgPz8gZGJDb25maWcuZGV2ZWxvcG1lbnRfbWFzdGVyKTtcbiAgICAgIGNhc2UgXCJwcm9kdWN0aW9uXCI6XG4gICAgICAgIHJldHVybiB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICA/IGRiQ29uZmlnLnByb2R1Y3Rpb25fbWFzdGVyXG4gICAgICAgICAgOiAoZGJDb25maWcucHJvZHVjdGlvbl9zbGF2ZSA/PyBkYkNvbmZpZy5wcm9kdWN0aW9uX21hc3Rlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYO2YhOyerCBFTlYgJHtwcm9jZXNzLmVudi5OT0RFX0VOVn3sl5DripQg7ISk7KCVIOqwgOuKpe2VnCBEQuyEpOygleydtCDsl4bsirXri4jri6QuYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53ZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy53ZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy53ZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnJkYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJkYi5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJkYiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEQkNvbmZpZyhjb25maWc6IFNvbmFtdUNvbmZpZ1tcImRhdGFiYXNlXCJdKTogU29uYW11REJDb25maWcge1xuICAgIGNvbnN0IGRlZmF1bHRLbmV4Q29uZmlnOiBQYXJ0aWFsPERhdGFiYXNlQ29uZmlnPiA9IGFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY2xpZW50OiBcInBvc3RncmVzcWxcIixcbiAgICAgICAgcG9vbDoge1xuICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICBtYXg6IDUsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICBkaXJlY3Rvcnk6IFwiLi9zcmMvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IGNvbmZpZy5uYW1lLFxuICAgICAgICAgIC4uLmNvbmZpZy5kZWZhdWx0T3B0aW9ucz8uY29ubmVjdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb25maWcuZGVmYXVsdE9wdGlvbnMsXG4gICAgKTtcblxuICAgIC8vIGJpb21lLWlnbm9yZSBmb3JtYXQ6IOyEpOyglSDqtazsobAg6rCA64+F7ISx7J2EIOychO2VtCDsl6zrn6wg7KSE66GcIOycoOyngFxuICAgIHJldHVybiB7XG4gICAgICAvLyDsl6zquLDsl5Ag64KY7Je07ZWcIOyInOyEnOuMgOuhnCBTb25hbXUgVUnsnZggREIgTWlncmF0aW9uIO2DreyXkCDtkZzsi5zrkKnri4jri6QuXG4gICAgICB0ZXN0OiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLCBcbiAgICAgICAgeyBjb25uZWN0aW9uOiB7IGRhdGFiYXNlOiBgJHtjb25maWcubmFtZX1fdGVzdGAgfSB9LFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy50ZXN0XG4gICAgICApLFxuICAgICAgZml4dHVyZTogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZywgXG4gICAgICAgIHsgY29ubmVjdGlvbjogeyBkYXRhYmFzZTogYCR7Y29uZmlnLm5hbWV9X2ZpeHR1cmVgIH0gfSxcbiAgICAgICAgY29uZmlnLmVudmlyb25tZW50cz8uZml4dHVyZSxcbiAgICAgICksXG4gICAgICBkZXZlbG9wbWVudF9tYXN0ZXI6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsIFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudFxuICAgICAgKSxcbiAgICAgIGRldmVsb3BtZW50X3NsYXZlOiBtZXJnZUNvbmZpZ3MoXG4gICAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudCxcbiAgICAgICAgY29uZmlnLmVudmlyb25tZW50cz8uZGV2ZWxvcG1lbnRfc2xhdmUsXG4gICAgICApLFxuICAgICAgcHJvZHVjdGlvbl9tYXN0ZXI6IG1lcmdlQ29uZmlncyhcbiAgICAgICAgZGVmYXVsdEtuZXhDb25maWcsIFxuICAgICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5wcm9kdWN0aW9uXG4gICAgICApLFxuICAgICAgcHJvZHVjdGlvbl9zbGF2ZTogbWVyZ2VDb25maWdzKFxuICAgICAgICBkZWZhdWx0S25leENvbmZpZyxcbiAgICAgICAgY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbixcbiAgICAgICAgY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbl9zbGF2ZSxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRlc3Qg7ZmY6rK97JeQ7IScIO2KuOuenOyereyFmCDsgqzsmqlcbiAgcHVibGljIHRlc3RUcmFuc2FjdGlvbjogS25leC5UcmFuc2FjdGlvbiB8IG51bGwgPSBudWxsO1xuICBhc3luYyBjcmVhdGVUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTxLbmV4LlRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwid1wiKTtcbiAgICB0aGlzLnRlc3RUcmFuc2FjdGlvbiA9IGF3YWl0IGRiLnRyYW5zYWN0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMudGVzdFRyYW5zYWN0aW9uO1xuICB9XG4gIGFzeW5jIGNsZWFyVGVzdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudGVzdFRyYW5zYWN0aW9uPy5yb2xsYmFjaygpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfVxuICBhc3luYyBnZXRUZXN0Q29ubmVjdGlvbigpOiBQcm9taXNlPEtuZXg+IHtcbiAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIHJldHVybiBkYjtcbiAgfVxufVxuZXhwb3J0IGNvbnN0IERCID0gbmV3IERCQ2xhc3MoKTtcbiJdLCJuYW1lcyI6WyJBc3luY0xvY2FsU3RvcmFnZSIsImFzc2lnbiIsIlNvbmFtdSIsImNyZWF0ZUtuZXhJbnN0YW5jZSIsIlRyYW5zYWN0aW9uQ29udGV4dCIsIm1lcmdlQ29uZmlncyIsImNvbmZpZ3MiLCJyZWR1Y2UiLCJhY2MiLCJjb25maWciLCJEQkNsYXNzIiwid2RiIiwicmRiIiwidHJhbnNhY3Rpb25TdG9yYWdlIiwicnVuV2l0aFRyYW5zYWN0aW9uIiwiY2FsbGJhY2siLCJydW4iLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJnZXRTdG9yZSIsImdldERCIiwid2hpY2giLCJkYkNvbmZpZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInRlc3RUcmFuc2FjdGlvbiIsInRlc3QiLCJwb29sIiwibWluIiwibWF4IiwiaW5zdGFuY2VOYW1lIiwiZ2V0REJDb25maWciLCJkZXZlbG9wbWVudF9tYXN0ZXIiLCJkZXZlbG9wbWVudF9zbGF2ZSIsInByb2R1Y3Rpb25fbWFzdGVyIiwicHJvZHVjdGlvbl9zbGF2ZSIsIkVycm9yIiwiZGVzdHJveSIsInVuZGVmaW5lZCIsImdlbmVyYXRlREJDb25maWciLCJkZWZhdWx0S25leENvbmZpZyIsImNsaWVudCIsIm1pZ3JhdGlvbnMiLCJkaXJlY3RvcnkiLCJjb25uZWN0aW9uIiwiZGF0YWJhc2UiLCJuYW1lIiwiZGVmYXVsdE9wdGlvbnMiLCJlbnZpcm9ubWVudHMiLCJmaXh0dXJlIiwiZGV2ZWxvcG1lbnQiLCJwcm9kdWN0aW9uIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicm9sbGJhY2siLCJnZXRUZXN0Q29ubmVjdGlvbiIsIkRCIl0sIm1hcHBpbmdzIjoi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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../src/database/knex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CA8B5D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import knex from "knex";
|
|
2
|
+
export function createKnexInstance(config) {
|
|
3
|
+
config.pool = {
|
|
4
|
+
...config.pool ?? {},
|
|
5
|
+
propagateCreateError: false,
|
|
6
|
+
idleTimeoutMillis: 10000,
|
|
7
|
+
reapIntervalMillis: 1000,
|
|
8
|
+
acquireTimeoutMillis: 30000,
|
|
9
|
+
createTimeoutMillis: 30000,
|
|
10
|
+
afterCreate: (conn, done)=>{
|
|
11
|
+
conn.on("error", (err)=>{
|
|
12
|
+
Object.defineProperty(conn, "__knex__disposed", {
|
|
13
|
+
value: err,
|
|
14
|
+
writable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
enumerable: true
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
done(null, conn);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const knexInstance = knex(config);
|
|
23
|
+
knexInstance.client.validateConnection = (connection)=>{
|
|
24
|
+
return typeof connection === "object" && connection !== null && !("__knex__disposed" in connection);
|
|
25
|
+
};
|
|
26
|
+
return knexInstance;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9rbmV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQga25leCBmcm9tIFwia25leFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZzogS25leC5Db25maWcpOiBLbmV4IHtcbiAgY29uZmlnLnBvb2wgPSB7XG4gICAgLi4uKGNvbmZpZy5wb29sID8/IHt9KSxcbiAgICBwcm9wYWdhdGVDcmVhdGVFcnJvcjogZmFsc2UsXG4gICAgaWRsZVRpbWVvdXRNaWxsaXM6IDEwMDAwLFxuICAgIHJlYXBJbnRlcnZhbE1pbGxpczogMTAwMCxcbiAgICBhY3F1aXJlVGltZW91dE1pbGxpczogMzAwMDAsXG4gICAgY3JlYXRlVGltZW91dE1pbGxpczogMzAwMDAsXG4gICAgYWZ0ZXJDcmVhdGU6ICgoY29ubjogS25leC5DbGllbnQsIGRvbmU6IChlcnI6IEVycm9yIHwgbnVsbCwgY29ubjogS25leC5DbGllbnQpID0+IHZvaWQpID0+IHtcbiAgICAgIGNvbm4ub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29ubiwgXCJfX2tuZXhfX2Rpc3Bvc2VkXCIsIHtcbiAgICAgICAgICB2YWx1ZTogZXJyLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkb25lKG51bGwsIGNvbm4pO1xuICAgIH0pIHNhdGlzZmllcyBLbmV4LlBvb2xDb25maWdbXCJhZnRlckNyZWF0ZVwiXSxcbiAgfTtcblxuICBjb25zdCBrbmV4SW5zdGFuY2UgPSBrbmV4KGNvbmZpZyk7XG4gIGtuZXhJbnN0YW5jZS5jbGllbnQudmFsaWRhdGVDb25uZWN0aW9uID0gKGNvbm5lY3Rpb246IHVua25vd24pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIGNvbm5lY3Rpb24gPT09IFwib2JqZWN0XCIgJiYgY29ubmVjdGlvbiAhPT0gbnVsbCAmJiAhKFwiX19rbmV4X19kaXNwb3NlZFwiIGluIGNvbm5lY3Rpb24pXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4ga25leEluc3RhbmNlO1xufVxuIl0sIm5hbWVzIjpbImtuZXgiLCJjcmVhdGVLbmV4SW5zdGFuY2UiLCJjb25maWciLCJwb29sIiwicHJvcGFnYXRlQ3JlYXRlRXJyb3IiLCJpZGxlVGltZW91dE1pbGxpcyIsInJlYXBJbnRlcnZhbE1pbGxpcyIsImFjcXVpcmVUaW1lb3V0TWlsbGlzIiwiY3JlYXRlVGltZW91dE1pbGxpcyIsImFmdGVyQ3JlYXRlIiwiY29ubiIsImRvbmUiLCJvbiIsImVyciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJrbmV4SW5zdGFuY2UiLCJjbGllbnQiLCJ2YWxpZGF0ZUNvbm5lY3Rpb24iLCJjb25uZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFDQSxPQUFPQSxVQUFVLE9BQU87QUFFeEIsT0FBTyxTQUFTQyxtQkFBbUJDLE1BQW1CO0lBQ3BEQSxPQUFPQyxJQUFJLEdBQUc7UUFDWixHQUFJRCxPQUFPQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3JCQyxzQkFBc0I7UUFDdEJDLG1CQUFtQjtRQUNuQkMsb0JBQW9CO1FBQ3BCQyxzQkFBc0I7UUFDdEJDLHFCQUFxQjtRQUNyQkMsYUFBYyxDQUFDQyxNQUFtQkM7WUFDaENELEtBQUtFLEVBQUUsQ0FBQyxTQUFTLENBQUNDO2dCQUNoQkMsT0FBT0MsY0FBYyxDQUFDTCxNQUFNLG9CQUFvQjtvQkFDOUNNLE9BQU9IO29CQUNQSSxVQUFVO29CQUNWQyxjQUFjO29CQUNkQyxZQUFZO2dCQUNkO1lBQ0Y7WUFFQVIsS0FBSyxNQUFNRDtRQUNiO0lBQ0Y7SUFFQSxNQUFNVSxlQUFlcEIsS0FBS0U7SUFDMUJrQixhQUFhQyxNQUFNLENBQUNDLGtCQUFrQixHQUFHLENBQUNDO1FBQ3hDLE9BQ0UsT0FBT0EsZUFBZSxZQUFZQSxlQUFlLFFBQVEsQ0FBRSxDQUFBLHNCQUFzQkEsVUFBUztJQUU5RjtJQUVBLE9BQU9IO0FBQ1QifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Puri.types.ts는 다양한 타입을 사용하고 있습니다. */ export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBQdXJpLnR5cGVzLnRz64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUZvcmVpZ25LZXlzLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHR5cGUgeyBQdXJpU3Vic2V0Rm4gfSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g64K067aAIO2DgOyehSDtgqQgKOuplO2DgOuNsOydtO2EsClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50eXBlIEZ1bGx0ZXh0S2V5ID0gXCJfX2Z1bGx0ZXh0X19cIjtcbnR5cGUgVmlydHVhbEtleSA9IFwiX192aXJ0dWFsX19cIjtcbnR5cGUgTGVmdEpvaW5lZEtleSA9IFwiX19sZWZ0Sm9pbmVkX19cIjtcbnR5cGUgSGFzRGVmYXVsdCA9IFwiX19oYXNEZWZhdWx0X19cIjtcbnR5cGUgR2VuZXJhdGVkS2V5ID0gXCJfX2dlbmVyYXRlZF9fXCI7XG50eXBlIFZlY3RvcktleSA9IFwiX192ZWN0b3JfX1wiO1xuXG50eXBlIEludGVybmFsVHlwZUtleXMgPVxuICB8IEZ1bGx0ZXh0S2V5XG4gIHwgVmlydHVhbEtleVxuICB8IExlZnRKb2luZWRLZXlcbiAgfCBIYXNEZWZhdWx0XG4gIHwgR2VuZXJhdGVkS2V5XG4gIHwgVmVjdG9yS2V5O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g7YOA7J6FIOycoO2LuOumrO2LsFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gX192ZWN0b3JfXyDrqZTtg4DrjbDsnbTthLDsl5DshJwg67Kh7YSwIOy7rOufvCDstpTstpxcbnR5cGUgVmVjdG9yQ29sdW1uS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIFZlY3RvcktleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH1cbiAgPyBWICYgc3RyaW5nXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFZlY3RvckNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7VmVjdG9yQ29sdW1uS2V5czxUVGFibGVzW1RBbGlhc10+fWA7XG4gICAgfVtrZXlvZiBUVGFibGVzXVxuICB8IChJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWUgPyBWZWN0b3JDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IDogbmV2ZXIpO1xuXG4vLyDthYzsnbTruJTrqoUg7YOA7J6FXG5leHBvcnQgdHlwZSBUYWJsZU5hbWU8VFNjaGVtYT4gPSBrZXlvZiBUU2NoZW1hICYgc3RyaW5nO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDtg4DsnoUg7LaU7LacXG50eXBlIFZpcnR1YWxLZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmlydHVhbEtleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH0gPyBWICYgc3RyaW5nIDogbmV2ZXI7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsFxudHlwZSBTdHJpcFZpcnR1YWw8VD4gPSBPbWl0PFQsIFZpcnR1YWxLZXlzPFQ+PjtcblxuLy8gTEVGVCBKT0lOIOuniOy7pCAtIG51bGxhYmxlIEZL66GcIOyhsOyduOuQnCDthYzsnbTruJRcbi8vIOydtCDrp4jsu6TripQgbnVsbGFibGUgRksgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxuLy8gam9pbiArIEZLIG51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBudWxsYWJsZSAtPiDrtpnsnYwhXG5leHBvcnQgdHlwZSBMZWZ0Sm9pbmVkTWFya2VyID0geyBbSyBpbiBMZWZ0Sm9pbmVkS2V5XTogdHJ1ZSB9O1xuXG4vLyDrqZTtg4DrjbDsnbTthLAg7ZWE65OcIOygnOyZuO2VnCDsi6TsoJwg7JeU7Yuw7YuwIOy7rOufvFxuZXhwb3J0IHR5cGUgQ29sdW1uS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgU3RyaXBWaXJ0dWFsPFQ+LCBJbnRlcm5hbFR5cGVLZXlzPiAmIHN0cmluZztcblxuLy8gdmlydHVhbCDsu6zrn7wg7KCc6rGwIO2bhCBfX2Z1bGx0ZXh0X18g7Jyg7KeAXG5leHBvcnQgdHlwZSBQdXJpVGFibGU8VD4gPSBPbWl0PFN0cmlwVmlydHVhbDxUPiwgVmlydHVhbEtleT47XG5cbi8vIOuCtOu2gCDtg4DsnoUg7YKkIOygnOyZuCAo7Iuk7KCcIOy7rOufvOunjCDrgqjquYApXG5leHBvcnQgdHlwZSBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiA9IE9taXQ8VCwgSW50ZXJuYWxUeXBlS2V5cz47XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIOy7rOufvCDqsr3roZxcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7Q29sdW1uS2V5czxUVGFibGVzW1RBbGlhc10+fWA7XG4gICAgfVtrZXlvZiBUVGFibGVzXVxuICB8IChJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICAgID8gQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiAvLyDri6jsnbwg7YWM7J2067iU7J2066m0IOy7rOufvOuqheunjOuPhCDtl4jsmqlcbiAgICAgIDogbmV2ZXIpO1xuXG4vLyDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpztlZjripQg7Jyg7Yu466as7YuwIO2DgOyehVxudHlwZSBOdW1lcmljQ29sdW1uS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgfCBudWxsIHwgdW5kZWZpbmVkID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXSAmXG4gIHN0cmluZztcblxuLy8gVFRhYmxlc+ydmCDrqqjrk6Ag7YWM7J2067iU7JeQ7IScIOyIq+yekCDtg4DsnoUg7Lus65+866eMIOy2lOy2nFxuZXhwb3J0IHR5cGUgTnVtZXJpY0NvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7TnVtZXJpY0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IE51bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IC8vIOuLqOydvCDthYzsnbTruJTsnbTrqbQg7Lus65+866qF66eM64+EIO2XiOyaqVxuICAgICAgOiBuZXZlcik7XG5cbi8vIEdyb3VwIEJ5LCBPcmRlciBCeSwgSGF2aW5nIOuTseyXkOyEnCDshKDtg50g6rCA64ql7ZWcIOy7rOufvFxuZXhwb3J0IHR5cGUgUmVzdWx0QXZhaWxhYmxlQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgVFJlc3VsdCA9IGFueT4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBgJHtrZXlvZiBUUmVzdWx0ICYgc3RyaW5nfWA7XG5cbi8vIFNlbGVjdCDqsJIg7YOA7J6FIO2ZleyepSAo64uo7J28IOy7rOufvCDrmJDripQgU1FMIO2RnO2YhOyLnSlcbmV4cG9ydCB0eXBlIFNlbGVjdFZhbHVlPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPlxuICB8IFNxbEV4cHJlc3Npb248XCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiZGF0ZVwiIHwgXCJzdHJpbmdbXVwiPjtcblxuLy8g7KSR7LKpIFNlbGVjdCDqsJ3ssrQg7YOA7J6FICjsnqzqt4DsoIEpXG4vLyDsmIg6IHsgcGFyZW50OiB7IGlkOiBcInBhcmVudC5pZFwiLCBuYW1lOiBcInBhcmVudC5uYW1lXCIgfSB9XG5leHBvcnQgdHlwZSBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBba2V5OiBzdHJpbmddOiBTZWxlY3RWYWx1ZTxUVGFibGVzPiB8IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcbn07XG5cbi8vIFNlbGVjdCDqsJ3ssrQg7YOA7J6FIChmbGF0IOuYkOuKlCDspJHssqkg7ZeI7JqpKVxuZXhwb3J0IHR5cGUgU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcblxuLy8g6rCS7J20IOykkeyyqSDqsJ3ssrTsnbjsp4Ag7YyQ67OE7ZWY64qUIO2XrO2NvCDtg4DsnoVcbnR5cGUgSXNOZXN0ZWRPYmplY3Q8VD4gPSBUIGV4dGVuZHMgc3RyaW5nXG4gID8gZmFsc2VcbiAgOiBUIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxhbnk+XG4gICAgPyBmYWxzZVxuICAgIDogVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcblxuLy8g7Lus65+87J20IG51bGxhYmxl7J247KeAIO2ZleyduCAo7Iqk7YKk66eI7JeQ7IScIOyngeygkSDstpTstpwpXG4vLyDsmIg6IElzTnVsbGFibGVDb2x1bW48VFRhYmxlcywgXCJlbXBsb3llZXMuZGVwYXJ0bWVudF9pZFwiPiDihpIgZGVwYXJ0bWVudF9pZOqwgCBudW1iZXIgfCBudWxs7J2066m0IHRydWVcbmV4cG9ydCB0eXBlIElzTnVsbGFibGVDb2x1bW48XG4gIFRUYWJsZXMsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IG51bGwgZXh0ZW5kcyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl1cbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbi8vIEZLIG51bGxhYmxlIOyXrOu2gOyXkCDrlLDrpbgg66eI7LukIO2DgOyehSDqsrDsoJVcbi8vIG51bGxhYmxlIEZL66GcIGxlZnRKb2luIOKGkiBMZWZ0Sm9pbmVkTWFya2VyICjqsJ3ssrQg7J6Q7LK06rCAIG51bGzsnbwg7IiYIOyeiOydjClcbi8vIG5vbi1udWxsIEZL66GcIGxlZnRKb2luIOKGkiDrp4jsu6Qg7JeG7J2MICjrtoDrqqjqsIAg7J6I7Jy866m0IOyekOyLneuPhCDrsJjrk5zsi5wg7J6I7J2MKVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5NYXJrZXJGb3I8VFRhYmxlcywgUGF0aCBleHRlbmRzIHN0cmluZz4gPSBJc051bGxhYmxlQ29sdW1uPFxuICBUVGFibGVzLFxuICBQYXRoXG4+IGV4dGVuZHMgdHJ1ZVxuICA/IExlZnRKb2luZWRNYXJrZXJcbiAgOiB7fTtcblxuLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeuhnCBsZWZ0Sm9pbiDrkJwg7YWM7J2067iU7J247KeAIO2ZleyduO2VqeuLiOuLpC5cbi8vIOyCrOyLpCBMZWZ0Sm9pbk1hcmtlcuqwgCDrtpnsl4jripTsp4Ag7ZmV7J247ZWY64qU6rKMIOuLpOyeheuLiOuLpC5cbi8vIOydtCDrp4jsu6TripQgRksgbnVsbGFibGUgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxudHlwZSBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgVGFibGVLZXk+ID0gVGFibGVLZXkgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gID8gVFRhYmxlc1tUYWJsZUtleV0gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgPyB0cnVlIC8vIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IG51bGxhYmxlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyDqsr3roZwg7KGw7ZWpIO2XrO2NvCAocHJlZml46rCAIOyXhuycvOuptCBrZXnrp4wsIOyeiOycvOuptCBwcmVmaXhfX2tleSlcbnR5cGUgSm9pblBhdGg8UHJlZml4IGV4dGVuZHMgc3RyaW5nLCBLZXkgZXh0ZW5kcyBzdHJpbmc+ID0gUHJlZml4IGV4dGVuZHMgXCJcIlxuICA/IEtleVxuICA6IGAke1ByZWZpeH1fXyR7S2V5fWA7XG5cbi8vIFNlbGVjdCDqsrDqs7wg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDsuZzqtazsnoXri4jri6QuXG4vLyDsnbQg7YOA7J6F7J2AIFB1cmnsnZggc2VsZWN0LCBhcHBlbmRTZWxlY3Tsl5DshJwgVFJlc3VsdOuhnCDsgqzsmqnrkKnri4jri6QuXG4vL1xuLy8gU2NoZW1h66W8IOydveyWtOyEnCBGS+ydmCBudWxsYWJpbGl0eeyXkCDrlLDrnbwgam9pbuuQnCDqsJ3ssrTsnZgg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDquLDriqXsnbQg7J6I7Iq164uI64ukLlxuLy8g7J206rKMIOustOyKqCDshozrpqzrg5A/IEZL6rCAIG51bGxhYmxl7J24642wIGxlZnRKb2lu65CY7JeI64uk66m0LCDtlbTri7kg6rCd7LK064qUIG51bGxhYmxlIO2VtOyVvCDtlajsnYQg7YOA7J6FIOy2lOuhoOycvOuhnCDrsJjsmIHtlbTspIDri6TripQg6rKD7J6F64uI64ukLlxuLy8g67CY66m0IEZL6rCAIG5vbi1udWxsYWJsZeydtOqxsOuCmCDqt7jrg6Ugam9pbuycvOuhnCDsnbTslrTsoYzri6TrqbQg7ZW064u5IOqwneyytOuKlCBub24tbnVsbGFibGXtlaAg6rKB64uI64ukLlxuLy8g66y866GgIOqwneyytCDrgrTrtoDsnZggbnVsbGFiaWxpdHnripQg65iQIOuzhOqwnOuhnCDstpTroaDrkKnri4jri6QuXG4vL1xuLy8g7JWE656Y7JeQ64+EIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGjrpbwg67mE66Gv7ZW0IEV4dHJhY3RDb2x1bW5UeXBlLCBFeHRyYWN0Q29sdW1uVHlwZVJhdyDrk7HsnZgg7YOA7J6F7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOuTpOydmCDsl63tlaDsnYAg64uk7J2M6rO8IOqwmeyKteuLiOuLpDpcbi8vIC0gUGFyc2UqOiDqsJ3ssrQg66CI67Ko7JeQ7IScIOykkeyyqSDqtazsobDrpbwg7Iic7ZqM7ZWY66mwIOqwneyytOyXkCB8IG51bGzsnYQg67aZ7J287KeAIOqysOygle2VqeuLiOuLpC5cbi8vIC0gRXh0cmFjdCo6IO2VhOuTnCDroIjrsqjsl5DshJwgXCJ0YWJsZS5jb2x1bW5cIiDqsr3roZzroZzrtoDthLAg7Iuk7KCcIO2DgOyeheydhCDstpTstpztlanri4jri6QuXG4vL1xuLy8g7JiI7IucOlxuLy8gLnNlbGVjdCh7XG4vLyAgIGlkOiBcInVzZXJzLmlkXCIsICAgICAgICAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGXsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgZGVwYXJ0bWVudDogeyAgICAgICAgICAgICAvLyDihpAgUGFyc2VTZWxlY3RPYmplY3RJbm5lcuyXkCDsnZjtlbQgbnVsbGFibGUg6rCd7LK066GcIOy2lOuhoOuQqeuLiOuLpC5cbi8vICAgICBpZDogXCJkZXBhcnRtZW50LmlkXCIsICAgIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgbnVtYmVy7J6F64uI64ukLlxuLy8gICAgIG5hbWU6IFwiZGVwYXJ0bWVudC5uYW1lXCIgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBlUmF37J2YIOqysOqzvOuKlCBzdHJpbmfsnoXri4jri6QuXG4vLyAgIH1cbi8vIH0pXG5leHBvcnQgdHlwZSBQYXJzZVNlbGVjdE9iamVjdDxcbiAgVFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFRTZWxlY3QgZXh0ZW5kcyBTZWxlY3RPYmplY3Q8VFRhYmxlcz4sXG4+ID0gUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aDxUVGFibGVzLCBUU2VsZWN0LCBcIlwiPjtcblxuLy8g6rK966Gc66W8IOy2lOygge2VmOuptOyEnCBTZWxlY3Qg6rKw6rO8IO2DgOyeheydhCDstpTroaDtlanri4jri6QuXG50eXBlIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGg8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuICBQcmVmaXggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gRXhwYW5kPHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFI+XG4gICAgPyBSIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogUiBleHRlbmRzIFwibnVtYmVyXCJcbiAgICAgICAgPyBudW1iZXJcbiAgICAgICAgOiBSIGV4dGVuZHMgXCJib29sZWFuXCJcbiAgICAgICAgICA/IGJvb2xlYW5cbiAgICAgICAgICA6IFIgZXh0ZW5kcyBcImRhdGVcIlxuICAgICAgICAgICAgPyBEYXRlXG4gICAgICAgICAgICA6IFIgZXh0ZW5kcyBcInN0cmluZ1tdXCJcbiAgICAgICAgICAgICAgPyBzdHJpbmdbXVxuICAgICAgICAgICAgICA6IG5ldmVyXG4gICAgOiBJc05lc3RlZE9iamVjdDxUU2VsZWN0W0tdPiBleHRlbmRzIHRydWVcbiAgICAgID8gVFNlbGVjdFtLXSBleHRlbmRzIE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPlxuICAgICAgICA/IElzTnVsbGFibGVKb2luZWRUYWJsZTxUVGFibGVzLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+PiBleHRlbmRzIHRydWUgLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeyXkCBsZWZ0Sm9pbuuQmOyXiOuKlOyngCDsl6zrtoDsl5Ag65Sw6528IHNlbGVjdCDqsrDqs7wg6rCd7LK07J2YIO2DgOyeheydtCDri6zrnbzsp5Hri4jri6QuXG4gICAgICAgICAgPyBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gfCBudWxsIC8vIOunjOyVvSDtlbTri7ntlZzri6TrqbQg7ZW064u5IOqwneyytCDsnpDssrTripQgbnVsbGFibGUg7ZWY66mwLFxuICAgICAgICAgIDogRXhwYW5kPFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4+IC8vIOq3uOugh+yngCDslYrri6TrqbQgbm9uLW51bGxhYmxlIO2VqeuLiOuLpC5cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjtcbn0+O1xuXG4vLyDspJHssqkg6rCd7LK0IOuCtOu2gOyaqSAtIGxlZnRKb2luIG51bGxhYmxl7J2EIOqwneyytCDroIjrsqjsl5DshJwg7J2066+4IOyymOumrO2WiOycvOuvgOuhnCDtlYTrk5zripQg7JuQ67O4IO2DgOyeheydhCDsgqzsmqntlanri4jri6QuXG4vLyBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRo7JmAIOqxsOydmCDrj5nsnbztlZjrgpgsIOuniOyngOunieyXkCBFeHRyYWN0Q29sdW1uVHlwZSDrjIDsi6AgRXh0cmFjdENvbHVtblR5cGVSYXfrpbwg7IKs7Jqp7ZWY7JesXG4vLyDtlYTrk5wg66CI67Ko7JeQ7IScIOykkeuzteycvOuhnCB8IG51bGzsnbQg7LaU6rCA65CY64qUIOqyg+ydhCDrsKnsp4Dtlanri4jri6QuXG50eXBlIFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuICBQcmVmaXggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gRXhwYW5kPHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFI+XG4gICAgPyBSIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogUiBleHRlbmRzIFwibnVtYmVyXCJcbiAgICAgICAgPyBudW1iZXJcbiAgICAgICAgOiBSIGV4dGVuZHMgXCJib29sZWFuXCJcbiAgICAgICAgICA/IGJvb2xlYW5cbiAgICAgICAgICA6IFIgZXh0ZW5kcyBcImRhdGVcIlxuICAgICAgICAgICAgPyBEYXRlXG4gICAgICAgICAgICA6IFIgZXh0ZW5kcyBcInN0cmluZ1tdXCJcbiAgICAgICAgICAgICAgPyBzdHJpbmdbXVxuICAgICAgICAgICAgICA6IG5ldmVyXG4gICAgOiBJc05lc3RlZE9iamVjdDxUU2VsZWN0W0tdPiBleHRlbmRzIHRydWVcbiAgICAgID8gVFNlbGVjdFtLXSBleHRlbmRzIE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPlxuICAgICAgICA/IElzTnVsbGFibGVKb2luZWRUYWJsZTxUVGFibGVzLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+PiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiB8IG51bGxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PlxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IEV4dHJhY3RDb2x1bW5UeXBlUmF3PFRUYWJsZXMsIFRTZWxlY3RbS10gJiBzdHJpbmc+OyAvLyBsZWZ0Sm9pbiBudWxsYWJsZSDrrLTsi5xcbn0+O1xuXG4vLyDsu6zrn7wg6rK966Gc7JeQ7IScIO2DgOyeheydhCDstpTstpztlanri4jri6QuIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IHwgbnVsbOydhCDstpTqsIDtlanri4jri6QuXG4vLyDstZzsg4HsnIQgc2VsZWN0IO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuXG5leHBvcnQgdHlwZSBFeHRyYWN0Q29sdW1uVHlwZTxcbiAgVFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIExlZnRKb2luZWRNYXJrZXJcbiAgICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gfCBudWxsIC8vIExFRlQgSk9JTiAobnVsbGFibGUgRkspIOKGkiBudWxsYWJsZVxuICAgICAgICA6IFRUYWJsZXNbVEFsaWFzXVtUQ29sdW1uXSAvLyBJTk5FUiBKT0lOIOuYkOuKlCBub24tbnVsbCBGSyBsZWZ0Sm9pbiDihpIgbm9uLW51bGxhYmxlXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlclxuICA6IElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8vIOy7rOufvCDqsr3roZzsl5DshJwg7YOA7J6F7J2EIOy2lOy2nO2VqeuLiOuLpC4gbGVmdEpvaW4g7Jes67aA7JmAIOq0gOqzhOyXhuydtCDsm5Drs7gg7YOA7J6F7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbi8vIOykkeyyqSDqsJ3ssrQg64K067aAIO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuICjqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCB8IG51bGwg7LKY66as6rCAIOyZhOujjOuQmOyXiOycvOuvgOuhnClcbnR5cGUgRXh0cmFjdENvbHVtblR5cGVSYXc8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gLy8gbGVmdEpvaW4g7Jes67aA7JmAIOq0gOqzhOyXhuydtCDsm5Drs7gg7YOA7J6FXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlclxuICA6IElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8vIFdoZXJlIOyhsOqxtCDqsJ3ssrQg7YOA7J6FXG4vLyDsmIg6IHsgXCJ1LmlkXCI6IDEsIFwidS5zdGF0dXNcIjogXCJhY3RpdmVcIiB9XG5leHBvcnQgdHlwZSBXaGVyZUNvbmRpdGlvbjxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSB7XG4gIFtrZXkgaW4gQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPl0/OiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBrZXkgJiBzdHJpbmc+O1xufTtcblxuLy8gRnVsbHRleHQgaW5kZXgg7Lus65+8IOy2lOy2nCDtg4DsnoVcbmV4cG9ydCB0eXBlIEZ1bGx0ZXh0Q29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSB7XG4gIFtUQWxpYXMgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIHtcbiAgICBbSyBpbiBGdWxsdGV4dEtleV06IHJlYWRvbmx5IChpbmZlciBDb2wpW107XG4gIH1cbiAgICA/IENvbCBleHRlbmRzIHN0cmluZ1xuICAgICAgPyBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7Q29sfWBcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBUVGFibGVzXTtcblxuLy8g67mE6rWQIOyXsOyCsOyekFxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk9wZXJhdG9yID0gXCI9XCIgfCBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiIHwgXCI8PlwiIHwgXCIhPVwiO1xuLy8g7KGw6rG0IOyXsOyCsOyekDog67mE6rWQIOyXsOyCsOyekCArIO2MqO2EtCDrp6Tsua0g7Jew7IKw7J6QXG5leHBvcnQgdHlwZSBXaGVyZU9wZXJhdG9yID0gQ29tcGFyaXNvbk9wZXJhdG9yIHwgXCJsaWtlXCIgfCBcIm5vdCBsaWtlXCI7XG5cbi8vIFNRTCBFeHByZXNzaW9uIO2DgOyehSDsoJXsnZhcbmV4cG9ydCB0eXBlIFNxbEV4cHJlc3Npb248VCBleHRlbmRzIFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIj4gPSB7XG4gIF90eXBlOiBcInNxbF9leHByZXNzaW9uXCI7IC8vIOuYkOuKlCBcImNvbXB1dGVkX3ZhbHVlXCJcbiAgX3JldHVybjogVDtcbiAgX3NxbDogc3RyaW5nO1xufTtcblxuLy8g6rKw6rO8IO2DgOyehSDqsIDrj4XshLHsnYQg7JyE7ZWcIO2DgOyehSDtmZXsnqVcbmV4cG9ydCB0eXBlIEV4cGFuZDxUPiA9IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW0sgaW4ga2V5b2YgVFswXV06IFRbMF1bS10gfVtdIC8vIOuwsOyXtOydtOuptCDssqsg67KI7Ke4IOyalOyGjOulvCBFeHBhbmTtlZjqs6Ag67Cw7Je066GcIOqwkOyMiFxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gfVxuICAgIDogVDtcblxudHlwZSBJc1NpbmdsZUtleTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBrZXlvZiBUVGFibGVzIGV4dGVuZHMgaW5mZXIgS1xuICA/IEsgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBrZXlvZiBUVGFibGVzIGV4dGVuZHMgSyAvLyDsl63rsKntlqUg7LK07YGs66GcIOuLqOydvCDtgqQg7ZmV7J24XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbmV4cG9ydCB0eXBlIFNpbmdsZVRhYmxlVmFsdWU8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXSA6IG5ldmVyO1xuXG4vLyBfX2hhc0RlZmF1bHRfX+yXkCDtj6ztlajrkJwg7YKk65Ok7J2EIFB1cmlUYWJsZTxUPuydmCDtgqTroZwg7KCc7ZWcXG50eXBlIEhhc0RlZmF1bHRLZXlzPFQ+ID0gVCBleHRlbmRzIHsgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IChpbmZlciBLKVtdIH1cbiAgPyBFeHRyYWN0PEssIGtleW9mIFB1cmlUYWJsZTxUPj5cbiAgOiBuZXZlcjtcblxuLy8gX19nZW5lcmF0ZWRfX+yXkCDtj6ztlajrkJwg7YKk65OkIChJTlNFUlQg7IucIOygnOyZuO2VtOyVvCDtlagpXG50eXBlIEdlbmVyYXRlZEtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX2dlbmVyYXRlZF9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIEluc2VydCDtg4DsnoU6IOuplO2DgOuNsOydtO2EsCDsoJzqsbAg7ZuELCBfX2hhc0RlZmF1bHRfXyDsu6zrn7zrk6Trp4wgb3B0aW9uYWzroZwg7LKY66asLCBfX2dlbmVyYXRlZF9fIOy7rOufvOydgCDsmYTsoITtnogg7KCc7Jm4XG5leHBvcnQgdHlwZSBJbnNlcnREYXRhPFQ+ID0gT21pdDxcbiAgUHVyaVRhYmxlPFQ+LFxuICBJbnRlcm5hbFR5cGVLZXlzIHwgSGFzRGVmYXVsdEtleXM8VD4gfCBHZW5lcmF0ZWRLZXlzPFQ+XG4+ICYge1xuICBbSyBpbiBIYXNEZWZhdWx0S2V5czxUPl0/OiBQdXJpVGFibGU8VD5bS107XG59O1xuXG4vLyBJbnNlcnQgUmVzdWx0IO2DgOyehVxuZXhwb3J0IHR5cGUgSW5zZXJ0UmVzdWx0ID0gUGljazxRdWVyeVJlc3VsdDxhbnk+LCBcImNvbW1hbmRcIiB8IFwicm93Q291bnRcIiB8IFwicm93c1wiIHwgXCJvaWRcIj47XG5cbi8vIFN1YnNldFF1ZXJ566W8IOychO2VnCDtg4DsnoUg7Jyg7Yu466as7YuwXG5leHBvcnQgdHlwZSBFeHRyYWN0VFRhYmxlczxUIGV4dGVuZHMgUHVyaTxhbnksIGFueSwgYW55Pj4gPSBUIGV4dGVuZHMgUHVyaTxhbnksIGluZmVyIFRUYWJsZXMsIGFueT5cbiAgPyBUVGFibGVzXG4gIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBVbmlvbkV4dHJhY3RlZFRUYWJsZXM8XG4gIFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxTdWJzZXRLZXksIFB1cmlTdWJzZXRGbj4sXG4+ID0ge1xuICBbSyBpbiBTdWJzZXRLZXldOiBFeHRyYWN0VFRhYmxlczxSZXR1cm5UeXBlPFN1YnNldFF1ZXJpZXNbS10+Pjtcbn1bU3Vic2V0S2V5XTtcblxuLy8gT04gQ09ORkxJQ1Qg64yA7IOBIO2DgOyehVxuLy8gLSDri6jsnbwg7Lus65+8OiBcImVtYWlsXCJcbi8vIC0g67O17IiYIOy7rOufvDogW1widXNlcl9pZFwiLCBcInByb2R1Y3RfaWRcIl1cbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RUYXJnZXQgPSBzdHJpbmcgfCBzdHJpbmdbXTtcblxuLy8gT04gQ09ORkxJQ1Qg7JWh7IWYIO2DgOyehVxuLy8gLSBcIm5vdGhpbmdcIjogRE8gTk9USElOR1xuLy8gLSB7IHVwZGF0ZTogWy4uLl0gfTogRE8gVVBEQVRFXG5leHBvcnQgdHlwZSBPbkNvbmZsaWN0QWN0aW9uPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPVxuICB8IFwibm90aGluZ1wiXG4gIHwge1xuICAgICAgdXBkYXRlOlxuICAgICAgICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5bXSAvLyDrsLDsl7Qg7ZiV7YOcIC0gW1wibmFtZVwiLCBcImVtYWlsXCJdXG4gICAgICAgIHwgV2hlcmVDb25kaXRpb248VFRhYmxlcz47IC8vIOqwneyytCDtmJXtg5wgLSB7IG5hbWU6IFwiSm9oblwiLCBjb3VudDogUHVyaS5yYXdOdW1iZXIoLi4uKSB9XG4gICAgfTtcblxuLy8gRksg7Lus65+866qFIOy2lOy2nCDsnKDti7jrpqzti7Ag7YOA7J6FIC0gRGF0YWJhc2VGb3JlaWduS2V5cyDtmZzsmqlcbmV4cG9ydCB0eXBlIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+ID1cbiAgVFRhYmxlIGV4dGVuZHMga2V5b2YgRGF0YWJhc2VGb3JlaWduS2V5cyA/IERhdGFiYXNlRm9yZWlnbktleXNbVFRhYmxlXSA6IG5ldmVyO1xuXG4vLyBVbmlvbuydhCBJbnRlcnNlY3Rpb27snLzroZwg67OA7ZmY7ZWY64qUIOycoO2LuOumrO2LsFxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFUgZXh0ZW5kcyBhbnkgPyAoazogVSkgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrOiBpbmZlciBJKSA9PiB2b2lkXG4gID8gSVxuICA6IG5ldmVyO1xuXG4vLyBTZWxlY3RBbGwg7IucIOuqqOuToCDsobDsnbjrkJwg7YWM7J2067iU7J2YIOy7rOufvCDtj6ztlahcbmV4cG9ydCB0eXBlIFNlbGVjdEFsbFJlc3VsdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICB7XG4gICAgW0sgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbS10gZXh0ZW5kcyBpbmZlciBUXG4gICAgICA/IFQgZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gUGFydGlhbDxPbWl0SW50ZXJuYWxUeXBlS2V5czxUPj4gLy8gTEVGVCBKT0lO7J2AIG51bGxhYmxlLCDrqZTtg4DrjbDsnbTthLAg7KCc6rGwXG4gICAgICAgIDogT21pdEludGVybmFsVHlwZUtleXM8VD4gLy8gSU5ORVIgSk9JTuydgCBub24tbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgIDogbmV2ZXI7XG4gIH1ba2V5b2YgVFRhYmxlc11cbj47XG5cbi8vIEZUUyDtg4DsnoVcbnR5cGUgVHNRdWVyeVBhcnNlciA9IFwidG9fdHNxdWVyeVwiIHwgXCJwbGFpbnRvX3RzcXVlcnlcIiB8IFwicGhyYXNldG9fdHNxdWVyeVwiIHwgXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeUNvbmZpZyA9IFwic2ltcGxlXCIgfCBcImVuZ2xpc2hcIjtcbmV4cG9ydCB0eXBlIFRzUXVlcnlPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgVHNIaWdobGlnaHRPcHRpb25zID0ge1xuICAvKiog7L+866asIOuzgO2ZmCDtlajsiJggKOq4sOuzuOqwkjogXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiKSAqL1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICAvKiog7YWN7Iqk7Yq4IOqygOyDiSDshKTsoJUgKOq4sOuzuOqwkjogXCJzaW1wbGVcIikgKi9cbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOy1nOuMgCDri6jslrQg7IiYICjquLDrs7jqsJI6IDM1KSAqL1xuICBtYXhXb3Jkcz86IG51bWJlcjtcbiAgLyoqIOy1nOyGjCDri6jslrQg7IiYICjquLDrs7jqsJI6IDE1KSAqL1xuICBtaW5Xb3Jkcz86IG51bWJlcjtcbiAgLyoqIO2XpOuTnOudvOyduCDsi5zsnpEv64Gd7JeQ7IScIOygnOqxsO2VoCDsp6fsnYAg64uo7Ja0IOq4uOydtCAo6riw67O46rCSOiAzKSAqL1xuICBzaG9ydFdvcmQ/OiBudW1iZXI7XG4gIC8qKiB0cnVl66m0IOyghOyytCDrrLjshJzrpbwg7Zek65Oc65287J247Jy866GcIOyCrOyaqSAo6riw67O46rCSOiBmYWxzZSkgKi9cbiAgaGlnaGxpZ2h0QWxsPzogYm9vbGVhbjtcbiAgLyoqIO2RnOyLnO2VoCDstZzrjIAg7YWN7Iqk7Yq4IOyhsOqwgSDsiJggKOq4sOuzuOqwkjogMCwg7KGw6rCBIOuvuOyCrOyaqSkgKi9cbiAgbWF4RnJhZ21lbnRzPzogbnVtYmVyO1xuICAvKiog7L+866asIOuLqOyWtCDsi5zsnpEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPGI+XCIpICovXG4gIHN0YXJ0U2VsPzogc3RyaW5nO1xuICAvKiog7L+866asIOuLqOyWtCDrgZ0g6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPC9iPlwiKSAqL1xuICBzdG9wU2VsPzogc3RyaW5nO1xuICAvKiog7KGw6rCBIOq1rOu2hOyekCAo6riw67O46rCSOiBcIiAuLi4gXCIpICovXG4gIGZyYWdtZW50RGVsaW1pdGVyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVHNSYW5rT3B0aW9ucyA9IHtcbiAgcGFyc2VyPzogVHNRdWVyeVBhcnNlcjtcbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOqwgOykkey5mCDrsLDsl7QgW0QsIEMsIEIsIEFdICjquLDrs7jqsJI6IFswLjEsIDAuMiwgMC40LCAxLjBdKSAqL1xuICB3ZWlnaHRzPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiDsoJXqt5ztmZQg7Ji17IWYXG4gICAqIDA6IOusuOyEnCDquLjsnbQg66y07IucICjquLDrs7jqsJIpXG4gICAqIDE6IDEgKyBsb2co66y47IScIOq4uOydtCnroZwg64KY64iUXG4gICAqIDI6IOusuOyEnCDquLjsnbTroZwg64KY64iUXG4gICAqIDQ6IO2Pieq3oCDsobDtmZQg6rGw66as66GcIOuCmOuIlCAodHNfcmFua19jZOunjClcbiAgICogODog6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iUXG4gICAqIDE2OiAxICsgbG9nKOqzoOycoCDri6jslrQg7IiYKeuhnCDrgpjriJRcbiAgICogMzI6IHJhbmsvKHJhbmsrMSkgLT4gMH4xIOyCrOydtOydmCDqsJLsnLzroZwg7Iqk7LyA7J2866eBXG4gICAqXG4gICAqIOu5hO2KuOuniOyKpO2BrOulvCDsgqzsmqntlZjsl6wg7Ji17IWY7J2EIOyhsO2Vqe2VoCDsiJgg7J6I7J2MXG4gICAqIOyYiDogOCB8IDMyIC0+IOqzoOycoCDri6jslrQg7IiY66GcIOuCmOuIhOqzoCAwfjEg7Iqk7LyA7J2866eBXG4gICAqL1xuICBub3JtYWxpemF0aW9uPzogbnVtYmVyO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzRkFBc0YsR0FxYXRGLFdBbUJFIn0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBQdXJpLnR5cGVzLnRz64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUZvcmVpZ25LZXlzLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHR5cGUgeyBQdXJpU3Vic2V0Rm4gfSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g64K067aAIO2DgOyehSDtgqQgKOuplO2DgOuNsOydtO2EsClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50eXBlIEZ1bGx0ZXh0S2V5ID0gXCJfX2Z1bGx0ZXh0X19cIjtcbnR5cGUgVmlydHVhbEtleSA9IFwiX192aXJ0dWFsX19cIjtcbnR5cGUgTGVmdEpvaW5lZEtleSA9IFwiX19sZWZ0Sm9pbmVkX19cIjtcbnR5cGUgSGFzRGVmYXVsdCA9IFwiX19oYXNEZWZhdWx0X19cIjtcbnR5cGUgR2VuZXJhdGVkS2V5ID0gXCJfX2dlbmVyYXRlZF9fXCI7XG50eXBlIFZlY3RvcktleSA9IFwiX192ZWN0b3JfX1wiO1xuXG50eXBlIEludGVybmFsVHlwZUtleXMgPVxuICB8IEZ1bGx0ZXh0S2V5XG4gIHwgVmlydHVhbEtleVxuICB8IExlZnRKb2luZWRLZXlcbiAgfCBIYXNEZWZhdWx0XG4gIHwgR2VuZXJhdGVkS2V5XG4gIHwgVmVjdG9yS2V5O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8g7YOA7J6FIOycoO2LuOumrO2LsFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gX192ZWN0b3JfXyDrqZTtg4DrjbDsnbTthLDsl5DshJwg67Kh7YSwIOy7rOufvCDstpTstpxcbnR5cGUgVmVjdG9yQ29sdW1uS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIFZlY3RvcktleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH1cbiAgPyBWICYgc3RyaW5nXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFZlY3RvckNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7VmVjdG9yQ29sdW1uS2V5czxUVGFibGVzW1RBbGlhc10+fWA7XG4gICAgfVtrZXlvZiBUVGFibGVzXVxuICB8IChJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWUgPyBWZWN0b3JDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IDogbmV2ZXIpO1xuXG4vLyDthYzsnbTruJTrqoUg7YOA7J6FXG5leHBvcnQgdHlwZSBUYWJsZU5hbWU8VFNjaGVtYT4gPSBrZXlvZiBUU2NoZW1hICYgc3RyaW5nO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDtg4DsnoUg7LaU7LacXG50eXBlIFZpcnR1YWxLZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmlydHVhbEtleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH0gPyBWICYgc3RyaW5nIDogbmV2ZXI7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsFxudHlwZSBTdHJpcFZpcnR1YWw8VD4gPSBPbWl0PFQsIFZpcnR1YWxLZXlzPFQ+PjtcblxuLy8gTEVGVCBKT0lOIOuniOy7pCAtIG51bGxhYmxlIEZL66GcIOyhsOyduOuQnCDthYzsnbTruJRcbi8vIOydtCDrp4jsu6TripQgbnVsbGFibGUgRksgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxuLy8gam9pbiArIEZLIG51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBudWxsYWJsZSAtPiDrtpnsnYwhXG5leHBvcnQgdHlwZSBMZWZ0Sm9pbmVkTWFya2VyID0geyBbSyBpbiBMZWZ0Sm9pbmVkS2V5XTogdHJ1ZSB9O1xuXG4vLyDrqZTtg4DrjbDsnbTthLAg7ZWE65OcIOygnOyZuO2VnCDsi6TsoJwg7JeU7Yuw7YuwIOy7rOufvFxuZXhwb3J0IHR5cGUgQ29sdW1uS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgU3RyaXBWaXJ0dWFsPFQ+LCBJbnRlcm5hbFR5cGVLZXlzPiAmIHN0cmluZztcblxuLy8gdmlydHVhbCDsu6zrn7wg7KCc6rGwIO2bhCBfX2Z1bGx0ZXh0X18g7Jyg7KeAXG5leHBvcnQgdHlwZSBQdXJpVGFibGU8VD4gPSBPbWl0PFN0cmlwVmlydHVhbDxUPiwgVmlydHVhbEtleT47XG5cbi8vIOuCtOu2gCDtg4DsnoUg7YKkIOygnOyZuCAo7Iuk7KCcIOy7rOufvOunjCDrgqjquYApXG5leHBvcnQgdHlwZSBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiA9IE9taXQ8VCwgSW50ZXJuYWxUeXBlS2V5cz47XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIOy7rOufvCDqsr3roZxcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7Q29sdW1uS2V5czxUVGFibGVzW1RBbGlhc10+fWA7XG4gICAgfVtrZXlvZiBUVGFibGVzXVxuICB8IChJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICAgID8gQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiAvLyDri6jsnbwg7YWM7J2067iU7J2066m0IOy7rOufvOuqheunjOuPhCDtl4jsmqlcbiAgICAgIDogbmV2ZXIpO1xuXG4vLyDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpztlZjripQg7Jyg7Yu466as7YuwIO2DgOyehVxudHlwZSBOdW1lcmljQ29sdW1uS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgfCBudWxsIHwgdW5kZWZpbmVkID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXSAmXG4gIHN0cmluZztcblxuLy8gVFRhYmxlc+ydmCDrqqjrk6Ag7YWM7J2067iU7JeQ7IScIOyIq+yekCDtg4DsnoUg7Lus65+866eMIOy2lOy2nFxuZXhwb3J0IHR5cGUgTnVtZXJpY0NvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7TnVtZXJpY0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IE51bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IC8vIOuLqOydvCDthYzsnbTruJTsnbTrqbQg7Lus65+866qF66eM64+EIO2XiOyaqVxuICAgICAgOiBuZXZlcik7XG5cbi8vIEdyb3VwIEJ5LCBPcmRlciBCeSwgSGF2aW5nIOuTseyXkOyEnCDshKDtg50g6rCA64ql7ZWcIOy7rOufvFxuZXhwb3J0IHR5cGUgUmVzdWx0QXZhaWxhYmxlQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgVFJlc3VsdCA9IGFueT4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBgJHtrZXlvZiBUUmVzdWx0ICYgc3RyaW5nfWA7XG5cbi8vIFNlbGVjdCDqsJIg7YOA7J6FIO2ZleyepSAo64uo7J28IOy7rOufvCDrmJDripQgU1FMIO2RnO2YhOyLnSlcbmV4cG9ydCB0eXBlIFNlbGVjdFZhbHVlPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPlxuICB8IFNxbEV4cHJlc3Npb248XCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiZGF0ZVwiIHwgXCJzdHJpbmdbXVwiPjtcblxuLy8g7KSR7LKpIFNlbGVjdCDqsJ3ssrQg7YOA7J6FICjsnqzqt4DsoIEpXG4vLyDsmIg6IHsgcGFyZW50OiB7IGlkOiBcInBhcmVudC5pZFwiLCBuYW1lOiBcInBhcmVudC5uYW1lXCIgfSB9XG5leHBvcnQgdHlwZSBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBba2V5OiBzdHJpbmddOiBTZWxlY3RWYWx1ZTxUVGFibGVzPiB8IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcbn07XG5cbi8vIFNlbGVjdCDqsJ3ssrQg7YOA7J6FIChmbGF0IOuYkOuKlCDspJHssqkg7ZeI7JqpKVxuZXhwb3J0IHR5cGUgU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcblxuLy8g6rCS7J20IOykkeyyqSDqsJ3ssrTsnbjsp4Ag7YyQ67OE7ZWY64qUIO2XrO2NvCDtg4DsnoVcbnR5cGUgSXNOZXN0ZWRPYmplY3Q8VD4gPSBUIGV4dGVuZHMgc3RyaW5nXG4gID8gZmFsc2VcbiAgOiBUIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxhbnk+XG4gICAgPyBmYWxzZVxuICAgIDogVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcblxuLy8g7Lus65+87J20IG51bGxhYmxl7J247KeAIO2ZleyduCAo7Iqk7YKk66eI7JeQ7IScIOyngeygkSDstpTstpwpXG4vLyDsmIg6IElzTnVsbGFibGVDb2x1bW48VFRhYmxlcywgXCJlbXBsb3llZXMuZGVwYXJ0bWVudF9pZFwiPiDihpIgZGVwYXJ0bWVudF9pZOqwgCBudW1iZXIgfCBudWxs7J2066m0IHRydWVcbmV4cG9ydCB0eXBlIElzTnVsbGFibGVDb2x1bW48XG4gIFRUYWJsZXMsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IG51bGwgZXh0ZW5kcyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl1cbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbi8vIEZLIG51bGxhYmxlIOyXrOu2gOyXkCDrlLDrpbgg66eI7LukIO2DgOyehSDqsrDsoJVcbi8vIG51bGxhYmxlIEZL66GcIGxlZnRKb2luIOKGkiBMZWZ0Sm9pbmVkTWFya2VyICjqsJ3ssrQg7J6Q7LK06rCAIG51bGzsnbwg7IiYIOyeiOydjClcbi8vIG5vbi1udWxsIEZL66GcIGxlZnRKb2luIOKGkiDrp4jsu6Qg7JeG7J2MICjrtoDrqqjqsIAg7J6I7Jy866m0IOyekOyLneuPhCDrsJjrk5zsi5wg7J6I7J2MKVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5NYXJrZXJGb3I8VFRhYmxlcywgUGF0aCBleHRlbmRzIHN0cmluZz4gPSBJc051bGxhYmxlQ29sdW1uPFxuICBUVGFibGVzLFxuICBQYXRoXG4+IGV4dGVuZHMgdHJ1ZVxuICA/IExlZnRKb2luZWRNYXJrZXJcbiAgOiB7fTtcblxuLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeuhnCBsZWZ0Sm9pbiDrkJwg7YWM7J2067iU7J247KeAIO2ZleyduO2VqeuLiOuLpC5cbi8vIOyCrOyLpCBMZWZ0Sm9pbk1hcmtlcuqwgCDrtpnsl4jripTsp4Ag7ZmV7J247ZWY64qU6rKMIOuLpOyeheuLiOuLpC5cbi8vIOydtCDrp4jsu6TripQgRksgbnVsbGFibGUgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxudHlwZSBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgVGFibGVLZXk+ID0gVGFibGVLZXkgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gID8gVFRhYmxlc1tUYWJsZUtleV0gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgPyB0cnVlIC8vIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IG51bGxhYmxlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyDqsr3roZwg7KGw7ZWpIO2XrO2NvCAocHJlZml46rCAIOyXhuycvOuptCBrZXnrp4wsIOyeiOycvOuptCBwcmVmaXhfX2tleSlcbnR5cGUgSm9pblBhdGg8UHJlZml4IGV4dGVuZHMgc3RyaW5nLCBLZXkgZXh0ZW5kcyBzdHJpbmc+ID0gUHJlZml4IGV4dGVuZHMgXCJcIlxuICA/IEtleVxuICA6IGAke1ByZWZpeH1fXyR7S2V5fWA7XG5cbi8vIFNlbGVjdCDqsrDqs7wg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDsuZzqtazsnoXri4jri6QuXG4vLyDsnbQg7YOA7J6F7J2AIFB1cmnsnZggc2VsZWN0LCBhcHBlbmRTZWxlY3Tsl5DshJwgVFJlc3VsdOuhnCDsgqzsmqnrkKnri4jri6QuXG4vL1xuLy8gU2NoZW1h66W8IOydveyWtOyEnCBGS+ydmCBudWxsYWJpbGl0eeyXkCDrlLDrnbwgam9pbuuQnCDqsJ3ssrTsnZgg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDquLDriqXsnbQg7J6I7Iq164uI64ukLlxuLy8g7J206rKMIOustOyKqCDshozrpqzrg5A/IEZL6rCAIG51bGxhYmxl7J24642wIGxlZnRKb2lu65CY7JeI64uk66m0LCDtlbTri7kg6rCd7LK064qUIG51bGxhYmxlIO2VtOyVvCDtlajsnYQg7YOA7J6FIOy2lOuhoOycvOuhnCDrsJjsmIHtlbTspIDri6TripQg6rKD7J6F64uI64ukLlxuLy8g67CY66m0IEZL6rCAIG5vbi1udWxsYWJsZeydtOqxsOuCmCDqt7jrg6Ugam9pbuycvOuhnCDsnbTslrTsoYzri6TrqbQg7ZW064u5IOqwneyytOuKlCBub24tbnVsbGFibGXtlaAg6rKB64uI64ukLlxuLy8g66y866GgIOqwneyytCDrgrTrtoDsnZggbnVsbGFiaWxpdHnripQg65iQIOuzhOqwnOuhnCDstpTroaDrkKnri4jri6QuXG4vL1xuLy8g7JWE656Y7JeQ64+EIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGjrpbwg67mE66Gv7ZW0IEV4dHJhY3RDb2x1bW5UeXBlLCBFeHRyYWN0Q29sdW1uVHlwZVJhdyDrk7HsnZgg7YOA7J6F7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOuTpOydmCDsl63tlaDsnYAg64uk7J2M6rO8IOqwmeyKteuLiOuLpDpcbi8vIC0gUGFyc2UqOiDqsJ3ssrQg66CI67Ko7JeQ7IScIOykkeyyqSDqtazsobDrpbwg7Iic7ZqM7ZWY66mwIOqwneyytOyXkCB8IG51bGzsnYQg67aZ7J287KeAIOqysOygle2VqeuLiOuLpC5cbi8vIC0gRXh0cmFjdCo6IO2VhOuTnCDroIjrsqjsl5DshJwgXCJ0YWJsZS5jb2x1bW5cIiDqsr3roZzroZzrtoDthLAg7Iuk7KCcIO2DgOyeheydhCDstpTstpztlanri4jri6QuXG4vL1xuLy8g7JiI7IucOlxuLy8gLnNlbGVjdCh7XG4vLyAgIGlkOiBcInVzZXJzLmlkXCIsICAgICAgICAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGXsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgZGVwYXJ0bWVudDogeyAgICAgICAgICAgICAvLyDihpAgUGFyc2VTZWxlY3RPYmplY3RJbm5lcuyXkCDsnZjtlbQgbnVsbGFibGUg6rCd7LK066GcIOy2lOuhoOuQqeuLiOuLpC5cbi8vICAgICBpZDogXCJkZXBhcnRtZW50LmlkXCIsICAgIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgbnVtYmVy7J6F64uI64ukLlxuLy8gICAgIG5hbWU6IFwiZGVwYXJ0bWVudC5uYW1lXCIgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBlUmF37J2YIOqysOqzvOuKlCBzdHJpbmfsnoXri4jri6QuXG4vLyAgIH1cbi8vIH0pXG5leHBvcnQgdHlwZSBQYXJzZVNlbGVjdE9iamVjdDxcbiAgVFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFRTZWxlY3QgZXh0ZW5kcyBTZWxlY3RPYmplY3Q8VFRhYmxlcz4sXG4+ID0gUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aDxUVGFibGVzLCBUU2VsZWN0LCBcIlwiPjtcblxuLy8g6rK966Gc66W8IOy2lOygge2VmOuptOyEnCBTZWxlY3Qg6rKw6rO8IO2DgOyeheydhCDstpTroaDtlanri4jri6QuXG50eXBlIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGg8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuICBQcmVmaXggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gRXhwYW5kPHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFI+XG4gICAgPyBSIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogUiBleHRlbmRzIFwibnVtYmVyXCJcbiAgICAgICAgPyBudW1iZXJcbiAgICAgICAgOiBSIGV4dGVuZHMgXCJib29sZWFuXCJcbiAgICAgICAgICA/IGJvb2xlYW5cbiAgICAgICAgICA6IFIgZXh0ZW5kcyBcImRhdGVcIlxuICAgICAgICAgICAgPyBEYXRlXG4gICAgICAgICAgICA6IFIgZXh0ZW5kcyBcInN0cmluZ1tdXCJcbiAgICAgICAgICAgICAgPyBzdHJpbmdbXVxuICAgICAgICAgICAgICA6IG5ldmVyXG4gICAgOiBJc05lc3RlZE9iamVjdDxUU2VsZWN0W0tdPiBleHRlbmRzIHRydWVcbiAgICAgID8gVFNlbGVjdFtLXSBleHRlbmRzIE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPlxuICAgICAgICA/IElzTnVsbGFibGVKb2luZWRUYWJsZTxUVGFibGVzLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+PiBleHRlbmRzIHRydWUgLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeyXkCBsZWZ0Sm9pbuuQmOyXiOuKlOyngCDsl6zrtoDsl5Ag65Sw6528IHNlbGVjdCDqsrDqs7wg6rCd7LK07J2YIO2DgOyeheydtCDri6zrnbzsp5Hri4jri6QuXG4gICAgICAgICAgPyBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gfCBudWxsIC8vIOunjOyVvSDtlbTri7ntlZzri6TrqbQg7ZW064u5IOqwneyytCDsnpDssrTripQgbnVsbGFibGUg7ZWY66mwLFxuICAgICAgICAgIDogRXhwYW5kPFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4+IC8vIOq3uOugh+yngCDslYrri6TrqbQgbm9uLW51bGxhYmxlIO2VqeuLiOuLpC5cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjtcbn0+O1xuXG4vLyDspJHssqkg6rCd7LK0IOuCtOu2gOyaqSAtIGxlZnRKb2luIG51bGxhYmxl7J2EIOqwneyytCDroIjrsqjsl5DshJwg7J2066+4IOyymOumrO2WiOycvOuvgOuhnCDtlYTrk5zripQg7JuQ67O4IO2DgOyeheydhCDsgqzsmqntlanri4jri6QuXG4vLyBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRo7JmAIOqxsOydmCDrj5nsnbztlZjrgpgsIOuniOyngOunieyXkCBFeHRyYWN0Q29sdW1uVHlwZSDrjIDsi6AgRXh0cmFjdENvbHVtblR5cGVSYXfrpbwg7IKs7Jqp7ZWY7JesXG4vLyDtlYTrk5wg66CI67Ko7JeQ7IScIOykkeuzteycvOuhnCB8IG51bGzsnbQg7LaU6rCA65CY64qUIOqyg+ydhCDrsKnsp4Dtlanri4jri6QuXG50eXBlIFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuICBQcmVmaXggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gRXhwYW5kPHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFI+XG4gICAgPyBSIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogUiBleHRlbmRzIFwibnVtYmVyXCJcbiAgICAgICAgPyBudW1iZXJcbiAgICAgICAgOiBSIGV4dGVuZHMgXCJib29sZWFuXCJcbiAgICAgICAgICA/IGJvb2xlYW5cbiAgICAgICAgICA6IFIgZXh0ZW5kcyBcImRhdGVcIlxuICAgICAgICAgICAgPyBEYXRlXG4gICAgICAgICAgICA6IFIgZXh0ZW5kcyBcInN0cmluZ1tdXCJcbiAgICAgICAgICAgICAgPyBzdHJpbmdbXVxuICAgICAgICAgICAgICA6IG5ldmVyXG4gICAgOiBJc05lc3RlZE9iamVjdDxUU2VsZWN0W0tdPiBleHRlbmRzIHRydWVcbiAgICAgID8gVFNlbGVjdFtLXSBleHRlbmRzIE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPlxuICAgICAgICA/IElzTnVsbGFibGVKb2luZWRUYWJsZTxUVGFibGVzLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+PiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiB8IG51bGxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PlxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IEV4dHJhY3RDb2x1bW5UeXBlUmF3PFRUYWJsZXMsIFRTZWxlY3RbS10gJiBzdHJpbmc+OyAvLyBsZWZ0Sm9pbiBudWxsYWJsZSDrrLTsi5xcbn0+O1xuXG4vLyDsu6zrn7wg6rK966Gc7JeQ7IScIO2DgOyeheydhCDstpTstpztlanri4jri6QuIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IHwgbnVsbOydhCDstpTqsIDtlanri4jri6QuXG4vLyDstZzsg4HsnIQgc2VsZWN0IO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuXG5leHBvcnQgdHlwZSBFeHRyYWN0Q29sdW1uVHlwZTxcbiAgVFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIExlZnRKb2luZWRNYXJrZXJcbiAgICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gfCBudWxsIC8vIExFRlQgSk9JTiAobnVsbGFibGUgRkspIOKGkiBudWxsYWJsZVxuICAgICAgICA6IFRUYWJsZXNbVEFsaWFzXVtUQ29sdW1uXSAvLyBJTk5FUiBKT0lOIOuYkOuKlCBub24tbnVsbCBGSyBsZWZ0Sm9pbiDihpIgbm9uLW51bGxhYmxlXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlclxuICA6IElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8vIOy7rOufvCDqsr3roZzsl5DshJwg7YOA7J6F7J2EIOy2lOy2nO2VqeuLiOuLpC4gbGVmdEpvaW4g7Jes67aA7JmAIOq0gOqzhOyXhuydtCDsm5Drs7gg7YOA7J6F7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbi8vIOykkeyyqSDqsJ3ssrQg64K067aAIO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuICjqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCB8IG51bGwg7LKY66as6rCAIOyZhOujjOuQmOyXiOycvOuvgOuhnClcbnR5cGUgRXh0cmFjdENvbHVtblR5cGVSYXc8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gLy8gbGVmdEpvaW4g7Jes67aA7JmAIOq0gOqzhOyXhuydtCDsm5Drs7gg7YOA7J6FXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlclxuICA6IElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8vIFdoZXJlIOyhsOqxtCDqsJ3ssrQg7YOA7J6FXG4vLyDsmIg6IHsgXCJ1LmlkXCI6IDEsIFwidS5zdGF0dXNcIjogXCJhY3RpdmVcIiB9XG5leHBvcnQgdHlwZSBXaGVyZUNvbmRpdGlvbjxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSB7XG4gIFtrZXkgaW4gQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPl0/OiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBrZXkgJiBzdHJpbmc+O1xufTtcblxuLy8gRnVsbHRleHQgaW5kZXgg7Lus65+8IOy2lOy2nCDtg4DsnoVcbmV4cG9ydCB0eXBlIEZ1bGx0ZXh0Q29sdW1uczxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSB7XG4gIFtUQWxpYXMgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIHtcbiAgICBbSyBpbiBGdWxsdGV4dEtleV06IHJlYWRvbmx5IChpbmZlciBDb2wpW107XG4gIH1cbiAgICA/IENvbCBleHRlbmRzIHN0cmluZ1xuICAgICAgPyBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7Q29sfWBcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBUVGFibGVzXTtcblxuLy8g67mE6rWQIOyXsOyCsOyekFxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk9wZXJhdG9yID0gXCI9XCIgfCBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiIHwgXCI8PlwiIHwgXCIhPVwiO1xuLy8g7KGw6rG0IOyXsOyCsOyekDog67mE6rWQIOyXsOyCsOyekCArIO2MqO2EtCDrp6Tsua0g7Jew7IKw7J6QXG5leHBvcnQgdHlwZSBXaGVyZU9wZXJhdG9yID0gQ29tcGFyaXNvbk9wZXJhdG9yIHwgXCJsaWtlXCIgfCBcIm5vdCBsaWtlXCI7XG5cbi8vIFNRTCBFeHByZXNzaW9uIO2DgOyehSDsoJXsnZhcbmV4cG9ydCB0eXBlIFNxbEV4cHJlc3Npb248VCBleHRlbmRzIFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIj4gPSB7XG4gIF90eXBlOiBcInNxbF9leHByZXNzaW9uXCI7IC8vIOuYkOuKlCBcImNvbXB1dGVkX3ZhbHVlXCJcbiAgX3JldHVybjogVDtcbiAgX3NxbDogc3RyaW5nO1xufTtcblxuLy8g6rKw6rO8IO2DgOyehSDqsIDrj4XshLHsnYQg7JyE7ZWcIO2DgOyehSDtmZXsnqVcbmV4cG9ydCB0eXBlIEV4cGFuZDxUPiA9IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW0sgaW4ga2V5b2YgVFswXV06IFRbMF1bS10gfVtdIC8vIOuwsOyXtOydtOuptCDssqsg67KI7Ke4IOyalOyGjOulvCBFeHBhbmTtlZjqs6Ag67Cw7Je066GcIOqwkOyMiFxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gfVxuICAgIDogVDtcblxudHlwZSBJc1NpbmdsZUtleTxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBrZXlvZiBUVGFibGVzIGV4dGVuZHMgaW5mZXIgS1xuICA/IEsgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBrZXlvZiBUVGFibGVzIGV4dGVuZHMgSyAvLyDsl63rsKntlqUg7LK07YGs66GcIOuLqOydvCDtgqQg7ZmV7J24XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbmV4cG9ydCB0eXBlIFNpbmdsZVRhYmxlVmFsdWU8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXSA6IG5ldmVyO1xuXG4vLyBfX2hhc0RlZmF1bHRfX+yXkCDtj6ztlajrkJwg7YKk65Ok7J2EIFB1cmlUYWJsZTxUPuydmCDtgqTroZwg7KCc7ZWcXG50eXBlIEhhc0RlZmF1bHRLZXlzPFQ+ID0gVCBleHRlbmRzIHsgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IChpbmZlciBLKVtdIH1cbiAgPyBFeHRyYWN0PEssIGtleW9mIFB1cmlUYWJsZTxUPj5cbiAgOiBuZXZlcjtcblxuLy8gX19nZW5lcmF0ZWRfX+yXkCDtj6ztlajrkJwg7YKk65OkIChJTlNFUlQg7IucIOygnOyZuO2VtOyVvCDtlagpXG50eXBlIEdlbmVyYXRlZEtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX2dlbmVyYXRlZF9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIEluc2VydCDtg4DsnoU6IOuplO2DgOuNsOydtO2EsCDsoJzqsbAg7ZuELCBfX2hhc0RlZmF1bHRfXyDsu6zrn7zrk6Trp4wgb3B0aW9uYWzroZwg7LKY66asLCBfX2dlbmVyYXRlZF9fIOy7rOufvOydgCDsmYTsoITtnogg7KCc7Jm4XG5leHBvcnQgdHlwZSBJbnNlcnREYXRhPFQ+ID0gT21pdDxcbiAgUHVyaVRhYmxlPFQ+LFxuICBJbnRlcm5hbFR5cGVLZXlzIHwgSGFzRGVmYXVsdEtleXM8VD4gfCBHZW5lcmF0ZWRLZXlzPFQ+XG4+ICYge1xuICBbSyBpbiBIYXNEZWZhdWx0S2V5czxUPl0/OiBQdXJpVGFibGU8VD5bS107XG59O1xuXG4vLyBJbnNlcnQgUmVzdWx0IO2DgOyehVxuZXhwb3J0IHR5cGUgSW5zZXJ0UmVzdWx0ID0gUGljazxRdWVyeVJlc3VsdDxhbnk+LCBcImNvbW1hbmRcIiB8IFwicm93Q291bnRcIiB8IFwicm93c1wiIHwgXCJvaWRcIj47XG5cbi8vIFN1YnNldFF1ZXJ566W8IOychO2VnCDtg4DsnoUg7Jyg7Yu466as7YuwXG5leHBvcnQgdHlwZSBFeHRyYWN0VFRhYmxlczxUIGV4dGVuZHMgUHVyaTxhbnksIGFueSwgYW55Pj4gPVxuICBUIGV4dGVuZHMgUHVyaTxhbnksIGluZmVyIFRUYWJsZXMsIGFueT4gPyBUVGFibGVzIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBVbmlvbkV4dHJhY3RlZFRUYWJsZXM8XG4gIFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxTdWJzZXRLZXksIFB1cmlTdWJzZXRGbj4sXG4+ID0ge1xuICBbSyBpbiBTdWJzZXRLZXldOiBFeHRyYWN0VFRhYmxlczxSZXR1cm5UeXBlPFN1YnNldFF1ZXJpZXNbS10+Pjtcbn1bU3Vic2V0S2V5XTtcblxuLy8gT04gQ09ORkxJQ1Qg64yA7IOBIO2DgOyehVxuLy8gLSDri6jsnbwg7Lus65+8OiBcImVtYWlsXCJcbi8vIC0g67O17IiYIOy7rOufvDogW1widXNlcl9pZFwiLCBcInByb2R1Y3RfaWRcIl1cbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RUYXJnZXQgPSBzdHJpbmcgfCBzdHJpbmdbXTtcblxuLy8gT04gQ09ORkxJQ1Qg7JWh7IWYIO2DgOyehVxuLy8gLSBcIm5vdGhpbmdcIjogRE8gTk9USElOR1xuLy8gLSB7IHVwZGF0ZTogWy4uLl0gfTogRE8gVVBEQVRFXG5leHBvcnQgdHlwZSBPbkNvbmZsaWN0QWN0aW9uPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPVxuICB8IFwibm90aGluZ1wiXG4gIHwge1xuICAgICAgdXBkYXRlOlxuICAgICAgICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5bXSAvLyDrsLDsl7Qg7ZiV7YOcIC0gW1wibmFtZVwiLCBcImVtYWlsXCJdXG4gICAgICAgIHwgV2hlcmVDb25kaXRpb248VFRhYmxlcz47IC8vIOqwneyytCDtmJXtg5wgLSB7IG5hbWU6IFwiSm9oblwiLCBjb3VudDogUHVyaS5yYXdOdW1iZXIoLi4uKSB9XG4gICAgfTtcblxuLy8gRksg7Lus65+866qFIOy2lOy2nCDsnKDti7jrpqzti7Ag7YOA7J6FIC0gRGF0YWJhc2VGb3JlaWduS2V5cyDtmZzsmqlcbmV4cG9ydCB0eXBlIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+ID1cbiAgVFRhYmxlIGV4dGVuZHMga2V5b2YgRGF0YWJhc2VGb3JlaWduS2V5cyA/IERhdGFiYXNlRm9yZWlnbktleXNbVFRhYmxlXSA6IG5ldmVyO1xuXG4vLyBVbmlvbuydhCBJbnRlcnNlY3Rpb27snLzroZwg67OA7ZmY7ZWY64qUIOycoO2LuOumrO2LsFxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFUgZXh0ZW5kcyBhbnkgPyAoazogVSkgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrOiBpbmZlciBJKSA9PiB2b2lkXG4gID8gSVxuICA6IG5ldmVyO1xuXG4vLyBTZWxlY3RBbGwg7IucIOuqqOuToCDsobDsnbjrkJwg7YWM7J2067iU7J2YIOy7rOufvCDtj6ztlahcbmV4cG9ydCB0eXBlIFNlbGVjdEFsbFJlc3VsdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICB7XG4gICAgW0sgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbS10gZXh0ZW5kcyBpbmZlciBUXG4gICAgICA/IFQgZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gUGFydGlhbDxPbWl0SW50ZXJuYWxUeXBlS2V5czxUPj4gLy8gTEVGVCBKT0lO7J2AIG51bGxhYmxlLCDrqZTtg4DrjbDsnbTthLAg7KCc6rGwXG4gICAgICAgIDogT21pdEludGVybmFsVHlwZUtleXM8VD4gLy8gSU5ORVIgSk9JTuydgCBub24tbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgIDogbmV2ZXI7XG4gIH1ba2V5b2YgVFRhYmxlc11cbj47XG5cbi8vIEZUUyDtg4DsnoVcbnR5cGUgVHNRdWVyeVBhcnNlciA9IFwidG9fdHNxdWVyeVwiIHwgXCJwbGFpbnRvX3RzcXVlcnlcIiB8IFwicGhyYXNldG9fdHNxdWVyeVwiIHwgXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeUNvbmZpZyA9IFwic2ltcGxlXCIgfCBcImVuZ2xpc2hcIjtcbmV4cG9ydCB0eXBlIFRzUXVlcnlPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgVHNIaWdobGlnaHRPcHRpb25zID0ge1xuICAvKiog7L+866asIOuzgO2ZmCDtlajsiJggKOq4sOuzuOqwkjogXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiKSAqL1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICAvKiog7YWN7Iqk7Yq4IOqygOyDiSDshKTsoJUgKOq4sOuzuOqwkjogXCJzaW1wbGVcIikgKi9cbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOy1nOuMgCDri6jslrQg7IiYICjquLDrs7jqsJI6IDM1KSAqL1xuICBtYXhXb3Jkcz86IG51bWJlcjtcbiAgLyoqIOy1nOyGjCDri6jslrQg7IiYICjquLDrs7jqsJI6IDE1KSAqL1xuICBtaW5Xb3Jkcz86IG51bWJlcjtcbiAgLyoqIO2XpOuTnOudvOyduCDsi5zsnpEv64Gd7JeQ7IScIOygnOqxsO2VoCDsp6fsnYAg64uo7Ja0IOq4uOydtCAo6riw67O46rCSOiAzKSAqL1xuICBzaG9ydFdvcmQ/OiBudW1iZXI7XG4gIC8qKiB0cnVl66m0IOyghOyytCDrrLjshJzrpbwg7Zek65Oc65287J247Jy866GcIOyCrOyaqSAo6riw67O46rCSOiBmYWxzZSkgKi9cbiAgaGlnaGxpZ2h0QWxsPzogYm9vbGVhbjtcbiAgLyoqIO2RnOyLnO2VoCDstZzrjIAg7YWN7Iqk7Yq4IOyhsOqwgSDsiJggKOq4sOuzuOqwkjogMCwg7KGw6rCBIOuvuOyCrOyaqSkgKi9cbiAgbWF4RnJhZ21lbnRzPzogbnVtYmVyO1xuICAvKiog7L+866asIOuLqOyWtCDsi5zsnpEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPGI+XCIpICovXG4gIHN0YXJ0U2VsPzogc3RyaW5nO1xuICAvKiog7L+866asIOuLqOyWtCDrgZ0g6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPC9iPlwiKSAqL1xuICBzdG9wU2VsPzogc3RyaW5nO1xuICAvKiog7KGw6rCBIOq1rOu2hOyekCAo6riw67O46rCSOiBcIiAuLi4gXCIpICovXG4gIGZyYWdtZW50RGVsaW1pdGVyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVHNSYW5rT3B0aW9ucyA9IHtcbiAgcGFyc2VyPzogVHNRdWVyeVBhcnNlcjtcbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOqwgOykkey5mCDrsLDsl7QgW0QsIEMsIEIsIEFdICjquLDrs7jqsJI6IFswLjEsIDAuMiwgMC40LCAxLjBdKSAqL1xuICB3ZWlnaHRzPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiDsoJXqt5ztmZQg7Ji17IWYXG4gICAqIDA6IOusuOyEnCDquLjsnbQg66y07IucICjquLDrs7jqsJIpXG4gICAqIDE6IDEgKyBsb2co66y47IScIOq4uOydtCnroZwg64KY64iUXG4gICAqIDI6IOusuOyEnCDquLjsnbTroZwg64KY64iUXG4gICAqIDQ6IO2Pieq3oCDsobDtmZQg6rGw66as66GcIOuCmOuIlCAodHNfcmFua19jZOunjClcbiAgICogODog6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iUXG4gICAqIDE2OiAxICsgbG9nKOqzoOycoCDri6jslrQg7IiYKeuhnCDrgpjriJRcbiAgICogMzI6IHJhbmsvKHJhbmsrMSkgLT4gMH4xIOyCrOydtOydmCDqsJLsnLzroZwg7Iqk7LyA7J2866eBXG4gICAqXG4gICAqIOu5hO2KuOuniOyKpO2BrOulvCDsgqzsmqntlZjsl6wg7Ji17IWY7J2EIOyhsO2Vqe2VoCDsiJgg7J6I7J2MXG4gICAqIOyYiDogOCB8IDMyIC0+IOqzoOycoCDri6jslrQg7IiY66GcIOuCmOuIhOqzoCAwfjEg7Iqk7LyA7J2866eBXG4gICAqL1xuICBub3JtYWxpemF0aW9uPzogbnVtYmVyO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzRkFBc0YsR0FvYXRGLFdBbUJFIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert-builder.d.ts","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7F,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7E;;;GAGG;AACH,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,KAAK,kBAAkB,CAAC,MAAM,SAAS,SAAS,CAAC,oBAAoB,CAAC,IACpE,MAAM,SAAS,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;AAG/F,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAGF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,SAAS,CAAC,oBAAoB,CAAC,IAAI;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IACvE,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;CACxC,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAOzD;AAED,qBAAa,aAAa;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;IAK/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAwBtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;SACF,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO;KAClF,GACA,KAAK;
|
|
1
|
+
{"version":3,"file":"upsert-builder.d.ts","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,8 +89,14 @@ export class UpsertBuilder {
|
|
|
89
89
|
rowKey,
|
|
90
90
|
rowValue
|
|
91
91
|
];
|
|
92
|
+
} else if (isArray(rowValue)) {
|
|
93
|
+
// 배열은 그대로 저장
|
|
94
|
+
return [
|
|
95
|
+
rowKey,
|
|
96
|
+
rowValue
|
|
97
|
+
];
|
|
92
98
|
} else if (typeof rowValue === "object" && !(rowValue instanceof Date)) {
|
|
93
|
-
// object인 경우 JSON으로 변환
|
|
99
|
+
// 일반 object인 경우 JSON으로 변환
|
|
94
100
|
return [
|
|
95
101
|
rowKey,
|
|
96
102
|
rowValue === null ? null : JSON.stringify(rowValue)
|
|
@@ -202,12 +208,50 @@ export class UpsertBuilder {
|
|
|
202
208
|
// INSERT 모드 - RETURNING 사용
|
|
203
209
|
resultRows = await wdb.insert(dataForDb).into(tableName).returning(selectFields);
|
|
204
210
|
} else {
|
|
205
|
-
// UPSERT 모드 -
|
|
206
|
-
const
|
|
211
|
+
// UPSERT 모드 - id 없는 row들의 id를 사전 조회로 채우기
|
|
212
|
+
const rowsWithoutId = dataForDb.filter((row)=>!row.id);
|
|
213
|
+
if (rowsWithoutId.length > 0 && table.uniqueIndexes.length > 0) {
|
|
214
|
+
// 모든 uniqueIndexes로 기존 레코드 조회
|
|
215
|
+
for (const uniqueIndex of table.uniqueIndexes){
|
|
216
|
+
const columns = uniqueIndex.columns.map((c)=>c.name);
|
|
217
|
+
// 조회할 조건들 추출 (각 row의 unique 컬럼 값들)
|
|
218
|
+
const conditions = [];
|
|
219
|
+
for (const row of rowsWithoutId){
|
|
220
|
+
const values = columns.map((col)=>row[col]);
|
|
221
|
+
// null이 포함된 조건은 제외 (PostgreSQL UNIQUE는 NULL 무시)
|
|
222
|
+
if (!values.some((v)=>v == null)) {
|
|
223
|
+
conditions.push(values);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (conditions.length === 0) continue;
|
|
227
|
+
// 배치 SELECT
|
|
228
|
+
const existingRows = await wdb(tableName).whereIn(columns, conditions).select("id", ...columns);
|
|
229
|
+
// Map 생성: unique 컬럼 조합 → id
|
|
230
|
+
const existingMap = new Map();
|
|
231
|
+
for (const existing of existingRows){
|
|
232
|
+
const key = columns.map((col)=>String(existing[col] ?? "")).join("---delimiter---");
|
|
233
|
+
const id = existing.id;
|
|
234
|
+
if (typeof id === "number") {
|
|
235
|
+
existingMap.set(key, id);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// id 없는 row들에 매칭되는 id 채우기
|
|
239
|
+
for (const row of rowsWithoutId){
|
|
240
|
+
if (row.id) continue; // 이미 다른 uniqueIndex에서 채워진 경우 스킵
|
|
241
|
+
const key = columns.map((col)=>String(row[col] ?? "")).join("---delimiter---");
|
|
242
|
+
const existingId = existingMap.get(key);
|
|
243
|
+
if (existingId) {
|
|
244
|
+
row.id = existingId;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// onConflict는 id만 사용 (모든 uniqueIndexes는 이미 사전 조회로 처리됨)
|
|
250
|
+
const conflictColumns = [
|
|
207
251
|
"id"
|
|
208
252
|
];
|
|
209
253
|
const allColumns = Object.keys(dataForDb[0]);
|
|
210
|
-
let updateColumns = allColumns.filter((c)
|
|
254
|
+
let updateColumns = allColumns.filter((c)=>c !== "id");
|
|
211
255
|
// inherit 옵션 처리 - inherit 컬럼은 update 대상에서 제외
|
|
212
256
|
if (options?.inherit?.length) {
|
|
213
257
|
const inheritColumns = options.inherit;
|
|
@@ -405,4 +449,4 @@ export class UpsertBuilder {
|
|
|
405
449
|
}
|
|
406
450
|
}
|
|
407
451
|
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS91cHNlcnQtYnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGlzQXJyYXksIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VGb3JlaWduS2V5cywgRGF0YWJhc2VTY2hlbWFFeHRlbmQsIEVudGl0eUluZGV4IH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkLCBjaHVuaywgbm9uTnVsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IGJhdGNoVXBkYXRlLCB0eXBlIFJvd1dpdGhJZCB9IGZyb20gXCIuL19iYXRjaF91cGRhdGVcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uS2V5cywgRm9yZWlnbktleUNvbHVtbnMsIFRhYmxlTmFtZSB9IGZyb20gXCIuL3B1cmkudHlwZXNcIjtcblxuLyoqXG4gKiBGSyDtg4DsnoUg7LaU66Gg7J2EIOychO2VtCBEYXRhYmFzZUZvcmVpZ25LZXlzIGV4cG9ydFxuICogKG1vZHVsZSBhdWdtZW50YXRpb24g7J6Q64+ZIOuhnOuTnCDrs7TsnqUpXG4gKi9cbmV4cG9ydCB0eXBlIHsgRGF0YWJhc2VGb3JlaWduS2V5cyB9O1xuXG50eXBlIEluaGVyaXRhYmxlQ29sdW1uczxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+PiA9XG4gIFRUYWJsZSBleHRlbmRzIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kID8gQ29sdW1uS2V5czxEYXRhYmFzZVNjaGVtYUV4dGVuZFtUVGFibGVdPiA6IG5ldmVyO1xuXG4vLyDthYzsnbTruJQg642w7J207YSwIO2DgOyehVxudHlwZSBUYWJsZURhdGEgPSB7XG4gIHJlZmVyZW5jZXM6IFNldDxzdHJpbmc+O1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICB1bmlxdWVJbmRleGVzOiBFbnRpdHlJbmRleFtdO1xuICB1bmlxdWVzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuLy8g7LC47KGwIO2VhOuTnCDtg4DsnoVcbmV4cG9ydCB0eXBlIFVCUmVmID0ge1xuICB1dWlkOiBzdHJpbmc7XG4gIG9mOiBzdHJpbmc7XG4gIHVzZT86IHN0cmluZztcbn07XG5cbi8vIHVwc2VydCDsmLXshZhcbmV4cG9ydCB0eXBlIFVwc2VydE9wdGlvbnM8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPERhdGFiYXNlU2NoZW1hRXh0ZW5kPj4gPSB7XG4gIGNodW5rU2l6ZT86IG51bWJlcjtcbiAgY2xlYW5PcnBoYW5zPzogRm9yZWlnbktleUNvbHVtbnM8VFRhYmxlPiB8IEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5bXTtcbiAgaW5oZXJpdD86IEluaGVyaXRhYmxlQ29sdW1uczxUVGFibGU+W107XG59O1xuXG4vLyBpbnNlcnRPbmx5IOyYteyFmFxuZXhwb3J0IHR5cGUgSW5zZXJ0T25seU9wdGlvbnMgPSB7XG4gIGNodW5rU2l6ZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZkZpZWxkKGZpZWxkOiB1bmtub3duKTogZmllbGQgaXMgVUJSZWYge1xuICByZXR1cm4gKFxuICAgIGZpZWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICBmaWVsZCAhPT0gbnVsbCAmJlxuICAgIChmaWVsZCBhcyBVQlJlZik/Lm9mICE9PSB1bmRlZmluZWQgJiZcbiAgICAoZmllbGQgYXMgVUJSZWYpPy51dWlkICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwc2VydEJ1aWxkZXIge1xuICB0YWJsZXM6IE1hcDxzdHJpbmcsIFRhYmxlRGF0YT47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudGFibGVzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgZ2V0VGFibGUodGFibGVOYW1lOiBzdHJpbmcpOiBUYWJsZURhdGEge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZXMuZ2V0KHRhYmxlTmFtZSk7XG4gICAgaWYgKHRhYmxlKSB7XG4gICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVTcGVjID0gKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBFbnRpdHlNYW5hZ2VyLmdldFRhYmxlU3BlYyh0YWJsZU5hbWUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICBjb25zdCB0YWJsZURhdGEgPSB7XG4gICAgICByZWZlcmVuY2VzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIHJvd3M6IFtdLFxuICAgICAgdW5pcXVlSW5kZXhlczogdGFibGVTcGVjPy51bmlxdWVJbmRleGVzID8/IFtdLFxuICAgICAgdW5pcXVlc01hcDogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICB9O1xuICAgIHRoaXMudGFibGVzLnNldCh0YWJsZU5hbWUsIHRhYmxlRGF0YSk7XG4gICAgcmV0dXJuIHRhYmxlRGF0YTtcbiAgfVxuXG4gIGhhc1RhYmxlKHRhYmxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzLmhhcyh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcmVnaXN0ZXI8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgcm93OiB7XG4gICAgICBba2V5IGluIFRdPzogVUJSZWYgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50IHwgbnVsbCB8IG9iamVjdCB8IHVua25vd247XG4gICAgfSxcbiAgKTogVUJSZWYge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZSh0YWJsZU5hbWUpO1xuXG4gICAgLy8g7ZW064u5IO2FjOydtOu4lOydmCB1bmlxdWUg7J24642x7Iqk66W8IOyInO2ajO2VmOupsCDtgqQg7IOd7ISxXG4gICAgY29uc3QgdW5pcXVlS2V5cyA9IHRhYmxlLnVuaXF1ZUluZGV4ZXNcbiAgICAgIC5tYXAoKHVucUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUtleUFycmF5ID0gdW5xSW5kZXguY29sdW1ucy5tYXAoKHVucUNvbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IHJvd1t1bnFDb2wubmFtZSBhcyBrZXlvZiB0eXBlb2Ygcm93XTtcbiAgICAgICAgICBpZiAoaXNSZWZGaWVsZCh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsLnV1aWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByb3dbdW5xQ29sLm5hbWUgYXMga2V5b2YgdHlwZW9mIHJvd10gPz8gcmFuZG9tVVVJRCgpOyAvLyBudWxsYWJsZeyduCDqsr3smrAgdXVpZOuhnCDrnpzrjaTqsJIg7IK97J6FXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDqsJLsnbQg66qo65GQIG51bGzsnbgg6rK97JqwIO2CpCDsg53shLEg7Yyo7IqkXG4gICAgICAgIGlmICh1bmlxdWVLZXlBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5pcXVlS2V5QXJyYXkuam9pbihcIi0tLWRlbGltaXRlci0tXCIpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIobm9uTnVsbGFibGUpO1xuXG4gICAgLy8gdXVpZCDsg53shLEg66Gc7KeBXG4gICAgY29uc3QgeyB1dWlkLCBpc1JldXNlZCB9ID0gKCgpID0+IHtcbiAgICAgIC8vIO2CpOulvCDsiJztmoztlZjsl6wg7J2066+4IOyhtOyerO2VmOuKlCDtgqTqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgICAgaWYgKHVuaXF1ZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IHVuaXF1ZUtleSBvZiB1bmlxdWVLZXlzKSB7XG4gICAgICAgICAgaWYgKHRhYmxlLnVuaXF1ZXNNYXAuaGFzKHVuaXF1ZUtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHV1aWQ6IGFzc2VydERlZmluZWQodGFibGUudW5pcXVlc01hcC5nZXQodW5pcXVlS2V5KSwgXCJVbmlxdWUga2V5IG5vdCBmb3VuZFwiKSxcbiAgICAgICAgICAgICAgaXNSZXVzZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDssL7snYQg7IiYIOyXhuuKlCDqsr3smrAg7IOd7ISxXG4gICAgICByZXR1cm4geyB1dWlkOiByYW5kb21VVUlEKCksIGlzUmV1c2VkOiBmYWxzZSB9O1xuICAgIH0pKCk7XG5cbiAgICAvLyDrqqjrk6Ag7Jyg64uI7YGs7YKk7JeQIOuMgO2VtCDsnKDri4jtgazrp7Xsl5AgdXVpZCDsoIDsnqVcbiAgICBpZiAodW5pcXVlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHVuaXF1ZUtleSBvZiB1bmlxdWVLZXlzKSB7XG4gICAgICAgIHRhYmxlLnVuaXF1ZXNNYXAuc2V0KHVuaXF1ZUtleSwgdXVpZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g7J20IO2FjOydtOu4lOyXkCDsgqzsmqnrkJwgUmVmRmllbGTrpbwg7Iic7ZqM7ZWY7JesLCDtmITsnqwg7YWM7J2067iUIOygleuztOyXkCDslrTrlqQg7ZWE65Oc66W8IOywuOyhsO2VmOuKlOyngCDstpTqsIBcbiAgICAvLyDsnbQg7KCV67O066W8IOuCmOykkeyXkCDsuZjtmZjtlaAg65WMIOyCrOyaqVxuICAgIHJvdyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykubWFwKChbcm93S2V5LCByb3dWYWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKGlzUmVmRmllbGQocm93VmFsdWUpKSB7XG4gICAgICAgICAgcm93VmFsdWUudXNlID8/PSBcImlkXCI7XG4gICAgICAgICAgdGFibGUucmVmZXJlbmNlcy5hZGQoYCR7cm93VmFsdWUub2Z9LiR7cm93VmFsdWUudXNlfWApO1xuICAgICAgICAgIHJldHVybiBbcm93S2V5LCByb3dWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvd1ZhbHVlID09PSBcIm9iamVjdFwiICYmICEocm93VmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAgIC8vIG9iamVjdOyduCDqsr3smrAgSlNPTuycvOuhnCDrs4DtmZhcbiAgICAgICAgICByZXR1cm4gW3Jvd0tleSwgcm93VmFsdWUgPT09IG51bGwgPyBudWxsIDogSlNPTi5zdHJpbmdpZnkocm93VmFsdWUpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW3Jvd0tleSwgcm93VmFsdWVdO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApIGFzIHsgW2tleSBpbiBUXT86IHVua25vd24gfTtcblxuICAgIHRhYmxlLnJvd3MucHVzaCh7XG4gICAgICB1dWlkLFxuICAgICAgLi4ucm93LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0OiBVQlJlZiA9IHtcbiAgICAgIG9mOiB0YWJsZU5hbWUsXG4gICAgICB1dWlkOiAocm93IGFzIHsgdXVpZD86IHN0cmluZyB9KS51dWlkID8/IHV1aWQsXG4gICAgfTtcblxuICAgIE5haXRlLnQoXCJwdXJpOnViLXJlZ2lzdGVyXCIsIHtcbiAgICAgIHRhYmxlTmFtZSxcbiAgICAgIHV1aWQ6IHJlc3VsdC51dWlkLFxuICAgICAgaXNVdWlkUmV1c2VkOiBpc1JldXNlZCxcbiAgICAgIHJvdyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyB1cHNlcnQ8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPERhdGFiYXNlU2NoZW1hRXh0ZW5kPj4oXG4gICAgd2RiOiBLbmV4LFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICAgIG9wdGlvbnM/OiBVcHNlcnRPcHRpb25zPFRUYWJsZT4sXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRPckluc2VydCh3ZGIsIHRhYmxlTmFtZSwgXCJ1cHNlcnRcIiwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRPbmx5PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+KFxuICAgIHdkYjogS25leCxcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogSW5zZXJ0T25seU9wdGlvbnMsXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRPckluc2VydCh3ZGIsIHRhYmxlTmFtZSwgXCJpbnNlcnRcIiwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB1cHNlcnRPckluc2VydDxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+PihcbiAgICB3ZGI6IEtuZXgsXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgb3B0aW9ucz86IFVwc2VydE9wdGlvbnM8VFRhYmxlPixcbiAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGlmICh0aGlzLmhhc1RhYmxlKHRhYmxlTmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlcy5nZXQodGFibGVOYW1lKTtcbiAgICBpZiAodGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIO2FjOydtOu4lCAke3RhYmxlTmFtZX3sl5AgdXBzZXJ0IOyalOyyrWApO1xuICAgIH0gZWxzZSBpZiAodGFibGUucm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0YWJsZU5hbWV97JeQIHVwc2VydCDtlaAg642w7J207YSw6rCAIOyXhuyKteuLiOuLpC5gKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0YWJsZS5yb3dzLnNvbWUoKHJvdykgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMocm93KS5zb21lKChbLCB2YWx1ZV0pID0+IGlzUmVmRmllbGQodmFsdWUpICYmIHZhbHVlLm9mICE9PSB0YWJsZU5hbWUpLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RhYmxlTmFtZX0g7ZW06rKw65CY7KeAIOyViuydgCDssLjsobDqsIAg7J6I7Iq164uI64ukLmApO1xuICAgIH1cblxuICAgIC8vIOyghOyytCDthYzsnbTruJQg7Iic7ZqM7ZWY7JesIO2YhOyerCDthYzsnbTruJQg7LC47KGw7ZWY64qUIOuqqOuToCDthYzsnbTruJQg7LaU7LacXG4gICAgY29uc3QgeyByZWZlcmVuY2VzLCByZWZUYWJsZXMgfSA9IEFycmF5LmZyb20odGhpcy50YWJsZXMpLnJlZHVjZShcbiAgICAgIChyLCBbLCB0YWJsZV0pID0+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gQXJyYXkuZnJvbSh0YWJsZS5yZWZlcmVuY2VzLnZhbHVlcygpKS5maW5kKChyZWYpID0+XG4gICAgICAgICAgcmVmLmluY2x1ZGVzKGAke3RhYmxlTmFtZX0uYCksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgICByLnJlZmVyZW5jZXMucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICAgIHIucmVmVGFibGVzLnB1c2godGFibGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByZWZlcmVuY2VzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICAgICAgcmVmVGFibGVzOiBbXSBhcyBUYWJsZURhdGFbXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBleHRyYWN0RmllbGRzID0gdW5pcXVlKHJlZmVyZW5jZXMpXG4gICAgICAubWFwKChyZWZlcmVuY2UpID0+IHJlZmVyZW5jZS5zcGxpdChcIi5cIilbMV0pXG4gICAgICAuZmlsdGVyKChmaWVsZCk6IGZpZWxkIGlzIHN0cmluZyA9PiBmaWVsZCAhPT0gdW5kZWZpbmVkKTtcblxuICAgIC8vIOydmOyhtOyEsSDsiJzshJzsl5Ag65Sw6528IOugiOuyqOuzhCDqt7jro7ntmZQgKOyekOq4sCDssLjsobDqsIAg7JeG7Jy866m0IExldmVsIDAg7ZWY64KYKVxuICAgIGNvbnN0IHsgbGV2ZWxzLCBoYXNDaXJjdWxhciB9ID0gdGhpcy5idWlsZEluc2VydExldmVscyh0YWJsZS5yb3dzLCB0YWJsZU5hbWUpO1xuXG4gICAgaWYgKGhhc0NpcmN1bGFyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGFibGVOYW1lfeyXkCDsiJztmZgg7J6Q6riwIOywuOyhsOqwgCDsnojsirXri4jri6QuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXVpZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xuICAgIGNvbnN0IGFsbElkczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8vIOugiOuyqOuzhOuhnCDsiJzssKgg7LKY66asXG4gICAgZm9yIChjb25zdCBsZXZlbFJvd3Mgb2YgbGV2ZWxzKSB7XG4gICAgICAvLyDsnbTsoIQg66CI67Ko7JeQ7IScIOyWu+ydgCBJROuhnCDsnpDquLAg7LC47KGwIO2VtOqysFxuICAgICAgY29uc3QgcmVzb2x2ZWRSb3dzID0gbGV2ZWxSb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0geyAuLi5yb3cgfTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocm93KSkge1xuICAgICAgICAgIGlmIChpc1JlZkZpZWxkKHZhbHVlKSAmJiB2YWx1ZS5vZiA9PT0gdGFibGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB1dWlkTWFwLmdldCh2YWx1ZS51dWlkKTtcblxuICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCB1dWlkICR7dmFsdWUudXVpZH0gLS0gaW4gJHt0YWJsZU5hbWV9YCk7XG5cbiAgICAgICAgICAgIHJlc29sdmVkW2tleV0gPSAocGFyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVt2YWx1ZS51c2UgPz8gXCJpZFwiXTtcblxuICAgICAgICAgICAgTmFpdGUudChcInB1cmk6dWItcmVmLXJlc29sdmVkXCIsIHtcbiAgICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgICBmaWVsZDoga2V5LFxuICAgICAgICAgICAgICBmcm9tOiB7IG9mOiB2YWx1ZS5vZiwgdXVpZDogdmFsdWUudXVpZCwgdXNlOiB2YWx1ZS51c2UgPz8gXCJpZFwiIH0sXG4gICAgICAgICAgICAgIHRvOiByZXNvbHZlZFtrZXldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyDtmITsnqwg66CI67KoIHVwc2VydFxuICAgICAgY29uc3QgY2h1bmtTaXplID0gb3B0aW9ucz8uY2h1bmtTaXplO1xuICAgICAgY29uc3QgbGV2ZWxDaHVua3MgPSBjaHVua1NpemUgPyBjaHVuayhyZXNvbHZlZFJvd3MsIGNodW5rU2l6ZSkgOiBbcmVzb2x2ZWRSb3dzXTtcbiAgICAgIGNvbnN0IHNlbGVjdEZpZWxkcyA9IHVuaXF1ZShbXCJpZFwiLCAuLi5leHRyYWN0RmllbGRzXSk7XG5cbiAgICAgIGZvciAoY29uc3QgZGF0YUNodW5rIG9mIGxldmVsQ2h1bmtzKSB7XG4gICAgICAgIGlmIChkYXRhQ2h1bmsubGVuZ3RoID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICAvLyB1dWlk66W8IOuzhOuPhOuhnCDrs7TqtIDtlZjqs6AsIERC7JeQIOyggOyepe2VoCDrjbDsnbTthLDsl5DshJwg7KCc6rGwXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVXVpZHMgPSBkYXRhQ2h1bmsubWFwKChyKSA9PiByLnV1aWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgZGF0YUZvckRiID0gZGF0YUNodW5rLm1hcCgoeyB1dWlkLCAuLi5yZXN0IH0pID0+IHJlc3QpO1xuXG4gICAgICAgIGxldCByZXN1bHRSb3dzOiB7IGlkOiBudW1iZXI7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVtdO1xuXG4gICAgICAgIGlmIChtb2RlID09PSBcImluc2VydFwiKSB7XG4gICAgICAgICAgLy8gSU5TRVJUIOuqqOuTnCAtIFJFVFVSTklORyDsgqzsmqlcbiAgICAgICAgICByZXN1bHRSb3dzID0gYXdhaXQgd2RiLmluc2VydChkYXRhRm9yRGIpLmludG8odGFibGVOYW1lKS5yZXR1cm5pbmcoc2VsZWN0RmllbGRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVUFNFUlQg66qo65OcIC0gb25Db25mbGljdCDsgqzsmqkgKHVuaXF1ZSBpbmRleCDsl4bsnLzrqbQgUEsgZmFsbGJhY2spXG4gICAgICAgICAgY29uc3QgY29uZmxpY3RDb2x1bW5zID0gdGFibGUudW5pcXVlSW5kZXhlc1swXT8uY29sdW1ucy5tYXAoKGMpID0+IGMubmFtZSkgPz8gW1wiaWRcIl07XG5cbiAgICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gT2JqZWN0LmtleXMoZGF0YUZvckRiWzBdKTtcbiAgICAgICAgICBsZXQgdXBkYXRlQ29sdW1ucyA9IGFsbENvbHVtbnMuZmlsdGVyKChjKSA9PiAhY29uZmxpY3RDb2x1bW5zLmluY2x1ZGVzKGMpKTtcblxuICAgICAgICAgIC8vIGluaGVyaXQg7Ji17IWYIOyymOumrCAtIGluaGVyaXQg7Lus65+87J2AIHVwZGF0ZSDrjIDsg4Hsl5DshJwg7KCc7Jm4XG4gICAgICAgICAgaWYgKG9wdGlvbnM/LmluaGVyaXQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW5oZXJpdENvbHVtbnMgPSBvcHRpb25zLmluaGVyaXQgYXMgc3RyaW5nW107XG5cbiAgICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVkRnJvbVVwZGF0ZSA9IHVwZGF0ZUNvbHVtbnMuZmlsdGVyKChjKSA9PiBpbmhlcml0Q29sdW1ucy5pbmNsdWRlcyhjKSk7XG4gICAgICAgICAgICB1cGRhdGVDb2x1bW5zID0gdXBkYXRlQ29sdW1ucy5maWx0ZXIoKGMpID0+ICFpbmhlcml0Q29sdW1ucy5pbmNsdWRlcyhjKSk7XG5cbiAgICAgICAgICAgIC8vIOyLpOygnOuhnCDsoJzsmbjrkJwg7Lus65+8IOuhnOq5hVxuICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkRnJvbVVwZGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgTmFpdGUudChcInB1cmk6dWItaW5oZXJpdFwiLCB7XG4gICAgICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGluaGVyaXRDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVkRnJvbVVwZGF0ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdXBkYXRlQ29sdW1uc+qwgCDruYTslrTsnojslrTrj4QgbWVyZ2UoKeulvCDsgqzsmqntlZjsl6wg66qo65OgIO2WieydtCBSRVRVUk5JTkfrkJjrj4TroZ0g67O07J6lXG4gICAgICAgICAgY29uc3QgbWVyZ2VDb2x1bW5zID0gdXBkYXRlQ29sdW1ucy5sZW5ndGggPyB1cGRhdGVDb2x1bW5zIDogY29uZmxpY3RDb2x1bW5zO1xuXG4gICAgICAgICAgcmVzdWx0Um93cyA9IGF3YWl0IHdkYlxuICAgICAgICAgICAgLmluc2VydChkYXRhRm9yRGIpXG4gICAgICAgICAgICAuaW50byh0YWJsZU5hbWUpXG4gICAgICAgICAgICAub25Db25mbGljdChjb25mbGljdENvbHVtbnMpXG4gICAgICAgICAgICAubWVyZ2UobWVyZ2VDb2x1bW5zKVxuICAgICAgICAgICAgLnJldHVybmluZyhzZWxlY3RGaWVsZHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVXVpZHMubGVuZ3RoICE9PSByZXN1bHRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0YWJsZU5hbWV9OiByZWdpc3Rlci9yZXR1cm5pbmcg67aI7J287LmYYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdFJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB1dWlkTWFwLnNldChvcmlnaW5hbFV1aWRzW2ldLCByZXN1bHRSb3dzW2ldKTtcbiAgICAgICAgICBhbGxJZHMucHVzaChyZXN1bHRSb3dzW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIO2VtOuLuSDthYzsnbTruJQg7LC47KGw66W8IOyLpOygnCDrsLjrpZjroZwg67OA6rK9XG4gICAgZm9yIChjb25zdCB0YWJsZSBvZiByZWZUYWJsZXMpIHtcbiAgICAgIHRhYmxlLnJvd3MgPSB0YWJsZS5yb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJvdykpIHtcbiAgICAgICAgICBjb25zdCBwcm9wID0gcm93W2tleV07XG4gICAgICAgICAgaWYgKGlzUmVmRmllbGQocHJvcCkgJiYgcHJvcC5vZiA9PT0gdGFibGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB1dWlkTWFwLmdldChwcm9wLnV1aWQpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihwcm9wKTtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIHV1aWQgJHtwcm9wLnV1aWR9IC0tIGluICR7dGFibGVOYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IChwYXJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3Byb3AudXNlID8/IFwiaWRcIl07XG4gICAgICAgICAgICByb3dba2V5XSA9IHJlc29sdmVkVmFsdWU7XG5cbiAgICAgICAgICAgIE5haXRlLnQoXCJwdXJpOnViLXJlZi1yZXNvbHZlZFwiLCB7XG4gICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgZnJvbTogeyBvZjogcHJvcC5vZiwgdXVpZDogcHJvcC51dWlkLCB1c2U6IHByb3AudXNlID8/IFwiaWRcIiB9LFxuICAgICAgICAgICAgICB0bzogcmVzb2x2ZWRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LmNsZWFuT3JwaGFucykge1xuICAgICAgY29uc3QgY2xlYW5PcnBoYW5zID0gb3B0aW9ucy5jbGVhbk9ycGhhbnM7XG4gICAgICBjb25zdCBma0NvbHVtbnMgPSBpc0FycmF5KGNsZWFuT3JwaGFucylcbiAgICAgICAgPyAoY2xlYW5PcnBoYW5zIGFzIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5bXSlcbiAgICAgICAgOiBbY2xlYW5PcnBoYW5zIGFzIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5dO1xuXG4gICAgICAvLyDtmITsnqwgcmVnaXN0ZXLrkJwg66CI7L2U65Oc65Ok7J2YIEZLIOqwkuuTpCDstpTstpxcbiAgICAgIGNvbnN0IGZrQ29uZGl0aW9ucyA9IGZrQ29sdW1ucy5tYXAoKGZrQ29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZrVmFsdWVzID0gWy4uLm5ldyBTZXQodGFibGUucm93cy5tYXAoKHJvdykgPT4gcm93W2ZrQ29sXSkuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpKV07XG4gICAgICAgIHJldHVybiB7IGNvbHVtbjogZmtDb2wsIHZhbHVlczogZmtWYWx1ZXMgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyDrqqjrk6AgRksg7Lus65+87JeQIOqwkuydtCDsnojripQg6rK97Jqw7JeQ66eMIOyCreygnCDsi6TtlolcbiAgICAgIGlmIChma0NvbmRpdGlvbnMuZXZlcnkoKGZjKSA9PiBmYy52YWx1ZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgbGV0IGRlbGV0ZVF1ZXJ5ID0gd2RiKHRhYmxlTmFtZSk7XG5cbiAgICAgICAgLy8g6rCBIEZLIOy7rOufvOyXkCDrjIDtlZwgV0hFUkUgSU4g7KGw6rG0IOy2lOqwgFxuICAgICAgICBmb3IgKGNvbnN0IHsgY29sdW1uLCB2YWx1ZXMgfSBvZiBma0NvbmRpdGlvbnMpIHtcbiAgICAgICAgICBkZWxldGVRdWVyeSA9IGRlbGV0ZVF1ZXJ5LndoZXJlSW4oY29sdW1uLCB2YWx1ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g67Cp6riIIHVwc2VydO2VnCBJROuKlCDsoJzsmbhcbiAgICAgICAgZGVsZXRlUXVlcnkgPSBkZWxldGVRdWVyeS53aGVyZU5vdEluKFwiaWRcIiwgYWxsSWRzKTtcblxuICAgICAgICBjb25zdCBkZWxldGVkQ291bnQgPSBhd2FpdCBkZWxldGVRdWVyeS5kZWxldGUoKTtcblxuICAgICAgICBOYWl0ZS50KFwicHVyaTp1Yi1jbGVhbi1vcnBoYW5zXCIsIHtcbiAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgY2xlYW5PcnBoYW5zOiBma0NvbHVtbnMsXG4gICAgICAgICAgZGVsZXRlZENvdW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDtlbTri7kg7YWM7J2067iU7J2YIOuNsOydtO2EsCDstIjquLDtmZRcbiAgICB0YWJsZS5yb3dzID0gW107XG4gICAgdGFibGUucmVmZXJlbmNlcy5jbGVhcigpO1xuICAgIHRhYmxlLnVuaXF1ZXNNYXAuY2xlYXIoKTtcblxuICAgIE5haXRlLnQoXCJwdXJpOnViLXVwc2VydGVkXCIsIHtcbiAgICAgIHRhYmxlTmFtZSxcbiAgICAgIG1vZGUsXG4gICAgICByb3dDb3VudDogYWxsSWRzLmxlbmd0aCxcbiAgICAgIHJldHVybmVkSWRzOiBhbGxJZHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWxsSWRzO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQmF0Y2goXG4gICAgd2RiOiBLbmV4LFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBjaHVua1NpemU/OiBudW1iZXI7XG4gICAgICB3aGVyZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2h1bmtTaXplOiBvcHRpb25zPy5jaHVua1NpemUgPz8gNTAwLFxuICAgICAgd2hlcmU6IG9wdGlvbnM/LndoZXJlID8/IFwiaWRcIixcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaGFzVGFibGUodGFibGVOYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlcy5nZXQodGFibGVOYW1lKTtcbiAgICBpZiAoIXRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOuTseuhneuQmOyngCDslYrsnYAg7YWM7J2067iUICR7dGFibGVOYW1lfeyXkCB1cGRhdGVCYXRjaCDsmpTssq1gKTtcbiAgICB9IGVsc2UgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2hlcmVDb2x1bW5zID0gQXJyYXkuaXNBcnJheShvcHRpb25zLndoZXJlKSA/IG9wdGlvbnMud2hlcmUgOiBbb3B0aW9ucy53aGVyZSA/PyBcImlkXCJdO1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5yb3dzLm1hcCgoX3JvdykgPT4ge1xuICAgICAgY29uc3QgeyB1dWlkOiBfLCAuLi5yb3cgfSA9IF9yb3c7IC8vIHV1aWQg7KCc7Jm4XG4gICAgICByZXR1cm4gcm93IGFzIFJvd1dpdGhJZDxzdHJpbmc+O1xuICAgIH0pO1xuXG4gICAgYXdhaXQgYmF0Y2hVcGRhdGUod2RiLCB0YWJsZU5hbWUsIHdoZXJlQ29sdW1ucywgcm93cywgb3B0aW9ucy5jaHVua1NpemUpO1xuXG4gICAgTmFpdGUudChcInB1cmk6dWItYmF0Y2gtdXBkYXRlZFwiLCB7XG4gICAgICB0YWJsZU5hbWUsXG4gICAgICByb3dDb3VudDogcm93cy5sZW5ndGgsXG4gICAgICB3aGVyZUNvbHVtbnMsXG4gICAgfSk7XG5cbiAgICAvLyB1cGRhdGVCYXRjaCDsmYTro4wg7ZuEIOyymOumrOuQnCDrjbDsnbTthLAg7KCc6rGwXG4gICAgdGFibGUucm93cyA9IFtdO1xuICAgIHRhYmxlLnJlZmVyZW5jZXMuY2xlYXIoKTtcbiAgICB0YWJsZS51bmlxdWVzTWFwLmNsZWFyKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiByb3dz66W8IOydmOyhtOyEsSDsiJzshJzsl5Ag65Sw6528IOugiOuyqOuzhOuhnCDqt7jro7ntmZRcbiAgICogLSDsnpDquLAg7LC47KGwIOyXhuuKlCDqsr3smrAgOiDrqqjrk6Agcm93c+qwgCBMZXZlbCAwXG4gICAqIC0g7J6Q6riwIOywuOyhsCDsnojripQg6rK97JqwIDog7J6Q6riwIOywuOyhsCDqtIDqs4Trpbwg7JyE7IOBIOygleugrO2VmOyXrCDroIjrsqjrs4TroZwg6re466O57ZmUXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSW5zZXJ0TGV2ZWxzKFxuICAgIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10sXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICk6IHsgbGV2ZWxzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdW107IGhhc0NpcmN1bGFyOiBib29sZWFuIH0ge1xuICAgIC8vIDEuIOyekOq4sCDssLjsobDqsIAg7JeG7Jy866m0IO2VnCDroIjrsqjroZwg7LKY66asXG4gICAgY29uc3QgaGFzU2VsZlJlZiA9IHJvd3NcbiAgICAgIC5mbGF0TWFwKChyb3cpID0+IE9iamVjdC52YWx1ZXMocm93KSlcbiAgICAgIC5zb21lKCh2YWx1ZSkgPT4gaXNSZWZGaWVsZCh2YWx1ZSkgJiYgdmFsdWUub2YgPT09IHRhYmxlTmFtZSk7XG4gICAgaWYgKCFoYXNTZWxmUmVmKSByZXR1cm4geyBsZXZlbHM6IFtyb3dzXSwgaGFzQ2lyY3VsYXI6IGZhbHNlIH07XG5cbiAgICAvLyAyLiB1dWlkIOKGkiByb3cg66ek7ZWRICjspJHrs7UgdXVpZCDrsKnsp4ApXG4gICAgY29uc3Qgcm93QnlVdWlkID0gbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpO1xuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IHV1aWQgPSByb3cudXVpZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoIXV1aWQpIHRocm93IG5ldyBFcnJvcihgYnVpbGRJbnNlcnRMZXZlbHM6IHV1aWTqsIAg7JeG64qUIHJvdyAtLSBpbiAke3RhYmxlTmFtZX1gKTtcbiAgICAgIHJvd0J5VXVpZC5zZXQodXVpZCwgcm93KTtcbiAgICB9XG5cbiAgICBsZXQgcGVuZGluZyA9IEFycmF5LmZyb20ocm93QnlVdWlkLnZhbHVlcygpKTtcbiAgICBjb25zdCBsZXZlbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11bXSA9IFtdO1xuICAgIGNvbnN0IGluc2VydGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAvLyAzLiDroIjrsqjrs4Qg67aE66WYXG4gICAgd2hpbGUgKHBlbmRpbmcubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VycmVudExldmVsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW107XG4gICAgICBjb25zdCBuZXh0UGVuZGluZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwZW5kaW5nKSB7XG4gICAgICAgIC8vIOydtCByb3fqsIAg7LC47KGw7ZWY64qUIOyekOq4sCDssLjsobDrk6RcbiAgICAgICAgY29uc3Qgc2VsZlJlZnMgPSBPYmplY3QudmFsdWVzKHJvdykuZmlsdGVyKFxuICAgICAgICAgICh2YWx1ZSkgPT4gaXNSZWZGaWVsZCh2YWx1ZSkgJiYgdmFsdWUub2YgPT09IHRhYmxlTmFtZSxcbiAgICAgICAgKSBhcyBVQlJlZltdO1xuXG4gICAgICAgIC8vIOywuOyhsO2VmOuKlCDrqqjrk6AgdXVpZOqwgCDsnbTrr7ggaW5zZXJ0ZWTsl5Ag7J6I7Ja07JW8IOydtOuyiCDroIjrsqjsl5Ag7Y+s7ZWoXG4gICAgICAgIGNvbnN0IGNhbkluc2VydCA9IHNlbGZSZWZzLmV2ZXJ5KChyZWYpID0+IHtcbiAgICAgICAgICBpZiAoIXJvd0J5VXVpZC5oYXMocmVmLnV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgdXVpZCAke3JlZi51dWlkfSAtLSBpbiAke3RhYmxlTmFtZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGluc2VydGVkLmhhcyhyZWYudXVpZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjYW5JbnNlcnQpIHtcbiAgICAgICAgICBjdXJyZW50TGV2ZWwucHVzaChyb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRQZW5kaW5nLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDsiJztmZgg7LC47KGwIOqwkOyngFxuICAgICAgaWYgKGN1cnJlbnRMZXZlbC5sZW5ndGggPT09IDApIHJldHVybiB7IGxldmVsczogW10sIGhhc0NpcmN1bGFyOiB0cnVlIH07XG5cbiAgICAgIC8vIOugiOuyqCDtmZXsoJUgKyBpbnNlcnRlZCDqsLHsi6BcbiAgICAgIGxldmVscy5wdXNoKGN1cnJlbnRMZXZlbCk7XG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBjdXJyZW50TGV2ZWwpIHtcbiAgICAgICAgaW5zZXJ0ZWQuYWRkKHJvdy51dWlkIGFzIHN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHBlbmRpbmcgPSBuZXh0UGVuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4geyBsZXZlbHMsIGhhc0NpcmN1bGFyOiBmYWxzZSB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsicmFuZG9tVVVJRCIsImlzQXJyYXkiLCJ1bmlxdWUiLCJFbnRpdHlNYW5hZ2VyIiwiTmFpdGUiLCJhc3NlcnREZWZpbmVkIiwiY2h1bmsiLCJub25OdWxsYWJsZSIsImJhdGNoVXBkYXRlIiwiaXNSZWZGaWVsZCIsImZpZWxkIiwidW5kZWZpbmVkIiwib2YiLCJ1dWlkIiwiVXBzZXJ0QnVpbGRlciIsInRhYmxlcyIsIk1hcCIsImdldFRhYmxlIiwidGFibGVOYW1lIiwidGFibGUiLCJnZXQiLCJ0YWJsZVNwZWMiLCJnZXRUYWJsZVNwZWMiLCJ0YWJsZURhdGEiLCJyZWZlcmVuY2VzIiwiU2V0Iiwicm93cyIsInVuaXF1ZUluZGV4ZXMiLCJ1bmlxdWVzTWFwIiwic2V0IiwiaGFzVGFibGUiLCJoYXMiLCJyZWdpc3RlciIsInJvdyIsInVuaXF1ZUtleXMiLCJtYXAiLCJ1bnFJbmRleCIsInVuaXF1ZUtleUFycmF5IiwiY29sdW1ucyIsInVucUNvbCIsInZhbCIsIm5hbWUiLCJsZW5ndGgiLCJqb2luIiwiZmlsdGVyIiwiaXNSZXVzZWQiLCJ1bmlxdWVLZXkiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJyb3dLZXkiLCJyb3dWYWx1ZSIsInVzZSIsImFkZCIsIkRhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwicHVzaCIsInJlc3VsdCIsInQiLCJpc1V1aWRSZXVzZWQiLCJ1cHNlcnQiLCJ3ZGIiLCJvcHRpb25zIiwidXBzZXJ0T3JJbnNlcnQiLCJpbnNlcnRPbmx5IiwibW9kZSIsIkVycm9yIiwic29tZSIsInZhbHVlIiwicmVmVGFibGVzIiwiQXJyYXkiLCJmcm9tIiwicmVkdWNlIiwiciIsInJlZmVyZW5jZSIsInZhbHVlcyIsImZpbmQiLCJyZWYiLCJpbmNsdWRlcyIsImV4dHJhY3RGaWVsZHMiLCJzcGxpdCIsImxldmVscyIsImhhc0NpcmN1bGFyIiwiYnVpbGRJbnNlcnRMZXZlbHMiLCJ1dWlkTWFwIiwiYWxsSWRzIiwibGV2ZWxSb3dzIiwicmVzb2x2ZWRSb3dzIiwicmVzb2x2ZWQiLCJrZXkiLCJwYXJlbnQiLCJ0byIsImNodW5rU2l6ZSIsImxldmVsQ2h1bmtzIiwic2VsZWN0RmllbGRzIiwiZGF0YUNodW5rIiwib3JpZ2luYWxVdWlkcyIsImRhdGFGb3JEYiIsInJlc3QiLCJyZXN1bHRSb3dzIiwiaW5zZXJ0IiwiaW50byIsInJldHVybmluZyIsImNvbmZsaWN0Q29sdW1ucyIsImMiLCJhbGxDb2x1bW5zIiwia2V5cyIsInVwZGF0ZUNvbHVtbnMiLCJpbmhlcml0IiwiaW5oZXJpdENvbHVtbnMiLCJleGNsdWRlZEZyb21VcGRhdGUiLCJtZXJnZUNvbHVtbnMiLCJvbkNvbmZsaWN0IiwibWVyZ2UiLCJpIiwiaWQiLCJwcm9wIiwiY29uc29sZSIsImVycm9yIiwicmVzb2x2ZWRWYWx1ZSIsImNsZWFuT3JwaGFucyIsImZrQ29sdW1ucyIsImZrQ29uZGl0aW9ucyIsImZrQ29sIiwiZmtWYWx1ZXMiLCJ2IiwiY29sdW1uIiwiZXZlcnkiLCJmYyIsImRlbGV0ZVF1ZXJ5Iiwid2hlcmVJbiIsIndoZXJlTm90SW4iLCJkZWxldGVkQ291bnQiLCJkZWxldGUiLCJjbGVhciIsInJvd0NvdW50IiwicmV0dXJuZWRJZHMiLCJ1cGRhdGVCYXRjaCIsIndoZXJlIiwid2hlcmVDb2x1bW5zIiwiX3JvdyIsIl8iLCJoYXNTZWxmUmVmIiwiZmxhdE1hcCIsInJvd0J5VXVpZCIsInBlbmRpbmciLCJpbnNlcnRlZCIsImN1cnJlbnRMZXZlbCIsIm5leHRQZW5kaW5nIiwic2VsZlJlZnMiLCJjYW5JbnNlcnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxTQUFTO0FBRXBDLFNBQVNDLE9BQU8sRUFBRUMsTUFBTSxRQUFRLFVBQVU7QUFDMUMsU0FBU0MsYUFBYSxRQUFRLDhCQUEyQjtBQUN6RCxTQUFTQyxLQUFLLFFBQVEsb0JBQWlCO0FBRXZDLFNBQVNDLGFBQWEsRUFBRUMsS0FBSyxFQUFFQyxXQUFXLFFBQVEsb0JBQWlCO0FBQ25FLFNBQVNDLFdBQVcsUUFBd0IscUJBQWtCO0FBdUM5RCxPQUFPLFNBQVNDLFdBQVdDLEtBQWM7SUFDdkMsT0FDRUEsVUFBVUMsYUFDVkQsVUFBVSxRQUNWLEFBQUNBLE9BQWlCRSxPQUFPRCxhQUN6QixBQUFDRCxPQUFpQkcsU0FBU0Y7QUFFL0I7QUFFQSxPQUFPLE1BQU1HO0lBQ1hDLE9BQStCO0lBQy9CLGFBQWM7UUFDWixJQUFJLENBQUNBLE1BQU0sR0FBRyxJQUFJQztJQUNwQjtJQUVBQyxTQUFTQyxTQUFpQixFQUFhO1FBQ3JDLE1BQU1DLFFBQVEsSUFBSSxDQUFDSixNQUFNLENBQUNLLEdBQUcsQ0FBQ0Y7UUFDOUIsSUFBSUMsT0FBTztZQUNULE9BQU9BO1FBQ1Q7UUFFQSxNQUFNRSxZQUFZLEFBQUMsQ0FBQTtZ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
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS91cHNlcnQtYnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGlzQXJyYXksIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VGb3JlaWduS2V5cywgRGF0YWJhc2VTY2hlbWFFeHRlbmQsIEVudGl0eUluZGV4IH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkLCBjaHVuaywgbm9uTnVsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IGJhdGNoVXBkYXRlLCB0eXBlIFJvd1dpdGhJZCB9IGZyb20gXCIuL19iYXRjaF91cGRhdGVcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uS2V5cywgRm9yZWlnbktleUNvbHVtbnMsIFRhYmxlTmFtZSB9IGZyb20gXCIuL3B1cmkudHlwZXNcIjtcblxuLyoqXG4gKiBGSyDtg4DsnoUg7LaU66Gg7J2EIOychO2VtCBEYXRhYmFzZUZvcmVpZ25LZXlzIGV4cG9ydFxuICogKG1vZHVsZSBhdWdtZW50YXRpb24g7J6Q64+ZIOuhnOuTnCDrs7TsnqUpXG4gKi9cbmV4cG9ydCB0eXBlIHsgRGF0YWJhc2VGb3JlaWduS2V5cyB9O1xuXG50eXBlIEluaGVyaXRhYmxlQ29sdW1uczxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+PiA9XG4gIFRUYWJsZSBleHRlbmRzIGtleW9mIERhdGFiYXNlU2NoZW1hRXh0ZW5kID8gQ29sdW1uS2V5czxEYXRhYmFzZVNjaGVtYUV4dGVuZFtUVGFibGVdPiA6IG5ldmVyO1xuXG4vLyDthYzsnbTruJQg642w7J207YSwIO2DgOyehVxudHlwZSBUYWJsZURhdGEgPSB7XG4gIHJlZmVyZW5jZXM6IFNldDxzdHJpbmc+O1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICB1bmlxdWVJbmRleGVzOiBFbnRpdHlJbmRleFtdO1xuICB1bmlxdWVzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuLy8g7LC47KGwIO2VhOuTnCDtg4DsnoVcbmV4cG9ydCB0eXBlIFVCUmVmID0ge1xuICB1dWlkOiBzdHJpbmc7XG4gIG9mOiBzdHJpbmc7XG4gIHVzZT86IHN0cmluZztcbn07XG5cbi8vIHVwc2VydCDsmLXshZhcbmV4cG9ydCB0eXBlIFVwc2VydE9wdGlvbnM8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPERhdGFiYXNlU2NoZW1hRXh0ZW5kPj4gPSB7XG4gIGNodW5rU2l6ZT86IG51bWJlcjtcbiAgY2xlYW5PcnBoYW5zPzogRm9yZWlnbktleUNvbHVtbnM8VFRhYmxlPiB8IEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5bXTtcbiAgaW5oZXJpdD86IEluaGVyaXRhYmxlQ29sdW1uczxUVGFibGU+W107XG59O1xuXG4vLyBpbnNlcnRPbmx5IOyYteyFmFxuZXhwb3J0IHR5cGUgSW5zZXJ0T25seU9wdGlvbnMgPSB7XG4gIGNodW5rU2l6ZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZkZpZWxkKGZpZWxkOiB1bmtub3duKTogZmllbGQgaXMgVUJSZWYge1xuICByZXR1cm4gKFxuICAgIGZpZWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICBmaWVsZCAhPT0gbnVsbCAmJlxuICAgIChmaWVsZCBhcyBVQlJlZik/Lm9mICE9PSB1bmRlZmluZWQgJiZcbiAgICAoZmllbGQgYXMgVUJSZWYpPy51dWlkICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwc2VydEJ1aWxkZXIge1xuICB0YWJsZXM6IE1hcDxzdHJpbmcsIFRhYmxlRGF0YT47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudGFibGVzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgZ2V0VGFibGUodGFibGVOYW1lOiBzdHJpbmcpOiBUYWJsZURhdGEge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZXMuZ2V0KHRhYmxlTmFtZSk7XG4gICAgaWYgKHRhYmxlKSB7XG4gICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGVTcGVjID0gKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBFbnRpdHlNYW5hZ2VyLmdldFRhYmxlU3BlYyh0YWJsZU5hbWUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICBjb25zdCB0YWJsZURhdGEgPSB7XG4gICAgICByZWZlcmVuY2VzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIHJvd3M6IFtdLFxuICAgICAgdW5pcXVlSW5kZXhlczogdGFibGVTcGVjPy51bmlxdWVJbmRleGVzID8/IFtdLFxuICAgICAgdW5pcXVlc01hcDogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICB9O1xuICAgIHRoaXMudGFibGVzLnNldCh0YWJsZU5hbWUsIHRhYmxlRGF0YSk7XG4gICAgcmV0dXJuIHRhYmxlRGF0YTtcbiAgfVxuXG4gIGhhc1RhYmxlKHRhYmxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzLmhhcyh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcmVnaXN0ZXI8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgcm93OiB7XG4gICAgICBba2V5IGluIFRdPzogVUJSZWYgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50IHwgbnVsbCB8IG9iamVjdCB8IHVua25vd247XG4gICAgfSxcbiAgKTogVUJSZWYge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZSh0YWJsZU5hbWUpO1xuXG4gICAgLy8g7ZW064u5IO2FjOydtOu4lOydmCB1bmlxdWUg7J24642x7Iqk66W8IOyInO2ajO2VmOupsCDtgqQg7IOd7ISxXG4gICAgY29uc3QgdW5pcXVlS2V5cyA9IHRhYmxlLnVuaXF1ZUluZGV4ZXNcbiAgICAgIC5tYXAoKHVucUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUtleUFycmF5ID0gdW5xSW5kZXguY29sdW1ucy5tYXAoKHVucUNvbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IHJvd1t1bnFDb2wubmFtZSBhcyBrZXlvZiB0eXBlb2Ygcm93XTtcbiAgICAgICAgICBpZiAoaXNSZWZGaWVsZCh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsLnV1aWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByb3dbdW5xQ29sLm5hbWUgYXMga2V5b2YgdHlwZW9mIHJvd10gPz8gcmFuZG9tVVVJRCgpOyAvLyBudWxsYWJsZeyduCDqsr3smrAgdXVpZOuhnCDrnpzrjaTqsJIg7IK97J6FXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDqsJLsnbQg66qo65GQIG51bGzsnbgg6rK97JqwIO2CpCDsg53shLEg7Yyo7IqkXG4gICAgICAgIGlmICh1bmlxdWVLZXlBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5pcXVlS2V5QXJyYXkuam9pbihcIi0tLWRlbGltaXRlci0tXCIpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIobm9uTnVsbGFibGUpO1xuXG4gICAgLy8gdXVpZCDsg53shLEg66Gc7KeBXG4gICAgY29uc3QgeyB1dWlkLCBpc1JldXNlZCB9ID0gKCgpID0+IHtcbiAgICAgIC8vIO2CpOulvCDsiJztmoztlZjsl6wg7J2066+4IOyhtOyerO2VmOuKlCDtgqTqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgICAgaWYgKHVuaXF1ZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IHVuaXF1ZUtleSBvZiB1bmlxdWVLZXlzKSB7XG4gICAgICAgICAgaWYgKHRhYmxlLnVuaXF1ZXNNYXAuaGFzKHVuaXF1ZUtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHV1aWQ6IGFzc2VydERlZmluZWQodGFibGUudW5pcXVlc01hcC5nZXQodW5pcXVlS2V5KSwgXCJVbmlxdWUga2V5IG5vdCBmb3VuZFwiKSxcbiAgICAgICAgICAgICAgaXNSZXVzZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDssL7snYQg7IiYIOyXhuuKlCDqsr3smrAg7IOd7ISxXG4gICAgICByZXR1cm4geyB1dWlkOiByYW5kb21VVUlEKCksIGlzUmV1c2VkOiBmYWxzZSB9O1xuICAgIH0pKCk7XG5cbiAgICAvLyDrqqjrk6Ag7Jyg64uI7YGs7YKk7JeQIOuMgO2VtCDsnKDri4jtgazrp7Xsl5AgdXVpZCDsoIDsnqVcbiAgICBpZiAodW5pcXVlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHVuaXF1ZUtleSBvZiB1bmlxdWVLZXlzKSB7XG4gICAgICAgIHRhYmxlLnVuaXF1ZXNNYXAuc2V0KHVuaXF1ZUtleSwgdXVpZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g7J20IO2FjOydtOu4lOyXkCDsgqzsmqnrkJwgUmVmRmllbGTrpbwg7Iic7ZqM7ZWY7JesLCDtmITsnqwg7YWM7J2067iUIOygleuztOyXkCDslrTrlqQg7ZWE65Oc66W8IOywuOyhsO2VmOuKlOyngCDstpTqsIBcbiAgICAvLyDsnbQg7KCV67O066W8IOuCmOykkeyXkCDsuZjtmZjtlaAg65WMIOyCrOyaqVxuICAgIHJvdyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykubWFwKChbcm93S2V5LCByb3dWYWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKGlzUmVmRmllbGQocm93VmFsdWUpKSB7XG4gICAgICAgICAgcm93VmFsdWUudXNlID8/PSBcImlkXCI7XG4gICAgICAgICAgdGFibGUucmVmZXJlbmNlcy5hZGQoYCR7cm93VmFsdWUub2Z9LiR7cm93VmFsdWUudXNlfWApO1xuICAgICAgICAgIHJldHVybiBbcm93S2V5LCByb3dWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShyb3dWYWx1ZSkpIHtcbiAgICAgICAgICAvLyDrsLDsl7TsnYAg6re464yA66GcIOyggOyepVxuICAgICAgICAgIHJldHVybiBbcm93S2V5LCByb3dWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvd1ZhbHVlID09PSBcIm9iamVjdFwiICYmICEocm93VmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAgIC8vIOydvOuwmCBvYmplY3Tsnbgg6rK97JqwIEpTT07snLzroZwg67OA7ZmYXG4gICAgICAgICAgcmV0dXJuIFtyb3dLZXksIHJvd1ZhbHVlID09PSBudWxsID8gbnVsbCA6IEpTT04uc3RyaW5naWZ5KHJvd1ZhbHVlKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtyb3dLZXksIHJvd1ZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKSBhcyB7IFtrZXkgaW4gVF0/OiB1bmtub3duIH07XG5cbiAgICB0YWJsZS5yb3dzLnB1c2goe1xuICAgICAgdXVpZCxcbiAgICAgIC4uLnJvdyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdDogVUJSZWYgPSB7XG4gICAgICBvZjogdGFibGVOYW1lLFxuICAgICAgdXVpZDogKHJvdyBhcyB7IHV1aWQ/OiBzdHJpbmcgfSkudXVpZCA/PyB1dWlkLFxuICAgIH07XG5cbiAgICBOYWl0ZS50KFwicHVyaTp1Yi1yZWdpc3RlclwiLCB7XG4gICAgICB0YWJsZU5hbWUsXG4gICAgICB1dWlkOiByZXN1bHQudXVpZCxcbiAgICAgIGlzVXVpZFJldXNlZDogaXNSZXVzZWQsXG4gICAgICByb3csXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgdXBzZXJ0PFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+KFxuICAgIHdkYjogS25leCxcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICBvcHRpb25zPzogVXBzZXJ0T3B0aW9uczxUVGFibGU+LFxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0T3JJbnNlcnQod2RiLCB0YWJsZU5hbWUsIFwidXBzZXJ0XCIsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0T25seTxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+PihcbiAgICB3ZGI6IEtuZXgsXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgb3B0aW9ucz86IEluc2VydE9ubHlPcHRpb25zLFxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0T3JJbnNlcnQod2RiLCB0YWJsZU5hbWUsIFwiaW5zZXJ0XCIsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdXBzZXJ0T3JJbnNlcnQ8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPERhdGFiYXNlU2NoZW1hRXh0ZW5kPj4oXG4gICAgd2RiOiBLbmV4LFxuICAgIHRhYmxlTmFtZTogVFRhYmxlLFxuICAgIG1vZGU6IFwidXBzZXJ0XCIgfCBcImluc2VydFwiLFxuICAgIG9wdGlvbnM/OiBVcHNlcnRPcHRpb25zPFRUYWJsZT4sXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBpZiAodGhpcy5oYXNUYWJsZSh0YWJsZU5hbWUpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZXMuZ2V0KHRhYmxlTmFtZSk7XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDthYzsnbTruJQgJHt0YWJsZU5hbWV97JeQIHVwc2VydCDsmpTssq1gKTtcbiAgICB9IGVsc2UgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGFibGVOYW1lfeyXkCB1cHNlcnQg7ZWgIOuNsOydtO2EsOqwgCDsl4bsirXri4jri6QuYCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGFibGUucm93cy5zb21lKChyb3cpID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykuc29tZSgoWywgdmFsdWVdKSA9PiBpc1JlZkZpZWxkKHZhbHVlKSAmJiB2YWx1ZS5vZiAhPT0gdGFibGVOYW1lKSxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0YWJsZU5hbWV9IO2VtOqysOuQmOyngCDslYrsnYAg7LC47KGw6rCAIOyeiOyKteuLiOuLpC5gKTtcbiAgICB9XG5cbiAgICAvLyDsoITssrQg7YWM7J2067iUIOyInO2ajO2VmOyXrCDtmITsnqwg7YWM7J2067iUIOywuOyhsO2VmOuKlCDrqqjrk6Ag7YWM7J2067iUIOy2lOy2nFxuICAgIGNvbnN0IHsgcmVmZXJlbmNlcywgcmVmVGFibGVzIH0gPSBBcnJheS5mcm9tKHRoaXMudGFibGVzKS5yZWR1Y2UoXG4gICAgICAociwgWywgdGFibGVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IEFycmF5LmZyb20odGFibGUucmVmZXJlbmNlcy52YWx1ZXMoKSkuZmluZCgocmVmKSA9PlxuICAgICAgICAgIHJlZi5pbmNsdWRlcyhgJHt0YWJsZU5hbWV9LmApLFxuICAgICAgICApO1xuICAgICAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgICAgci5yZWZlcmVuY2VzLnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgICByLnJlZlRhYmxlcy5wdXNoKHRhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcmVmZXJlbmNlczogW10gYXMgc3RyaW5nW10sXG4gICAgICAgIHJlZlRhYmxlczogW10gYXMgVGFibGVEYXRhW10sXG4gICAgICB9LFxuICAgICk7XG4gICAgY29uc3QgZXh0cmFjdEZpZWxkcyA9IHVuaXF1ZShyZWZlcmVuY2VzKVxuICAgICAgLm1hcCgocmVmZXJlbmNlKSA9PiByZWZlcmVuY2Uuc3BsaXQoXCIuXCIpWzFdKVxuICAgICAgLmZpbHRlcigoZmllbGQpOiBmaWVsZCBpcyBzdHJpbmcgPT4gZmllbGQgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAvLyDsnZjsobTshLEg7Iic7ISc7JeQIOuUsOudvCDroIjrsqjrs4Qg6re466O57ZmUICjsnpDquLAg7LC47KGw6rCAIOyXhuycvOuptCBMZXZlbCAwIO2VmOuCmClcbiAgICBjb25zdCB7IGxldmVscywgaGFzQ2lyY3VsYXIgfSA9IHRoaXMuYnVpbGRJbnNlcnRMZXZlbHModGFibGUucm93cywgdGFibGVOYW1lKTtcblxuICAgIGlmIChoYXNDaXJjdWxhcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RhYmxlTmFtZX3sl5Ag7Iic7ZmYIOyekOq4sCDssLjsobDqsIAg7J6I7Iq164uI64ukLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHV1aWRNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbiAgICBjb25zdCBhbGxJZHM6IG51bWJlcltdID0gW107XG5cbiAgICAvLyDroIjrsqjrs4TroZwg7Iic7LCoIOyymOumrFxuICAgIGZvciAoY29uc3QgbGV2ZWxSb3dzIG9mIGxldmVscykge1xuICAgICAgLy8g7J207KCEIOugiOuyqOyXkOyEnCDslrvsnYAgSUTroZwg7J6Q6riwIOywuOyhsCDtlbTqsrBcbiAgICAgIGNvbnN0IHJlc29sdmVkUm93cyA9IGxldmVsUm93cy5tYXAoKHJvdykgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHsgLi4ucm93IH07XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJvdykpIHtcbiAgICAgICAgICBpZiAoaXNSZWZGaWVsZCh2YWx1ZSkgJiYgdmFsdWUub2YgPT09IHRhYmxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdXVpZE1hcC5nZXQodmFsdWUudXVpZCk7XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50KSB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgdXVpZCAke3ZhbHVlLnV1aWR9IC0tIGluICR7dGFibGVOYW1lfWApO1xuXG4gICAgICAgICAgICByZXNvbHZlZFtrZXldID0gKHBhcmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdmFsdWUudXNlID8/IFwiaWRcIl07XG5cbiAgICAgICAgICAgIE5haXRlLnQoXCJwdXJpOnViLXJlZi1yZXNvbHZlZFwiLCB7XG4gICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgZnJvbTogeyBvZjogdmFsdWUub2YsIHV1aWQ6IHZhbHVlLnV1aWQsIHVzZTogdmFsdWUudXNlID8/IFwiaWRcIiB9LFxuICAgICAgICAgICAgICB0bzogcmVzb2x2ZWRba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8g7ZiE7J6sIOugiOuyqCB1cHNlcnRcbiAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IG9wdGlvbnM/LmNodW5rU2l6ZTtcbiAgICAgIGNvbnN0IGxldmVsQ2h1bmtzID0gY2h1bmtTaXplID8gY2h1bmsocmVzb2x2ZWRSb3dzLCBjaHVua1NpemUpIDogW3Jlc29sdmVkUm93c107XG4gICAgICBjb25zdCBzZWxlY3RGaWVsZHMgPSB1bmlxdWUoW1wiaWRcIiwgLi4uZXh0cmFjdEZpZWxkc10pO1xuXG4gICAgICBmb3IgKGNvbnN0IGRhdGFDaHVuayBvZiBsZXZlbENodW5rcykge1xuICAgICAgICBpZiAoZGF0YUNodW5rLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgLy8gdXVpZOulvCDrs4Trj4TroZwg67O06rSA7ZWY6rOgLCBEQuyXkCDsoIDsnqXtlaAg642w7J207YSw7JeQ7IScIOygnOqxsFxuICAgICAgICBjb25zdCBvcmlnaW5hbFV1aWRzID0gZGF0YUNodW5rLm1hcCgocikgPT4gci51dWlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IGRhdGFGb3JEYiA9IGRhdGFDaHVuay5tYXAoKHsgdXVpZCwgLi4ucmVzdCB9KSA9PiByZXN0KTtcblxuICAgICAgICBsZXQgcmVzdWx0Um93czogeyBpZDogbnVtYmVyOyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1bXTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gXCJpbnNlcnRcIikge1xuICAgICAgICAgIC8vIElOU0VSVCDrqqjrk5wgLSBSRVRVUk5JTkcg7IKs7JqpXG4gICAgICAgICAgcmVzdWx0Um93cyA9IGF3YWl0IHdkYi5pbnNlcnQoZGF0YUZvckRiKS5pbnRvKHRhYmxlTmFtZSkucmV0dXJuaW5nKHNlbGVjdEZpZWxkcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVVBTRVJUIOuqqOuTnCAtIGlkIOyXhuuKlCByb3frk6TsnZggaWTrpbwg7IKs7KCEIOyhsO2ajOuhnCDssYTsmrDquLBcbiAgICAgICAgICBjb25zdCByb3dzV2l0aG91dElkID0gZGF0YUZvckRiLmZpbHRlcigocm93KSA9PiAhcm93LmlkKTtcblxuICAgICAgICAgIGlmIChyb3dzV2l0aG91dElkLmxlbmd0aCA+IDAgJiYgdGFibGUudW5pcXVlSW5kZXhlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyDrqqjrk6AgdW5pcXVlSW5kZXhlc+uhnCDquLDsobQg66CI7L2U65OcIOyhsO2ajFxuICAgICAgICAgICAgZm9yIChjb25zdCB1bmlxdWVJbmRleCBvZiB0YWJsZS51bmlxdWVJbmRleGVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSB1bmlxdWVJbmRleC5jb2x1bW5zLm1hcCgoYykgPT4gYy5uYW1lKTtcblxuICAgICAgICAgICAgICAvLyDsobDtmoztlaAg7KGw6rG065OkIOy2lOy2nCAo6rCBIHJvd+ydmCB1bmlxdWUg7Lus65+8IOqwkuuTpClcbiAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uczogdW5rbm93bltdW10gPSBbXTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygcm93c1dpdGhvdXRJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IGNvbHVtbnMubWFwKChjb2wpID0+IHJvd1tjb2xdKTtcbiAgICAgICAgICAgICAgICAvLyBudWxs7J20IO2PrO2VqOuQnCDsobDqsbTsnYAg7KCc7Jm4IChQb3N0Z3JlU1FMIFVOSVFVReuKlCBOVUxMIOustOyLnClcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlcy5zb21lKCh2KSA9PiB2ID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2godmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgIC8vIOuwsOy5mCBTRUxFQ1RcbiAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSb3dzID0gKGF3YWl0IHdkYih0YWJsZU5hbWUpXG4gICAgICAgICAgICAgICAgLndoZXJlSW4oY29sdW1ucywgY29uZGl0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdW10pXG4gICAgICAgICAgICAgICAgLnNlbGVjdChcImlkXCIsIC4uLmNvbHVtbnMpKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuXG4gICAgICAgICAgICAgIC8vIE1hcCDsg53shLE6IHVuaXF1ZSDsu6zrn7wg7KGw7ZWpIOKGkiBpZFxuICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZXhpc3Rpbmcgb2YgZXhpc3RpbmdSb3dzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gY29sdW1uc1xuICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBTdHJpbmcoZXhpc3RpbmdbY29sXSA/PyBcIlwiKSlcbiAgICAgICAgICAgICAgICAgIC5qb2luKFwiLS0tZGVsaW1pdGVyLS0tXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZXhpc3RpbmcuaWQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdNYXAuc2V0KGtleSwgaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIGlkIOyXhuuKlCByb3frk6Tsl5Ag66ek7Lmt65CY64qUIGlkIOyxhOyasOq4sFxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzV2l0aG91dElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCkgY29udGludWU7IC8vIOydtOuvuCDri6TrpbggdW5pcXVlSW5kZXjsl5DshJwg7LGE7JuM7KeEIOqyveyasCDsiqTtgrVcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGNvbHVtbnMubWFwKChjb2wpID0+IFN0cmluZyhyb3dbY29sXSA/PyBcIlwiKSkuam9pbihcIi0tLWRlbGltaXRlci0tLVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0gZXhpc3RpbmdNYXAuZ2V0KGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJZCkge1xuICAgICAgICAgICAgICAgICAgcm93LmlkID0gZXhpc3RpbmdJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBvbkNvbmZsaWN064qUIGlk66eMIOyCrOyaqSAo66qo65OgIHVuaXF1ZUluZGV4ZXPripQg7J2066+4IOyCrOyghCDsobDtmozroZwg7LKY66as65CoKVxuICAgICAgICAgIGNvbnN0IGNvbmZsaWN0Q29sdW1ucyA9IFtcImlkXCJdO1xuXG4gICAgICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IE9iamVjdC5rZXlzKGRhdGFGb3JEYlswXSk7XG4gICAgICAgICAgbGV0IHVwZGF0ZUNvbHVtbnMgPSBhbGxDb2x1bW5zLmZpbHRlcigoYykgPT4gYyAhPT0gXCJpZFwiKTtcblxuICAgICAgICAgIC8vIGluaGVyaXQg7Ji17IWYIOyymOumrCAtIGluaGVyaXQg7Lus65+87J2AIHVwZGF0ZSDrjIDsg4Hsl5DshJwg7KCc7Jm4XG4gICAgICAgICAgaWYgKG9wdGlvbnM/LmluaGVyaXQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW5oZXJpdENvbHVtbnMgPSBvcHRpb25zLmluaGVyaXQgYXMgc3RyaW5nW107XG5cbiAgICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVkRnJvbVVwZGF0ZSA9IHVwZGF0ZUNvbHVtbnMuZmlsdGVyKChjKSA9PiBpbmhlcml0Q29sdW1ucy5pbmNsdWRlcyhjKSk7XG4gICAgICAgICAgICB1cGRhdGVDb2x1bW5zID0gdXBkYXRlQ29sdW1ucy5maWx0ZXIoKGMpID0+ICFpbmhlcml0Q29sdW1ucy5pbmNsdWRlcyhjKSk7XG5cbiAgICAgICAgICAgIC8vIOyLpOygnOuhnCDsoJzsmbjrkJwg7Lus65+8IOuhnOq5hVxuICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkRnJvbVVwZGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgTmFpdGUudChcInB1cmk6dWItaW5oZXJpdFwiLCB7XG4gICAgICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGluaGVyaXRDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVkRnJvbVVwZGF0ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdXBkYXRlQ29sdW1uc+qwgCDruYTslrTsnojslrTrj4QgbWVyZ2UoKeulvCDsgqzsmqntlZjsl6wg66qo65OgIO2WieydtCBSRVRVUk5JTkfrkJjrj4TroZ0g67O07J6lXG4gICAgICAgICAgY29uc3QgbWVyZ2VDb2x1bW5zID0gdXBkYXRlQ29sdW1ucy5sZW5ndGggPyB1cGRhdGVDb2x1bW5zIDogY29uZmxpY3RDb2x1bW5zO1xuXG4gICAgICAgICAgcmVzdWx0Um93cyA9IGF3YWl0IHdkYlxuICAgICAgICAgICAgLmluc2VydChkYXRhRm9yRGIpXG4gICAgICAgICAgICAuaW50byh0YWJsZU5hbWUpXG4gICAgICAgICAgICAub25Db25mbGljdChjb25mbGljdENvbHVtbnMpXG4gICAgICAgICAgICAubWVyZ2UobWVyZ2VDb2x1bW5zKVxuICAgICAgICAgICAgLnJldHVybmluZyhzZWxlY3RGaWVsZHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVXVpZHMubGVuZ3RoICE9PSByZXN1bHRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0YWJsZU5hbWV9OiByZWdpc3Rlci9yZXR1cm5pbmcg67aI7J287LmYYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdFJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB1dWlkTWFwLnNldChvcmlnaW5hbFV1aWRzW2ldLCByZXN1bHRSb3dzW2ldKTtcbiAgICAgICAgICBhbGxJZHMucHVzaChyZXN1bHRSb3dzW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIO2VtOuLuSDthYzsnbTruJQg7LC47KGw66W8IOyLpOygnCDrsLjrpZjroZwg67OA6rK9XG4gICAgZm9yIChjb25zdCB0YWJsZSBvZiByZWZUYWJsZXMpIHtcbiAgICAgIHRhYmxlLnJvd3MgPSB0YWJsZS5yb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJvdykpIHtcbiAgICAgICAgICBjb25zdCBwcm9wID0gcm93W2tleV07XG4gICAgICAgICAgaWYgKGlzUmVmRmllbGQocHJvcCkgJiYgcHJvcC5vZiA9PT0gdGFibGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB1dWlkTWFwLmdldChwcm9wLnV1aWQpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihwcm9wKTtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIHV1aWQgJHtwcm9wLnV1aWR9IC0tIGluICR7dGFibGVOYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IChwYXJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3Byb3AudXNlID8/IFwiaWRcIl07XG4gICAgICAgICAgICByb3dba2V5XSA9IHJlc29sdmVkVmFsdWU7XG5cbiAgICAgICAgICAgIE5haXRlLnQoXCJwdXJpOnViLXJlZi1yZXNvbHZlZFwiLCB7XG4gICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgZnJvbTogeyBvZjogcHJvcC5vZiwgdXVpZDogcHJvcC51dWlkLCB1c2U6IHByb3AudXNlID8/IFwiaWRcIiB9LFxuICAgICAgICAgICAgICB0bzogcmVzb2x2ZWRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LmNsZWFuT3JwaGFucykge1xuICAgICAgY29uc3QgY2xlYW5PcnBoYW5zID0gb3B0aW9ucy5jbGVhbk9ycGhhbnM7XG4gICAgICBjb25zdCBma0NvbHVtbnMgPSBpc0FycmF5KGNsZWFuT3JwaGFucylcbiAgICAgICAgPyAoY2xlYW5PcnBoYW5zIGFzIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5bXSlcbiAgICAgICAgOiBbY2xlYW5PcnBoYW5zIGFzIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZT5dO1xuXG4gICAgICAvLyDtmITsnqwgcmVnaXN0ZXLrkJwg66CI7L2U65Oc65Ok7J2YIEZLIOqwkuuTpCDstpTstpxcbiAgICAgIGNvbnN0IGZrQ29uZGl0aW9ucyA9IGZrQ29sdW1ucy5tYXAoKGZrQ29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZrVmFsdWVzID0gWy4uLm5ldyBTZXQodGFibGUucm93cy5tYXAoKHJvdykgPT4gcm93W2ZrQ29sXSkuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpKV07XG4gICAgICAgIHJldHVybiB7IGNvbHVtbjogZmtDb2wsIHZhbHVlczogZmtWYWx1ZXMgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyDrqqjrk6AgRksg7Lus65+87JeQIOqwkuydtCDsnojripQg6rK97Jqw7JeQ66eMIOyCreygnCDsi6TtlolcbiAgICAgIGlmIChma0NvbmRpdGlvbnMuZXZlcnkoKGZjKSA9PiBmYy52YWx1ZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgbGV0IGRlbGV0ZVF1ZXJ5ID0gd2RiKHRhYmxlTmFtZSk7XG5cbiAgICAgICAgLy8g6rCBIEZLIOy7rOufvOyXkCDrjIDtlZwgV0hFUkUgSU4g7KGw6rG0IOy2lOqwgFxuICAgICAgICBmb3IgKGNvbnN0IHsgY29sdW1uLCB2YWx1ZXMgfSBvZiBma0NvbmRpdGlvbnMpIHtcbiAgICAgICAgICBkZWxldGVRdWVyeSA9IGRlbGV0ZVF1ZXJ5LndoZXJlSW4oY29sdW1uLCB2YWx1ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g67Cp6riIIHVwc2VydO2VnCBJROuKlCDsoJzsmbhcbiAgICAgICAgZGVsZXRlUXVlcnkgPSBkZWxldGVRdWVyeS53aGVyZU5vdEluKFwiaWRcIiwgYWxsSWRzKTtcblxuICAgICAgICBjb25zdCBkZWxldGVkQ291bnQgPSBhd2FpdCBkZWxldGVRdWVyeS5kZWxldGUoKTtcblxuICAgICAgICBOYWl0ZS50KFwicHVyaTp1Yi1jbGVhbi1vcnBoYW5zXCIsIHtcbiAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgY2xlYW5PcnBoYW5zOiBma0NvbHVtbnMsXG4gICAgICAgICAgZGVsZXRlZENvdW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDtlbTri7kg7YWM7J2067iU7J2YIOuNsOydtO2EsCDstIjquLDtmZRcbiAgICB0YWJsZS5yb3dzID0gW107XG4gICAgdGFibGUucmVmZXJlbmNlcy5jbGVhcigpO1xuICAgIHRhYmxlLnVuaXF1ZXNNYXAuY2xlYXIoKTtcblxuICAgIE5haXRlLnQoXCJwdXJpOnViLXVwc2VydGVkXCIsIHtcbiAgICAgIHRhYmxlTmFtZSxcbiAgICAgIG1vZGUsXG4gICAgICByb3dDb3VudDogYWxsSWRzLmxlbmd0aCxcbiAgICAgIHJldHVybmVkSWRzOiBhbGxJZHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWxsSWRzO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQmF0Y2goXG4gICAgd2RiOiBLbmV4LFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBjaHVua1NpemU/OiBudW1iZXI7XG4gICAgICB3aGVyZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2h1bmtTaXplOiBvcHRpb25zPy5jaHVua1NpemUgPz8gNTAwLFxuICAgICAgd2hlcmU6IG9wdGlvbnM/LndoZXJlID8/IFwiaWRcIixcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaGFzVGFibGUodGFibGVOYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlcy5nZXQodGFibGVOYW1lKTtcbiAgICBpZiAoIXRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOuTseuhneuQmOyngCDslYrsnYAg7YWM7J2067iUICR7dGFibGVOYW1lfeyXkCB1cGRhdGVCYXRjaCDsmpTssq1gKTtcbiAgICB9IGVsc2UgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2hlcmVDb2x1bW5zID0gQXJyYXkuaXNBcnJheShvcHRpb25zLndoZXJlKSA/IG9wdGlvbnMud2hlcmUgOiBbb3B0aW9ucy53aGVyZSA/PyBcImlkXCJdO1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5yb3dzLm1hcCgoX3JvdykgPT4ge1xuICAgICAgY29uc3QgeyB1dWlkOiBfLCAuLi5yb3cgfSA9IF9yb3c7IC8vIHV1aWQg7KCc7Jm4XG4gICAgICByZXR1cm4gcm93IGFzIFJvd1dpdGhJZDxzdHJpbmc+O1xuICAgIH0pO1xuXG4gICAgYXdhaXQgYmF0Y2hVcGRhdGUod2RiLCB0YWJsZU5hbWUsIHdoZXJlQ29sdW1ucywgcm93cywgb3B0aW9ucy5jaHVua1NpemUpO1xuXG4gICAgTmFpdGUudChcInB1cmk6dWItYmF0Y2gtdXBkYXRlZFwiLCB7XG4gICAgICB0YWJsZU5hbWUsXG4gICAgICByb3dDb3VudDogcm93cy5sZW5ndGgsXG4gICAgICB3aGVyZUNvbHVtbnMsXG4gICAgfSk7XG5cbiAgICAvLyB1cGRhdGVCYXRjaCDsmYTro4wg7ZuEIOyymOumrOuQnCDrjbDsnbTthLAg7KCc6rGwXG4gICAgdGFibGUucm93cyA9IFtdO1xuICAgIHRhYmxlLnJlZmVyZW5jZXMuY2xlYXIoKTtcbiAgICB0YWJsZS51bmlxdWVzTWFwLmNsZWFyKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiByb3dz66W8IOydmOyhtOyEsSDsiJzshJzsl5Ag65Sw6528IOugiOuyqOuzhOuhnCDqt7jro7ntmZRcbiAgICogLSDsnpDquLAg7LC47KGwIOyXhuuKlCDqsr3smrAgOiDrqqjrk6Agcm93c+qwgCBMZXZlbCAwXG4gICAqIC0g7J6Q6riwIOywuOyhsCDsnojripQg6rK97JqwIDog7J6Q6riwIOywuOyhsCDqtIDqs4Trpbwg7JyE7IOBIOygleugrO2VmOyXrCDroIjrsqjrs4TroZwg6re466O57ZmUXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSW5zZXJ0TGV2ZWxzKFxuICAgIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10sXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICk6IHsgbGV2ZWxzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdW107IGhhc0NpcmN1bGFyOiBib29sZWFuIH0ge1xuICAgIC8vIDEuIOyekOq4sCDssLjsobDqsIAg7JeG7Jy866m0IO2VnCDroIjrsqjroZwg7LKY66asXG4gICAgY29uc3QgaGFzU2VsZlJlZiA9IHJvd3NcbiAgICAgIC5mbGF0TWFwKChyb3cpID0+IE9iamVjdC52YWx1ZXMocm93KSlcbiAgICAgIC5zb21lKCh2YWx1ZSkgPT4gaXNSZWZGaWVsZCh2YWx1ZSkgJiYgdmFsdWUub2YgPT09IHRhYmxlTmFtZSk7XG4gICAgaWYgKCFoYXNTZWxmUmVmKSByZXR1cm4geyBsZXZlbHM6IFtyb3dzXSwgaGFzQ2lyY3VsYXI6IGZhbHNlIH07XG5cbiAgICAvLyAyLiB1dWlkIOKGkiByb3cg66ek7ZWRICjspJHrs7UgdXVpZCDrsKnsp4ApXG4gICAgY29uc3Qgcm93QnlVdWlkID0gbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpO1xuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IHV1aWQgPSByb3cudXVpZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoIXV1aWQpIHRocm93IG5ldyBFcnJvcihgYnVpbGRJbnNlcnRMZXZlbHM6IHV1aWTqsIAg7JeG64qUIHJvdyAtLSBpbiAke3RhYmxlTmFtZX1gKTtcbiAgICAgIHJvd0J5VXVpZC5zZXQodXVpZCwgcm93KTtcbiAgICB9XG5cbiAgICBsZXQgcGVuZGluZyA9IEFycmF5LmZyb20ocm93QnlVdWlkLnZhbHVlcygpKTtcbiAgICBjb25zdCBsZXZlbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11bXSA9IFtdO1xuICAgIGNvbnN0IGluc2VydGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAvLyAzLiDroIjrsqjrs4Qg67aE66WYXG4gICAgd2hpbGUgKHBlbmRpbmcubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VycmVudExldmVsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW107XG4gICAgICBjb25zdCBuZXh0UGVuZGluZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwZW5kaW5nKSB7XG4gICAgICAgIC8vIOydtCByb3fqsIAg7LC47KGw7ZWY64qUIOyekOq4sCDssLjsobDrk6RcbiAgICAgICAgY29uc3Qgc2VsZlJlZnMgPSBPYmplY3QudmFsdWVzKHJvdykuZmlsdGVyKFxuICAgICAgICAgICh2YWx1ZSkgPT4gaXNSZWZGaWVsZCh2YWx1ZSkgJiYgdmFsdWUub2YgPT09IHRhYmxlTmFtZSxcbiAgICAgICAgKSBhcyBVQlJlZltdO1xuXG4gICAgICAgIC8vIOywuOyhsO2VmOuKlCDrqqjrk6AgdXVpZOqwgCDsnbTrr7ggaW5zZXJ0ZWTsl5Ag7J6I7Ja07JW8IOydtOuyiCDroIjrsqjsl5Ag7Y+s7ZWoXG4gICAgICAgIGNvbnN0IGNhbkluc2VydCA9IHNlbGZSZWZzLmV2ZXJ5KChyZWYpID0+IHtcbiAgICAgICAgICBpZiAoIXJvd0J5VXVpZC5oYXMocmVmLnV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgdXVpZCAke3JlZi51dWlkfSAtLSBpbiAke3RhYmxlTmFtZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGluc2VydGVkLmhhcyhyZWYudXVpZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjYW5JbnNlcnQpIHtcbiAgICAgICAgICBjdXJyZW50TGV2ZWwucHVzaChyb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRQZW5kaW5nLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDsiJztmZgg7LC47KGwIOqwkOyngFxuICAgICAgaWYgKGN1cnJlbnRMZXZlbC5sZW5ndGggPT09IDApIHJldHVybiB7IGxldmVsczogW10sIGhhc0NpcmN1bGFyOiB0cnVlIH07XG5cbiAgICAgIC8vIOugiOuyqCDtmZXsoJUgKyBpbnNlcnRlZCDqsLHsi6BcbiAgICAgIGxldmVscy5wdXNoKGN1cnJlbnRMZXZlbCk7XG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBjdXJyZW50TGV2ZWwpIHtcbiAgICAgICAgaW5zZXJ0ZWQuYWRkKHJvdy51dWlkIGFzIHN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHBlbmRpbmcgPSBuZXh0UGVuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4geyBsZXZlbHMsIGhhc0NpcmN1bGFyOiBmYWxzZSB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsicmFuZG9tVVVJRCIsImlzQXJyYXkiLCJ1bmlxdWUiLCJFbnRpdHlNYW5hZ2VyIiwiTmFpdGUiLCJhc3NlcnREZWZpbmVkIiwiY2h1bmsiLCJub25OdWxsYWJsZSIsImJhdGNoVXBkYXRlIiwiaXNSZWZGaWVsZCIsImZpZWxkIiwidW5kZWZpbmVkIiwib2YiLCJ1dWlkIiwiVXBzZXJ0QnVpbGRlciIsInRhYmxlcyIsIk1hcCIsImdldFRhYmxlIiwidGFibGVOYW1lIiwidGFibGUiLCJnZXQiLCJ0YWJsZVNwZWMiLCJnZXRUYWJsZVNwZWMiLCJ0YWJsZURhdGEiLCJyZWZlcmVuY2VzIiwiU2V0Iiwicm93cyIsInVuaXF1ZUluZGV4ZXMiLCJ1bmlxdWVzTWFwIiwic2V0IiwiaGFzVGFibGUiLCJoYXMiLCJyZWdpc3RlciIsInJvdyIsInVuaXF1ZUtleXMiLCJtYXAiLCJ1bnFJbmRleCIsInVuaXF1ZUtleUFycmF5IiwiY29sdW1ucyIsInVucUNvbCIsInZhbCIsIm5hbWUiLCJsZW5ndGgiLCJqb2luIiwiZmlsdGVyIiwiaXNSZXVzZWQiLCJ1bmlxdWVLZXkiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJyb3dLZXkiLCJyb3dWYWx1ZSIsInVzZSIsImFkZCIsIkRhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwicHVzaCIsInJlc3VsdCIsInQiLCJpc1V1aWRSZXVzZWQiLCJ1cHNlcnQiLCJ3ZGIiLCJvcHRpb25zIiwidXBzZXJ0T3JJbnNlcnQiLCJpbnNlcnRPbmx5IiwibW9kZSIsIkVycm9yIiwic29tZSIsInZhbHVlIiwicmVmVGFibGVzIiwiQXJyYXkiLCJmcm9tIiwicmVkdWNlIiwiciIsInJlZmVyZW5jZSIsInZhbHVlcyIsImZpbmQiLCJyZWYiLCJpbmNsdWRlcyIsImV4dHJhY3RGaWVsZHMiLCJzcGxpdCIsImxldmVscyIsImhhc0NpcmN1bGFyIiwiYnVpbGRJbnNlcnRMZXZlbHMiLCJ1dWlkTWFwIiwiYWxsSWRzIiwibGV2ZWxSb3dzIiwicmVzb2x2ZWRSb3dzIiwicmVzb2x2ZWQiLCJrZXkiLCJwYXJlbnQiLCJ0byIsImNodW5rU2l6ZSIsImxldmVsQ2h1bmtzIiwic2VsZWN0RmllbGRzIiwiZGF0YUNodW5rIiwib3JpZ2luYWxVdWlkcyIsImRhdGFGb3JEYiIsInJlc3QiLCJyZXN1bHRSb3dzIiwiaW5zZXJ0IiwiaW50byIsInJldHVybmluZyIsInJvd3NXaXRob3V0SWQiLCJpZCIsInVuaXF1ZUluZGV4IiwiYyIsImNvbmRpdGlvbnMiLCJjb2wiLCJ2IiwiZXhpc3RpbmdSb3dzIiwid2hlcmVJbiIsInNlbGVjdCIsImV4aXN0aW5nTWFwIiwiZXhpc3RpbmciLCJTdHJpbmciLCJleGlzdGluZ0lkIiwiY29uZmxpY3RDb2x1bW5zIiwiYWxsQ29sdW1ucyIsImtleXMiLCJ1cGRhdGVDb2x1bW5zIiwiaW5oZXJpdCIsImluaGVyaXRDb2x1bW5zIiwiZXhjbHVkZWRGcm9tVXBkYXRlIiwibWVyZ2VDb2x1bW5zIiwib25Db25mbGljdCIsIm1lcmdlIiwiaSIsInByb3AiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXNvbHZlZFZhbHVlIiwiY2xlYW5PcnBoYW5zIiwiZmtDb2x1bW5zIiwiZmtDb25kaXRpb25zIiwiZmtDb2wiLCJma1ZhbHVlcyIsImNvbHVtbiIsImV2ZXJ5IiwiZmMiLCJkZWxldGVRdWVyeSIsIndoZXJlTm90SW4iLCJkZWxldGVkQ291bnQiLCJkZWxldGUiLCJjbGVhciIsInJvd0NvdW50IiwicmV0dXJuZWRJZHMiLCJ1cGRhdGVCYXRjaCIsIndoZXJlIiwid2hlcmVDb2x1bW5zIiwiX3JvdyIsIl8iLCJoYXNTZWxmUmVmIiwiZmxhdE1hcCIsInJvd0J5VXVpZCIsInBlbmRpbmciLCJpbnNlcnRlZCIsImN1cnJlbnRMZXZlbCIsIm5leHRQZW5kaW5nIiwic2VsZlJlZnMiLCJjYW5JbnNlcnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxTQUFTO0FBRXBDLFNBQVNDLE9BQU8sRUFBRUMsTUFBTSxRQUFRLFVBQVU7QUFDMUMsU0FBU0MsYUFBYSxRQUFRLDhCQUEyQjtBQUN6RCxTQUFTQyxLQUFLLFFBQVEsb0JBQWlCO0FBRXZDLFNBQVNDLGFBQWEsRUFBRUMsS0FBSyxFQUFFQyxXQUFXLFFBQVEsb0JBQWlCO0FBQ25FLFNBQVNDLFdBQVcsUUFBd0IscUJBQWtCO0FBdUM5RCxPQUFPLFNBQVNDLFdBQVdDLEtBQWM7SUFDdkMsT0FDRUEsVUFBVUMsYUFDVkQsVUFBVSxRQUNWLEFBQUNBLE9BQWlCRSxPQUFPRCxhQUN6QixBQUFDRCxPQUFpQkcsU0FBU0Y7QUFFL0I7QUFFQSxPQUFPLE1BQU1HO0lBQ1hDLE9BQStCO0lBQy9CLGFBQWM7UUFDWixJQUFJLENBQUNBLE1BQU0sR0FBRyxJQUFJQztJQUNwQjtJQUVBQyxTQUFTQyxTQUFpQixFQUFhO1FBQ3JDLE1BQU1DLFFBQVEsSUFBSSxDQUFDSixNQUFNLENBQUNLLEdBQUcsQ0FBQ0Y7UUFDOUIsSUFBSUMsT0FBTztZQUNULE9BQU9BO1FBQ1Q7UUFFQSxNQUFNRSxZQUFZLEFBQUMsQ0FBQTtZQUNqQixJQUFJO2dCQUNGLE9BQU9sQixjQUFjbUIsWUFBWSxDQUFDSjtZQUNwQyxFQUFFLE9BQU07Z0JBQ04sT0FBTztZQUNUO1FBQ0YsQ0FBQTtRQUVBLE1BQU1LLFlBQVk7WUFDaEJDLFlBQVksSUFBSUM7WUFDaEJDLE1BQU0sRUFBRTtZQUNSQyxlQUFlTixXQUFXTSxpQkFBaUIsRUFBRTtZQUM3Q0MsWUFBWSxJQUFJWjtRQUNsQjtRQUNBLElBQUksQ0FBQ0QsTUFBTSxDQUFDYyxHQUFHLENBQUNYLFdBQVdLO1FBQzNCLE9BQU9BO0lBQ1Q7SUFFQU8sU0FBU1osU0FBaUIsRUFBVztRQUNuQyxPQUFPLElBQUksQ0FB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
|