sonamu 0.13.2 → 0.13.3
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/api/decorators.d.ts +2 -3
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +5 -5
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +8 -3
- package/dist/database/puri.d.ts +8 -3
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +120 -15
- package/dist/database/puri.types.d.ts +5 -2
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/storage/buffered-file.d.ts +3 -3
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +2 -2
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/storage-manager.d.ts +3 -4
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +2 -2
- package/dist/storage/types.d.ts +3 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/uploaded-file.d.ts +3 -3
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +1 -1
- package/package.json +1 -1
- package/src/api/__tests__/sonamu.storage.test.ts +145 -0
- package/src/api/decorators.ts +2 -3
- package/src/api/sonamu.ts +6 -6
- package/src/database/__tests__/puri-hydration.test.ts +226 -0
- package/src/database/base-model.ts +7 -3
- package/src/database/puri.ts +204 -15
- package/src/database/puri.types.test-d.ts +29 -0
- package/src/database/puri.types.ts +10 -2
- package/src/storage/__tests__/storage-manager.test.ts +64 -0
- package/src/storage/buffered-file.ts +3 -3
- package/src/storage/index.ts +1 -1
- package/src/storage/storage-manager.ts +4 -5
- package/src/storage/storage.test-d.ts +47 -0
- package/src/storage/types.ts +3 -2
- package/src/storage/uploaded-file.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/database/base-model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/database/base-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { init_runtime_value, isObjectValue } from "../utils/runtime-value.js";
|
|
|
4
4
|
import { DB, init_db } from "./db.js";
|
|
5
5
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
6
6
|
import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
|
|
7
|
+
import { Naite, init_naite } from "../naite/naite.js";
|
|
7
8
|
import { Puri, init_puri } from "./puri.js";
|
|
8
9
|
import { PuriWrapper, init_puri_wrapper } from "./puri-wrapper.js";
|
|
9
10
|
import { UpsertBuilder, init_upsert_builder } from "./upsert-builder.js";
|
|
@@ -19,6 +20,7 @@ var init_base_model = __esmMin((() => {
|
|
|
19
20
|
init_entity_manager();
|
|
20
21
|
init_utils();
|
|
21
22
|
init_category();
|
|
23
|
+
init_naite();
|
|
22
24
|
init_runtime_value();
|
|
23
25
|
init_sql_parser();
|
|
24
26
|
init_db();
|
|
@@ -261,10 +263,12 @@ var init_base_model = __esmMin((() => {
|
|
|
261
263
|
*/
|
|
262
264
|
async executeListQuery(subset, qb, params, num, page, debug, puriWrapper) {
|
|
263
265
|
if (params.queryMode === "count") return [];
|
|
264
|
-
|
|
266
|
+
const limitedQb = (() => {
|
|
265
267
|
if (num === 0) return qb;
|
|
266
268
|
else return qb.limit(num).offset(num * (page - 1));
|
|
267
269
|
})();
|
|
270
|
+
Naite.t("puri:executed-query", limitedQb.toQuery());
|
|
271
|
+
let unloadedRows = await limitedQb.rawQuery();
|
|
268
272
|
if (debug) qb.debug();
|
|
269
273
|
const loaders = this.loaderQueries[subset];
|
|
270
274
|
if (loaders && Array.isArray(loaders)) unloadedRows = await this.processLoaders(unloadedRows, loaders, debug, puriWrapper);
|
|
@@ -278,7 +282,8 @@ var init_base_model = __esmMin((() => {
|
|
|
278
282
|
const { as, refId, qb: resolveLoaderQbFn, loaders: nestedLoaders } = resolveLoader;
|
|
279
283
|
const resolveLoaderQb = resolveLoaderQbFn(puriWrapper, rows.map((row) => row[refId]));
|
|
280
284
|
if (debug) resolveLoaderQb.debug();
|
|
281
|
-
|
|
285
|
+
Naite.t("puri:executed-query", resolveLoaderQb.toQuery());
|
|
286
|
+
let loadedRows = await resolveLoaderQb.rawQuery();
|
|
282
287
|
if (nestedLoaders && nestedLoaders.length > 0) loadedRows = await this.processLoaders(loadedRows, nestedLoaders, debug, puriWrapper);
|
|
283
288
|
const subRowGroups = group(loadedRows, (row) => row.refId);
|
|
284
289
|
rows = rows.map((row) => {
|
|
@@ -332,4 +337,4 @@ var init_base_model = __esmMin((() => {
|
|
|
332
337
|
init_base_model();
|
|
333
338
|
export { BaseModel, BaseModelClass, init_base_model };
|
|
334
339
|
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvYmFzZS1tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogUHVyaeydmCDtg4DsnoXsnYAg6rCc67OEIOuqqOuNuOyXkOyEnCDtmZXsoJXrkJjrr4DroZwgQmFzZU1vZGVs7JeQ7ISc64qUIGFueeulvCDtl4jsmqntlaggKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjbHVzdGVyLCBncm91cCwgaXNPYmplY3QsIG9taXQsIHNldCB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuLi9maWx0ZXIvdHlwZXNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZpbHRlclF1ZXJ5LCB2YWxpZGF0ZVNvbmFtdUZpbHRlcnMgfSBmcm9tIFwiLi4vZmlsdGVyL3V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQsIHR5cGUgU29uYW11UXVlcnlNb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIExpc3RSZXN1bHQgfSBmcm9tIFwiLi4vdXRpbHMvbW9kZWxcIjtcbmltcG9ydCB7IGlzT2JqZWN0VmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZ2V0Sm9pblRhYmxlcywgZ2V0VGFibGVOYW1lc0Zyb21XaGVyZSB9IGZyb20gXCIuLi91dGlscy9zcWwtcGFyc2VyXCI7XG5pbXBvcnQgeyB0eXBlIEVuaGFuY2VyTWFwLCB0eXBlIFJlc29sdmVTdWJzZXRJbnRlcnNlY3Rpb24gfSBmcm9tIFwiLi9iYXNlLW1vZGVsLnR5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIERCUHJlc2V0IH0gZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IFB1cmkgfSBmcm9tIFwiLi9wdXJpXCI7XG5pbXBvcnQge1xuICB0eXBlIEluZmVyQWxsU3Vic2V0cyxcbiAgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyxcbiAgdHlwZSBQdXJpU3Vic2V0Rm4sXG59IGZyb20gXCIuL3B1cmktc3Vic2V0LnR5cGVzXCI7XG5pbXBvcnQgeyBQdXJpV3JhcHBlciB9IGZyb20gXCIuL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgdHlwZSBVbmlvbkV4dHJhY3RlZFRUYWJsZXMgfSBmcm9tIFwiLi9wdXJpLnR5cGVzXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4vdXBzZXJ0LWJ1aWxkZXJcIjtcblxudHlwZSBEYXRhYmFzZVJlY29yZFZhbHVlID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBib29sZWFuXG4gIHwgYmlnaW50XG4gIHwgRGF0ZVxuICB8IEJ1ZmZlclxuICB8IEtuZXguUmF3XG4gIHwgbnVsbFxuICB8IERhdGFiYXNlUmVjb3JkVmFsdWVbXVxuICB8IHsgW2tleTogc3RyaW5nXTogRGF0YWJhc2VSZWNvcmRWYWx1ZSB9O1xudHlwZSBEYXRhYmFzZVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIERhdGFiYXNlUmVjb3JkVmFsdWUgfCB1bmRlZmluZWQ+O1xuXG4vKipcbiAqIOuqqOuToCBNb2RlbCDtgbTrnpjsiqTsnZgg6riw67O4IO2BtOuemOyKpFxuICpcbiAqIEB0ZW1wbGF0ZSBUU3Vic2V0S2V5IC0g7ISc67iM7IWLIO2CpCDsnKDri4jsmKggKOyYiDogXCJBXCIgfCBcIlBcIiB8IFwiU1NcIilcbiAqIEB0ZW1wbGF0ZSBUU3Vic2V0TWFwcGluZyAtIOyEnOu4jOyFi+uzhCDstZzsooUg6rKw6rO8IO2DgOyehSDrp6TtlZFcbiAqIEB0ZW1wbGF0ZSBUU3Vic2V0UXVlcmllcyAtIOyEnOu4jOyFiyDsv7zrpqwg7ZWo7IiYIOqwneyytFxuICogQHRlbXBsYXRlIFRMb2FkZXJRdWVyaWVzIC0g7ISc67iM7IWL67OEIOuhnOuNlCDsv7zrpqwg67Cw7Je0IOqwneyytFxuICovXG5leHBvcnQgY2xhc3MgQmFzZU1vZGVsQ2xhc3M8XG4gIFRTdWJzZXRLZXkgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgVFN1YnNldE1hcHBpbmcgZXh0ZW5kcyB7IFtLIGluIFRTdWJzZXRLZXldOiBUU3Vic2V0TWFwcGluZ1tLXSB9ID0gbmV2ZXIsXG4gIFRTdWJzZXRRdWVyaWVzIGV4dGVuZHMgUmVjb3JkPFRTdWJzZXRLZXksIFB1cmlTdWJzZXRGbj4gPSBuZXZlcixcbiAgVExvYWRlclF1ZXJpZXMgZXh0ZW5kcyBQdXJpTG9hZGVyUXVlcmllczxUU3Vic2V0S2V5PiA9IG5ldmVyLFxuPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dnZXI6IExvZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZWxOYW1lOiBzdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgcHJvdGVjdGVkIHN1YnNldFF1ZXJpZXM/OiBUU3Vic2V0UXVlcmllcyxcbiAgICBwcm90ZWN0ZWQgbG9hZGVyUXVlcmllcz86IFRMb2FkZXJRdWVyaWVzLFxuICApIHtcbiAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSk7XG4gIH1cblxuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICByZXR1cm4gREIuZ2V0REIod2hpY2gpO1xuICB9XG5cbiAgZ2V0UHVyaSh3aGljaDogREJQcmVzZXQpOiBQdXJpV3JhcHBlciB7XG4gICAgLy8g7Yq4656c7J6t7IWYIOy7qO2FjeyKpO2KuOyXkOyEnCDtirjrnpzsnq3shZgg7ZqN65OdXG4gICAgY29uc3QgdHJ4ID0gREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZ2V0VHJhbnNhY3Rpb24od2hpY2gpO1xuICAgIGlmICh0cngpIHtcbiAgICAgIHJldHVybiB0cng7XG4gICAgfVxuXG4gICAgLy8g7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZzsmrQgUHVyaVdyYXBwZXIg67CY7ZmYXG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKHdoaWNoKTtcbiAgICByZXR1cm4gbmV3IFB1cmlXcmFwcGVyKGRiLCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3Vic2V0UXVlcnlQdXJpKCk6IFB1cmlXcmFwcGVyIHtcbiAgICBjb25zdCBhY3RpdmVUcmFuc2FjdGlvbiA9IERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmdldEFjdGl2ZVRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKGFjdGl2ZVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm4gYWN0aXZlVHJhbnNhY3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQdXJpV3JhcHBlcih0aGlzLmdldERCKFwiclwiKSwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gIH1cblxuICBhc3luYyBkZXN0cm95KCkge1xuICAgIHJldHVybiBEQi5kZXN0cm95KCk7XG4gIH1cblxuICBhc3luYyBnZXRJbnNlcnRlZElkcyhcbiAgICB3ZGI6IEtuZXgsXG4gICAgcm93czogRGF0YWJhc2VSZWNvcmRbXSxcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICB1bnFLZXlGaWVsZHM6IHN0cmluZ1tdLFxuICAgIGNodW5rU2l6ZTogbnVtYmVyID0gNTAwLFxuICApIHtcbiAgICBpZiAoIXdkYikge1xuICAgICAgd2RiID0gdGhpcy5nZXREQihcIndcIik7XG4gICAgfVxuXG4gICAgbGV0IHVucUtleXM6IHN0cmluZ1tdO1xuICAgIGxldCB3aGVyZUluRmllbGQ6IHN0cmluZyB8IEtuZXguUmF3O1xuICAgIGxldCBzZWxlY3RGaWVsZDogc3RyaW5nO1xuXG4gICAgaWYgKHVucUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICB3aGVyZUluRmllbGQgPSB3ZGIucmF3KGBDT05DQVRfV1MoJ18nLCAnJHt1bnFLZXlGaWVsZHMuam9pbihcIixcIil9JylgKTtcbiAgICAgIHNlbGVjdEZpZWxkID0gYCR7d2hlcmVJbkZpZWxkfSBhcyB0bXBVaWRgO1xuICAgICAgdW5xS2V5cyA9IHJvd3MubWFwKChyb3cpID0+IHVucUtleUZpZWxkcy5tYXAoKGZpZWxkKSA9PiByb3dbZmllbGRdKS5qb2luKFwiX1wiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoZXJlSW5GaWVsZCA9IHVucUtleUZpZWxkc1swXTtcbiAgICAgIHNlbGVjdEZpZWxkID0gdW5xS2V5RmllbGRzWzBdO1xuICAgICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIHVucUtleXMgPSByb3dzLm1hcCgocm93KSA9PiByb3dbdW5xS2V5RmllbGRzWzBdXSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIGxldCByZXN1bHRJZHM6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtcyBvZiBjbHVzdGVyKHVucUtleXMsIGNodW5rU2l6ZSkpIHtcbiAgICAgIGNvbnN0IGRiUm93cyA9IGF3YWl0IHdkYih0YWJsZU5hbWUpXG4gICAgICAgIC5zZWxlY3QoXCJpZFwiLCB3ZGIucmF3KHNlbGVjdEZpZWxkKSlcbiAgICAgICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgICAgLndoZXJlSW4oXG4gICAgICAgICAgLyogU0FGRVRZOiBLbmV4IOufsO2DgOyehOydgCDsu6zrn7wg7JyE7LmY7J2YIFJhdyDtkZztmITsi53snYQg7KeA7JuQ7ZWY7KeA66eMIOyEoOyWuCDtg4DsnoXsl5DripQg64iE652965CY7Ja0IOyeiOyKteuLiOuLpC4gKi9cbiAgICAgICAgICB3aGVyZUluRmllbGQgYXMgc3RyaW5nLFxuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICApO1xuICAgICAgcmVzdWx0SWRzID0gcmVzdWx0SWRzLmNvbmNhdChcbiAgICAgICAgZGJSb3dzLm1hcCgoZGJSb3c6IERhdGFiYXNlUmVjb3JkKSA9PiBwYXJzZUludChTdHJpbmcoZGJSb3cuaWQpKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRJZHM7XG4gIH1cblxuICAvKipcbiAgICog7Yq57KCVIOyEnOu4jOyFi+yXkCDrjIDtlZwg7L+866asIOu5jOuNlCDtmo3rk51cbiAgICpcbiAgICogQHJldHVybnMgcWIgLSDsv7zrpqwg67mM642UICjsobDqsbQg7LaU6rCA7JqpKVxuICAgKiBAcmV0dXJucyBvblN1YnNldCAtIO2KueyglSDshJzruIzshYsg7KCE7JqpIO2DgOyeheydtCDtlYTsmpTtlaAg65WMIOyCrOyaqVxuICAgKi9cbiAgZ2V0U3Vic2V0UXVlcmllczxUIGV4dGVuZHMgVFN1YnNldEtleT4oc3Vic2V0OiBUKSB7XG4gICAgaWYgKCF0aGlzLnN1YnNldFF1ZXJpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInN1YnNldFF1ZXJpZXMgaXMgbm90IGRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgcHVyaVdyYXBwZXIgPSB0aGlzLmdldFN1YnNldFF1ZXJ5UHVyaSgpO1xuICAgIGNvbnN0IHFiID0gdGhpcy5zdWJzZXRRdWVyaWVzW3N1YnNldF0/LihwdXJpV3JhcHBlcik7XG5cbiAgICAvLyBOb25BbGxvd2VkQXNTaW5nbGVUYWJsZTog64uo7J28IO2FjOydtOu4lCDsu6zrn7wg7KCR6re8IOuwqeyngOyaqSDrp4jsu6RcbiAgICB0eXBlIFFCVGFibGVzID0gVW5pb25FeHRyYWN0ZWRUVGFibGVzPFRTdWJzZXRLZXksIFRTdWJzZXRRdWVyaWVzPiAmIHtcbiAgICAgIE5vbkFsbG93ZWRBc1NpbmdsZVRhYmxlOiB7IF9fZnVsbHRleHRfXzogdHJ1ZSB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBvblN1YnNldDxTIGV4dGVuZHMgVFN1YnNldEtleT4oc3Vic2V0OiBTKTogUmV0dXJuVHlwZTxUU3Vic2V0UXVlcmllc1tTXT47XG4gICAgZnVuY3Rpb24gb25TdWJzZXQ8QXJyIGV4dGVuZHMgcmVhZG9ubHkgVFN1YnNldEtleVtdPihcbiAgICAgIHN1YnNldHM6IFsuLi5BcnJdLFxuICAgICk6IFJlc29sdmVTdWJzZXRJbnRlcnNlY3Rpb248QXJyLCBUU3Vic2V0UXVlcmllcz47XG4gICAgZnVuY3Rpb24gb25TdWJzZXQoX3N1YnNldDogVFN1YnNldEtleSB8IHJlYWRvbmx5IFRTdWJzZXRLZXlbXSkge1xuICAgICAgcmV0dXJuIHFiO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvLyBTQUZFVFk6IOqwmeydgCBQdXJpIOyduOyKpO2EtOyKpOyXkCDri6jsnbwg7YWM7J2067iUIOygkeq3vCDsoJztlZzsmqkg7YOA7J6FIOuniOy7pOunjCDstpTqsIDtlanri4jri6QuXG4gICAgICBxYjogcWIgYXMgUHVyaTxEYXRhYmFzZVNjaGVtYUV4dGVuZCwgUUJUYWJsZXMsIHt9PixcbiAgICAgIG9uU3Vic2V0LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW5oYW5jZXIg6rCd7LK0IOyDneyEsSDtl6ztjbxcbiAgICog7YOA7J6FIOqygOymnSDrsI8g7LaU66Gg7J2EIOuPhOyZgOykjFxuICAgKi9cbiAgY3JlYXRlRW5oYW5jZXJzPFQgZXh0ZW5kcyBUU3Vic2V0S2V5PihcbiAgICBlbmhhbmNlcnM6IEVuaGFuY2VyTWFwPFxuICAgICAgVCxcbiAgICAgIEluZmVyQWxsU3Vic2V0czxUU3Vic2V0UXVlcmllcywgVExvYWRlclF1ZXJpZXM+LFxuICAgICAgVFN1YnNldE1hcHBpbmcsXG4gICAgICBUU3Vic2V0UXVlcmllc1xuICAgID4sXG4gICkge1xuICAgIHJldHVybiBlbmhhbmNlcnM7XG4gIH1cblxuICAvKipcbiAgICog7ISc67iM7IWLIOy/vOumrCDsi6TtlolcbiAgICpcbiAgICogMS4gU29uYW11IO2VhO2EsCDsoIHsmqkgKO2DgOyehSDrs4DtmZgg7Y+s7ZWoKVxuICAgKiAyLiDsv7zrpqwg7Iuk7ZaJIChwYWdpbmF0aW9uIOyggeyaqSlcbiAgICogMy4g66Gc642UIOyLpO2WiSAoMTpOLCBOOk0g6rSA6rOEIOuNsOydtO2EsCDroZzrlKkpXG4gICAqIDQuIEh5ZHJhdGUgKGZsYXQg4oaSIOykkeyyqSDqsJ3ssrQpXG4gICAqIDUuIEVuaGFuY2VyIOyggeyaqSAodmlydHVhbCDtlYTrk5wg6rOE7IKwKVxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVN1YnNldFF1ZXJ5PFxuICAgIFQgZXh0ZW5kcyBUU3Vic2V0S2V5LFxuICAgIFRDb21wdXRlZFJlc3VsdHMgZXh0ZW5kcyBJbmZlckFsbFN1YnNldHM8VFN1YnNldFF1ZXJpZXMsIFRMb2FkZXJRdWVyaWVzPixcbiAgICBURmlsdGVyIGV4dGVuZHMgb2JqZWN0LFxuICAgIExQIGV4dGVuZHMge1xuICAgICAgbnVtPzogbnVtYmVyO1xuICAgICAgcGFnZT86IG51bWJlcjtcbiAgICAgIHF1ZXJ5TW9kZT86IFNvbmFtdVF1ZXJ5TW9kZTtcbiAgICB9LFxuICA+KFxuICAgIHBhcmFtczoge1xuICAgICAgc3Vic2V0OiBUO1xuICAgICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT47XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgbnVtOiBudW1iZXI7XG4gICAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgICAgcXVlcnlNb2RlPzogU29uYW11UXVlcnlNb2RlO1xuICAgICAgICBzb25hbXVGaWx0ZXI/OiBURmlsdGVyO1xuICAgICAgfTtcbiAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICAgIG9wdGltaXplQ291bnRRdWVyeT86IGJvb2xlYW47XG4gICAgfSAmIEVuaGFuY2VyUGFyYW08VFN1YnNldEtleSwgVENvbXB1dGVkUmVzdWx0cywgVFN1YnNldE1hcHBpbmcsIFRTdWJzZXRRdWVyaWVzPixcbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT4+IHtcbiAgICBjb25zdCB7IHN1YnNldCwgcWIsIHBhcmFtczogcXVlcnlQYXJhbXMsIGRlYnVnID0gZmFsc2UsIG9wdGltaXplQ291bnRRdWVyeSA9IGZhbHNlIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMubG9hZGVyUXVlcmllcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibG9hZGVyUXVlcmllcyBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICB9XG5cbiAgICAvLyBTb25hbXUgRmlsdGVyIOyggeyaqVxuICAgIGlmIChxdWVyeVBhcmFtcy5zb25hbXVGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWx0ZXIgPSBub3JtYWxpemVGaWx0ZXJRdWVyeShxdWVyeVBhcmFtcy5zb25hbXVGaWx0ZXIpO1xuICAgICAgdGhpcy5hcHBseVNvbmFtdUZpbHRlcnMocWIsIG5vcm1hbGl6ZWRGaWx0ZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbnVtLCBwYWdlIH0gPSBxdWVyeVBhcmFtcztcbiAgICAvLyDrqqjrk6Ag66Gc642U6rCAIHJvb3QgcXVlcnnsmYAg6rCZ7J2AIOyXsOqysOydhCDsgqzsmqntlZjrj4TroZ0g7Iuk7ZaJIOyLnOygkOydmCBrbmV47JeQ7IScIO2VnCDrsojrp4wg7YyM7IOd7ZWc64ukLlxuICAgIGNvbnN0IHB1cmlXcmFwcGVyID0gbmV3IFB1cmlXcmFwcGVyKHFiLmtuZXgsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuXG4gICAgLy8gQ09VTlQg7L+866asIOyLpO2WiSAocXVlcnlNb2RlOiBsaXN07J28IOuVjOuKlCAwIOumrO2EtClcbiAgICBjb25zdCB0b3RhbCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUNvdW50UXVlcnkocWIsIHF1ZXJ5UGFyYW1zLCBkZWJ1Zywgb3B0aW1pemVDb3VudFF1ZXJ5KTtcblxuICAgIGlmIChxdWVyeVBhcmFtcz8ucXVlcnlNb2RlID09PSBcImNvdW50XCIpIHtcbiAgICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICByZXR1cm4geyB0b3RhbCB9IGFzIExpc3RSZXN1bHQ8TFAsIFRTdWJzZXRNYXBwaW5nW1RdPjtcbiAgICB9XG5cbiAgICAvLyBMSVNUIOy/vOumrCDsi6TtlolcbiAgICBjb25zdCBjb21wdXRlZFJvd3MgPSBhd2FpdCB0aGlzLmV4ZWN1dGVMaXN0UXVlcnkoXG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgbnVtLFxuICAgICAgcGFnZSxcbiAgICAgIGRlYnVnLFxuICAgICAgcHVyaVdyYXBwZXIsXG4gICAgKTtcblxuICAgIC8vIEVuaGFuY2VyIOyggeyaqVxuICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgY29uc3QgZW5oYW5jZXIgPSAocGFyYW1zIGFzIGFueSkuZW5oYW5jZXJzPy5bc3Vic2V0XTtcbiAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgIGNvbnN0IGVuaGFuY2VkUm93cyA9IChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbXB1dGVkUm93cy5tYXAoKHJvdykgPT4gZW5oYW5jZXI/Lihyb3cpID8/IHJvdyksXG4gICAgKSkgYXMgVFN1YnNldE1hcHBpbmdbVF1bXTtcblxuICAgIC8vIEludGVybmFsIO2VhOuTnCDsoJzqsbBcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldCh0aGlzLm1vZGVsTmFtZSk7XG4gICAgY29uc3QgaW50ZXJuYWxGaWVsZHMgPSBlbnRpdHkuc3Vic2V0c0ludGVybmFsW3N1YnNldF0gPz8gW107XG4gICAgY29uc3Qgcm93cyA9XG4gICAgICBpbnRlcm5hbEZpZWxkcy5sZW5ndGggPiAwXG4gICAgICAgID8gZW5oYW5jZWRSb3dzLm1hcCgocm93KSA9PiB0aGlzLm9taXRJbnRlcm5hbEZpZWxkcyhyb3csIGludGVybmFsRmllbGRzKSlcbiAgICAgICAgOiBlbmhhbmNlZFJvd3M7XG5cbiAgICBpZiAocXVlcnlQYXJhbXMucXVlcnlNb2RlID09PSBcImxpc3RcIikge1xuICAgICAgLy8g66as7Iqk7Yq466eMIOumrO2EtFxuICAgICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIHJldHVybiB7IHJvd3MgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOuRmOuLpCDrpqzthLRcbiAgICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICByZXR1cm4geyByb3dzLCB0b3RhbCB9IGFzIExpc3RSZXN1bHQ8TFAsIFRTdWJzZXRNYXBwaW5nW1RdPjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6rCd7LK07JeQ7IScIGludGVybmFsIO2VhOuTnCDsoJzqsbBcbiAgICog7KSR7LKpIO2VhOuTnCjsmIg6IFwidXNlci5lbWFpbFwiKSDrsI8g67Cw7Je0KOyYiDogXCJlbXBsb3llZXMuc2FsYXJ5XCIp64+EIOyymOumrFxuICAgKi9cbiAgb21pdEludGVybmFsRmllbGRzPFQgZXh0ZW5kcyBvYmplY3Q+KHJvdzogVCwgZmllbGRzOiBzdHJpbmdbXSk6IFQge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcChyb3cpO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICB0aGlzLmRlbGV0ZUZpZWxkKHJlc3VsdCwgZmllbGQuc3BsaXQoXCIuXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJRdWVyeeulvCBQdXJpIFF1ZXJ5QnVpbGRlcuyXkCDsoIHsmqlcbiAgICpcbiAgICogQHBhcmFtIHFiIFB1cmkgUXVlcnlCdWlsZGVyIOyduOyKpO2EtOyKpFxuICAgKiBAcGFyYW0gZmlsdGVycyBGaWx0ZXJRdWVyeSDqsJ3ssrRcbiAgICovXG4gIHByb3RlY3RlZCBhcHBseVNvbmFtdUZpbHRlcnM8VEVudGl0eT4oXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgZmlsdGVycz86IEZpbHRlclF1ZXJ5PFRFbnRpdHk+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWZpbHRlcnMpIHJldHVybjtcblxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KHRoaXMubW9kZWxOYW1lKTtcblxuICAgIC8vIDEuIO2VhO2EsCDqsoDspp0gKEVudGl0eSDquLDrsJgpXG4gICAgdmFsaWRhdGVTb25hbXVGaWx0ZXJzKGZpbHRlcnMsIGVudGl0eSk7XG5cbiAgICAvLyAyLiDqsoDspp3rkJwg7ZWE7YSwIOyggeyaqVxuICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgY29uc3QgcHVyaSA9IHFiIGFzIGFueTtcblxuICAgIGZvciAoY29uc3QgW2ZpZWxkLCBjb25kaXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XG4gICAgICBpZiAoY29uZGl0aW9uID09PSB1bmRlZmluZWQgfHwgY29uZGl0aW9uID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgLy8g7YWM7J2067iU66qFLu2VhOuTnOuqhSDtmJXsi53snLzroZwg67OA7ZmYXG4gICAgICBjb25zdCBmdWxsRmllbGQgPSBlbnRpdHkuZ2V0RnVsbEZpZWxkTmFtZShmaWVsZCk7XG5cbiAgICAgIC8vIOyngeygkSDqsJIgKGVx7JmAIOuPmeydvClcbiAgICAgIGlmICghaXNPYmplY3RWYWx1ZShjb25kaXRpb24pIHx8IEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICBwdXJpLndoZXJlKGZ1bGxGaWVsZCwgY29uZGl0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIOyXsOyCsOyekCDqsJ3ssrRcbiAgICAgIGZvciAoY29uc3QgW29wZXJhdG9yLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZGl0aW9uKSkge1xuICAgICAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgICAgICB0aGlzLmFwcGx5T3BlcmF0b3IocWIsIGZ1bGxGaWVsZCwgb3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3IsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog64uo7J28IOyXsOyCsOyekOulvCBRdWVyeUJ1aWxkZXLsl5Ag7KCB7JqpXG4gICAqL1xuICBwcml2YXRlIGFwcGx5T3BlcmF0b3I8VmFsdWU+KFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuICAgIHZhbHVlOiBWYWx1ZSxcbiAgKTogdm9pZCB7XG4gICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICBjb25zdCBwdXJpID0gcWIgYXMgYW55O1xuXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJuZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIiE9XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj5cIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj49XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIjxcIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIjw9XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICBwdXJpLndoZXJlSW4oZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJub3RJblwiOlxuICAgICAgICBwdXJpLndoZXJlTm90SW4oZmllbGQsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcImxpa2VcIiwgYCUke3ZhbHVlfSVgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJzdGFydHNXaXRoXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwibGlrZVwiLCBgJHt2YWx1ZX0lYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZW5kc1dpdGhcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCJsaWtlXCIsIGAlJHt2YWx1ZX1gKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpc051bGxcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaXNOb3ROdWxsXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiIT1cIiwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYmVmb3JlXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPFwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYWZ0ZXJcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI+XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJiZXR3ZWVuXCI6IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB2YWx1ZTtcbiAgICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIj49XCIsIG1pbikud2hlcmUoZmllbGQsIFwiPD1cIiwgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBvcGVyYXRvcjogJHtvcGVyYXRvcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog7KSR7LKpIO2VhOuTnCDsgq3soJwgKOuwsOyXtCDrgrQg6rCd7LK064+EIOyymOumrClcbiAgICovXG4gIGRlbGV0ZUZpZWxkKG9iajogYW55LCBwYXJ0czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIW9iaiB8fCAhaXNPYmplY3RWYWx1ZShvYmopKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtICYmIGlzT2JqZWN0VmFsdWUoaXRlbSkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtW3BhcnRzWzBdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIG9ialtwYXJ0c1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IHBhcnRzO1xuICAgIGNvbnN0IG5leHQgPSBvYmpbZmlyc3RdO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHtcbiAgICAgIG5leHQubWFwKChpdGVtKSA9PiB0aGlzLmRlbGV0ZUZpZWxkKGl0ZW0sIHJlc3QpKTtcbiAgICB9IGVsc2UgaWYgKG5leHQgJiYgaXNPYmplY3RWYWx1ZShuZXh0KSkge1xuICAgICAgdGhpcy5kZWxldGVGaWVsZChuZXh0LCByZXN0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ09VTlQg7L+866asIOyLpO2WiSAo64K067aAIOuplOyEnOuTnClcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZUNvdW50UXVlcnkoXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgcGFyYW1zOiB7IHF1ZXJ5TW9kZT86IFwibGlzdFwiIHwgXCJjb3VudFwiIHwgXCJib3RoXCIgfSxcbiAgICBkZWJ1ZzogYm9vbGVhbixcbiAgICBvcHRpbWl6ZUNvdW50UXVlcnk6IGJvb2xlYW4sXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgaWYgKHBhcmFtcy5xdWVyeU1vZGUgPT09IFwibGlzdFwiKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFB1cmkgPSBxYi5jbG9uZSgpLmNsZWFyKFwib3JkZXJcIikuY2xlYXIoXCJsaW1pdFwiKS5jbGVhcihcIm9mZnNldFwiKTtcblxuICAgIGlmIChvcHRpbWl6ZUNvdW50UXVlcnkpIHtcbiAgICAgIGNvbnN0IHsgZGVmYXVsdDogU3FsUGFyc2VyIH0gPSBhd2FpdCBpbXBvcnQoXCJub2RlLXNxbC1wYXJzZXJcIik7XG4gICAgICBjb25zdCBwYXJzZXIgPSBuZXcgU3FsUGFyc2VyLlBhcnNlcigpO1xuICAgICAgY29uc3QgcGFyc2VkUXVlcnkgPSBwYXJzZXIuYXN0aWZ5KGNvdW50UHVyaS50b1F1ZXJ5KCksIHtcbiAgICAgICAgZGF0YWJhc2U6IFNvbmFtdS5jb25maWcuZGF0YWJhc2UuZGF0YWJhc2UsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbGVmdEpvaW5UYWJsZXMgPSBnZXRKb2luVGFibGVzKHBhcnNlZFF1ZXJ5LCBbXCJMRUZUIEpPSU5cIl0pO1xuICAgICAgY29uc3Qgd2hlcmVUYWJsZXMgPSBnZXRUYWJsZU5hbWVzRnJvbVdoZXJlKHBhcnNlZFF1ZXJ5KTtcblxuICAgICAgY29uc3QgdGFibGVzVG9SZW1vdmUgPSBsZWZ0Sm9pblRhYmxlcy5maWx0ZXIoKGopID0+ICF3aGVyZVRhYmxlcy5pbmNsdWRlcyhqKSk7XG4gICAgICB0YWJsZXNUb1JlbW92ZS5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgICBjb3VudFB1cmkuY2xlYXJKb2luKHRhYmxlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENPVU5UKCop66GcIOyghOyytCDroIjsvZTrk5wg7IiY66W8IOqzhOyCsFxuICAgIC8vIFRPRE86IHFi7J2YIERJU1RJTkNU6rCAIOyeiOuKlCDqsr3smrAg7LKY66as7ZW07JW8IO2VqFxuICAgIGNvbnN0IGNvdW50UmVzdWx0OiB7IHRvdGFsPzogbnVtYmVyIH0gPSBhd2FpdCBjb3VudFB1cmlcbiAgICAgIC5jbGVhcihcInNlbGVjdFwiKVxuICAgICAgLnNlbGVjdCh7IHRvdGFsOiBQdXJpLnJhd051bWJlcihgQ09VTlQoKik6OmludGVnZXJgKSB9KVxuICAgICAgLmZpcnN0KCk7XG5cbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvdW50UHVyaS5kZWJ1ZygpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudFJlc3VsdD8udG90YWwgPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMSVNUIOy/vOumrCDsi6TtlokgKOuCtOu2gCDrqZTshJzrk5wpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVMaXN0UXVlcnk8VCBleHRlbmRzIFRTdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBxYjogUHVyaTxhbnksIGFueSwgYW55PixcbiAgICBwYXJhbXM6IHsgcXVlcnlNb2RlPzogXCJsaXN0XCIgfCBcImNvdW50XCIgfCBcImJvdGhcIiB9LFxuICAgIG51bTogbnVtYmVyLFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBkZWJ1ZzogYm9vbGVhbixcbiAgICBwdXJpV3JhcHBlcjogUHVyaVdyYXBwZXIsXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICBpZiAocGFyYW1zLnF1ZXJ5TW9kZSA9PT0gXCJjb3VudFwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbGltaXRlZFFiID0gKCgpID0+IHtcbiAgICAgIGlmIChudW0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHFiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHFiLmxpbWl0KG51bSkub2Zmc2V0KG51bSAqIChwYWdlIC0gMSkpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgbGV0IHVubG9hZGVkUm93cyA9IGF3YWl0IGxpbWl0ZWRRYjtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgcWIuZGVidWcoKTtcbiAgICB9XG5cbiAgICAvLyDroZzrjZQg7LKY66asXG4gICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICBjb25zdCBsb2FkZXJzID0gKHRoaXMubG9hZGVyUXVlcmllcyBhcyBhbnkpW3N1YnNldF07XG4gICAgaWYgKGxvYWRlcnMgJiYgQXJyYXkuaXNBcnJheShsb2FkZXJzKSkge1xuICAgICAgdW5sb2FkZWRSb3dzID0gYXdhaXQgdGhpcy5wcm9jZXNzTG9hZGVycyh1bmxvYWRlZFJvd3MsIGxvYWRlcnMsIGRlYnVnLCBwdXJpV3JhcHBlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHlkcmF0ZSh1bmxvYWRlZFJvd3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyerOq3gOyggSDroZzrjZQg7LKY66asXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NMb2FkZXJzKFxuICAgIHJvd3M6IGFueVtdLFxuICAgIGxvYWRlcnM6IGFueVtdLFxuICAgIGRlYnVnOiBib29sZWFuLFxuICAgIHB1cmlXcmFwcGVyOiBQdXJpV3JhcHBlcixcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGZvciAoY29uc3QgcmVzb2x2ZUxvYWRlciBvZiBsb2FkZXJzKSB7XG4gICAgICBjb25zdCB7IGFzLCByZWZJZCwgcWI6IHJlc29sdmVMb2FkZXJRYkZuLCBsb2FkZXJzOiBuZXN0ZWRMb2FkZXJzIH0gPSByZXNvbHZlTG9hZGVyO1xuXG4gICAgICBjb25zdCByZXNvbHZlTG9hZGVyUWIgPSByZXNvbHZlTG9hZGVyUWJGbihcbiAgICAgICAgcHVyaVdyYXBwZXIsXG4gICAgICAgIHJvd3MubWFwKChyb3cpID0+IHJvd1tyZWZJZF0pLFxuICAgICAgKTtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIHJlc29sdmVMb2FkZXJRYi5kZWJ1ZygpO1xuICAgICAgfVxuXG4gICAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgICAgbGV0IGxvYWRlZFJvd3MgPSAoYXdhaXQgcmVzb2x2ZUxvYWRlclFiKSBhcyBhbnlbXTtcblxuICAgICAgLy8g7KSR7LKpIGxvYWRlcnPqsIAg7J6I7Jy866m0IOyerOq3gCDsspjrpqxcbiAgICAgIGlmIChuZXN0ZWRMb2FkZXJzICYmIG5lc3RlZExvYWRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsb2FkZWRSb3dzID0gYXdhaXQgdGhpcy5wcm9jZXNzTG9hZGVycyhsb2FkZWRSb3dzLCBuZXN0ZWRMb2FkZXJzLCBkZWJ1ZywgcHVyaVdyYXBwZXIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdWJSb3dHcm91cHMgPSBncm91cChsb2FkZWRSb3dzLCAocm93KSA9PiByb3cucmVmSWQpO1xuXG4gICAgICByb3dzID0gcm93cy5tYXAoKHJvdykgPT4ge1xuICAgICAgICByb3dbYXNdID0gKHN1YlJvd0dyb3Vwc1tyb3dbcmVmSWRdXSA/PyBbXSkubWFwKChyKSA9PiBvbWl0KHIsIFtcInJlZklkXCJdKSk7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGF0IOugiOy9lOuTnOulvCDspJHssqkg6rCd7LK066GcIOuzgO2ZmFxuICAgKlxuICAgKiAtIGB1c2VyX19uYW1lYCDihpIgYHsgdXNlcjogeyBuYW1lIH0gfWBcbiAgICogLSBudWxsYWJsZSByZWxhdGlvbuydmCDqsr3smrAgaWQg7ZWE65Oc6rCAIG51bGzsnbTrqbQg6rCd7LK0IOyekOyytOulvCBudWxs66GcXG4gICAqL1xuICBoeWRyYXRlPFQgZXh0ZW5kcyBvYmplY3Q+KHJvd3M6IFRbXSk6IFRbXSB7XG4gICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICByZXR1cm4gcm93cy5tYXAoKHJvdzogVCkgPT4ge1xuICAgICAgY29uc3Qgcm93VmFsdWVzID0gbmV3IE1hcChPYmplY3QuZW50cmllcyhyb3cpKTtcbiAgICAgIC8vIG51bGxhYmxlIHJlbGF0aW9uIOyymOumrDog6re466O57J2YIGlkIO2VhOuTnOqwgCBudWxs7J2066m0IOqwneyytCDsoITssrTrpbwgbnVsbOuhnFxuICAgICAgY29uc3QgbmVzdGVkS2V5cyA9IE9iamVjdC5rZXlzKHJvdykuZmlsdGVyKChrZXkpID0+IGtleS5pbmNsdWRlcyhcIl9fXCIpKTtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5ncm91cEJ5KG5lc3RlZEtleXMsIChrZXkpID0+IGtleS5zcGxpdChcIl9fXCIpWzBdKTtcblxuICAgICAgLy8gaWQg7ZWE65Oc6rCAIG51bGzsnbgg6re466O5IOywvuq4sCAo7JiIOiBwYXJlbnRfX2lk6rCAIG51bGzsnbTrqbQgcGFyZW50IOq3uOujuSDsoITssrTqsIAgbnVsbClcbiAgICAgIGNvbnN0IG51bGxLZXlzID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBzKVxuICAgICAgICAuZmlsdGVyKChbZ3JvdXBLZXksIGZpZWxkc10pID0+IHtcbiAgICAgICAgICBpZiAoIWZpZWxkcyB8fCBmaWVsZHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAvLyDqt7jro7nsnZggaWQg7ZWE65OcIOywvuq4sCAo7JiIOiBcInBhcmVudF9faWRcIilcbiAgICAgICAgICBjb25zdCBpZEZpZWxkID0gYCR7Z3JvdXBLZXl9X19pZGA7XG4gICAgICAgICAgaWYgKGlkRmllbGQgaW4gcm93KSB7XG4gICAgICAgICAgICAvLyBpZCDtlYTrk5zqsIAgbnVsbOydtOuptCDqsJ3ssrQg7KCE7LK06rCAIG51bGxcbiAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZXMuZ2V0KGlkRmllbGQpID09PSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlkIO2VhOuTnOqwgCDsl4bsnLzrqbQg6riw7KG0IOuhnOyngTog66qo65OgIO2VhOuTnOqwgCBudWxs7J247KeAIO2ZleyduFxuICAgICAgICAgIHJldHVybiBmaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcm93VmFsdWVzLmdldChmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRWYWx1ZSA9PT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSAmJiBmaWVsZFZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpO1xuXG4gICAgICBsZXQgaHlkcmF0ZWQ6IERhdGFiYXNlUmVjb3JkID0gT2JqZWN0LmZyb21FbnRyaWVzKFtdKTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LmtleXMocm93KSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcm93VmFsdWVzLmdldChmaWVsZCk7XG4gICAgICAgIGlmICghZmllbGQuaW5jbHVkZXMoXCJfX1wiKSkge1xuICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkVmFsdWUgPVxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSAmJiBpc09iamVjdChmaWVsZFZhbHVlWzBdKVxuICAgICAgICAgICAgICA/IHRoaXMuaHlkcmF0ZShmaWVsZFZhbHVlKVxuICAgICAgICAgICAgICA6IGZpZWxkVmFsdWU7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihoeWRyYXRlZCwgeyBbZmllbGRdOiBoeWRyYXRlZFZhbHVlIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g7KSR7LKpIO2VhOuTnCDsspjrpqw6IHVzZXJfX25hbWUg4oaSIHVzZXJbbmFtZV1cbiAgICAgICAgY29uc3QgcGFydHMgPSBmaWVsZC5zcGxpdChcIl9fXCIpO1xuICAgICAgICBjb25zdCBvYmpQYXRoID1cbiAgICAgICAgICBwYXJ0c1swXSArXG4gICAgICAgICAgcGFydHNcbiAgICAgICAgICAgIC5zbGljZSgxKVxuICAgICAgICAgICAgLm1hcCgocGFydCkgPT4gYFske3BhcnR9XWApXG4gICAgICAgICAgICAuam9pbihcIlwiKTtcblxuICAgICAgICBoeWRyYXRlZCA9IHNldChcbiAgICAgICAgICBoeWRyYXRlZCxcbiAgICAgICAgICBvYmpQYXRoLFxuICAgICAgICAgIGZpZWxkVmFsdWUgJiYgQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSAmJiBpc09iamVjdChmaWVsZFZhbHVlWzBdKVxuICAgICAgICAgICAgPyB0aGlzLmh5ZHJhdGUoZmllbGRWYWx1ZSlcbiAgICAgICAgICAgIDogZmllbGRWYWx1ZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gbnVsbCByZWxhdGlvbiDsspjrpqxcbiAgICAgIG51bGxLZXlzLmZvckVhY2goKG51bGxLZXkpID0+IHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihoeWRyYXRlZCwgeyBbbnVsbEtleV06IG51bGwgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGh5ZHJhdGVkO1xuICAgIH0pIGFzIFRbXTtcbiAgfVxufVxuXG4vKipcbiAqIEVuaGFuY2VyIO2MjOudvOuvuO2EsCDsobDqsbTrtoAg7YOA7J6FXG4gKiBSZXF1aXJlZEVuaGFuY2VyS2V5c+qwgCDsl4bsnLzrqbQgZW5oYW5jZXJzIOyEoO2DneyggSwg7J6I7Jy866m0IO2VhOyImFxuICovXG50eXBlIEVuaGFuY2VyUGFyYW08XG4gIFRTdWJzZXRLZXkgZXh0ZW5kcyBzdHJpbmcsXG4gIFRDb21wdXRlZFJlc3VsdHMgZXh0ZW5kcyB7IFtLIGluIFRTdWJzZXRLZXldOiBUQ29tcHV0ZWRSZXN1bHRzW0tdIH0sXG4gIFRTdWJzZXRNYXBwaW5nIGV4dGVuZHMgeyBbSyBpbiBUU3Vic2V0S2V5XTogVFN1YnNldE1hcHBpbmdbS10gfSxcbiAgVFN1YnNldFF1ZXJpZXMgZXh0ZW5kcyBSZWNvcmQ8VFN1YnNldEtleSwgUHVyaVN1YnNldEZuPixcbj4gPSBbUmVxdWlyZWRFbmhhbmNlcktleXM8VFN1YnNldEtleSwgVENvbXB1dGVkUmVzdWx0cywgVFN1YnNldE1hcHBpbmc+XSBleHRlbmRzIFtuZXZlcl1cbiAgPyB7IGVuaGFuY2Vycz86IEVuaGFuY2VyTWFwPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4gfVxuICA6IHsgZW5oYW5jZXJzOiBFbmhhbmNlck1hcDxUU3Vic2V0S2V5LCBUQ29tcHV0ZWRSZXN1bHRzLCBUU3Vic2V0TWFwcGluZywgVFN1YnNldFF1ZXJpZXM+IH07XG5cbnR5cGUgUmVxdWlyZWRFbmhhbmNlcktleXM8XG4gIFRTdWJzZXRLZXkgZXh0ZW5kcyBzdHJpbmcsXG4gIFRDb21wdXRlZFJlc3VsdHMgZXh0ZW5kcyB7IFtLIGluIFRTdWJzZXRLZXldOiBUQ29tcHV0ZWRSZXN1bHRzW0tdIH0sXG4gIFRTdWJzZXRNYXBwaW5nIGV4dGVuZHMgeyBbSyBpbiBUU3Vic2V0S2V5XTogVFN1YnNldE1hcHBpbmdbS10gfSxcbj4gPSB7XG4gIFtLIGluIFRTdWJzZXRLZXldOiBUQ29tcHV0ZWRSZXN1bHRzW0tdIGV4dGVuZHMgVFN1YnNldE1hcHBpbmdbS10gPyBuZXZlciA6IEs7XG59W1RTdWJzZXRLZXldO1xuXG5leHBvcnQgY29uc3QgQmFzZU1vZGVsID0gbmV3IEJhc2VNb2RlbENsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBTXNDLFlBQUE7Q0FDa0Isb0JBQUE7Q0FFcUIsV0FBQTtDQUNqQixjQUFBO0NBR04sbUJBQUE7Q0FDcUIsZ0JBQUE7Q0FHbEQsUUFBQTtDQUNJLFVBQUE7Q0FNZSxrQkFBQTtDQUVJLG9CQUFBO0NBdUJuQyxpQkFBYixNQUtFO0VBSWtCO0VBQ047RUFDQTtFQUxaO0VBRUEsWUFDRSxZQUFvQyxLQUFLLFlBQVksTUFDckQsZUFDQSxlQUNBO0dBSGdCLEtBQUEsWUFBQTtHQUNOLEtBQUEsZ0JBQUE7R0FDQSxLQUFBLGdCQUFBO0dBRVYsS0FBSyxTQUFTLFVBQVUsd0JBQXdCLEtBQUssV0FBVyxPQUFPLENBQUM7RUFDMUU7RUFFQSxNQUFNLE9BQXVCO0dBQzNCLE9BQU8sR0FBRyxNQUFNLEtBQUs7RUFDdkI7RUFFQSxRQUFRLE9BQThCO0dBRXBDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsZUFBZSxLQUFLO0dBQzNELElBQUksS0FDRixPQUFPO0dBSVQsTUFBTSxLQUFLLEtBQUssTUFBTSxLQUFLO0dBQzNCLE9BQU8sSUFBSSxZQUFZLElBQUksSUFBSSxjQUFjLENBQUM7RUFDaEQ7RUFFQSxxQkFBMEM7R0FDeEMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLHFCQUFxQjtHQUMxRSxJQUFJLG1CQUNGLE9BQU87R0FHVCxPQUFPLElBQUksWUFBWSxLQUFLLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFDO0VBQzdEO0VBRUEsTUFBTSxVQUFVO0dBQ2QsT0FBTyxHQUFHLFFBQVE7RUFDcEI7RUFFQSxNQUFNLGVBQ0osS0FDQSxNQUNBLFdBQ0EsY0FDQSxZQUFvQixL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
|
|
340
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvYmFzZS1tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogUHVyaeydmCDtg4DsnoXsnYAg6rCc67OEIOuqqOuNuOyXkOyEnCDtmZXsoJXrkJjrr4DroZwgQmFzZU1vZGVs7JeQ7ISc64qUIGFueeulvCDtl4jsmqntlaggKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjbHVzdGVyLCBncm91cCwgaXNPYmplY3QsIG9taXQsIHNldCB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuLi9maWx0ZXIvdHlwZXNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZpbHRlclF1ZXJ5LCB2YWxpZGF0ZVNvbmFtdUZpbHRlcnMgfSBmcm9tIFwiLi4vZmlsdGVyL3V0aWxzXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IE5haXRlIH0gZnJvbSBcIi4uL25haXRlL25haXRlXCI7XG5pbXBvcnQgeyB0eXBlIERhdGFiYXNlU2NoZW1hRXh0ZW5kLCB0eXBlIFNvbmFtdVF1ZXJ5TW9kZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBMaXN0UmVzdWx0IH0gZnJvbSBcIi4uL3V0aWxzL21vZGVsXCI7XG5pbXBvcnQgeyBpc09iamVjdFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IGdldEpvaW5UYWJsZXMsIGdldFRhYmxlTmFtZXNGcm9tV2hlcmUgfSBmcm9tIFwiLi4vdXRpbHMvc3FsLXBhcnNlclwiO1xuaW1wb3J0IHsgdHlwZSBFbmhhbmNlck1hcCwgdHlwZSBSZXNvbHZlU3Vic2V0SW50ZXJzZWN0aW9uIH0gZnJvbSBcIi4vYmFzZS1tb2RlbC50eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBEQlByZXNldCB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuL2RiXCI7XG5pbXBvcnQgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJbmZlckFsbFN1YnNldHMsXG4gIHR5cGUgUHVyaUxvYWRlclF1ZXJpZXMsXG4gIHR5cGUgUHVyaVN1YnNldEZuLFxufSBmcm9tIFwiLi9wdXJpLXN1YnNldC50eXBlc1wiO1xuaW1wb3J0IHsgUHVyaVdyYXBwZXIgfSBmcm9tIFwiLi9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IHR5cGUgVW5pb25FeHRyYWN0ZWRUVGFibGVzIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuL3Vwc2VydC1idWlsZGVyXCI7XG5cbnR5cGUgRGF0YWJhc2VSZWNvcmRWYWx1ZSA9XG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IGJpZ2ludFxuICB8IERhdGVcbiAgfCBCdWZmZXJcbiAgfCBLbmV4LlJhd1xuICB8IG51bGxcbiAgfCBEYXRhYmFzZVJlY29yZFZhbHVlW11cbiAgfCB7IFtrZXk6IHN0cmluZ106IERhdGFiYXNlUmVjb3JkVmFsdWUgfTtcbnR5cGUgRGF0YWJhc2VSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBEYXRhYmFzZVJlY29yZFZhbHVlIHwgdW5kZWZpbmVkPjtcblxuLyoqXG4gKiDrqqjrk6AgTW9kZWwg7YG0656Y7Iqk7J2YIOq4sOuzuCDtgbTrnpjsiqRcbiAqXG4gKiBAdGVtcGxhdGUgVFN1YnNldEtleSAtIOyEnOu4jOyFiyDtgqQg7Jyg64uI7JioICjsmIg6IFwiQVwiIHwgXCJQXCIgfCBcIlNTXCIpXG4gKiBAdGVtcGxhdGUgVFN1YnNldE1hcHBpbmcgLSDshJzruIzshYvrs4Qg7LWc7KKFIOqysOqzvCDtg4DsnoUg66ek7ZWRXG4gKiBAdGVtcGxhdGUgVFN1YnNldFF1ZXJpZXMgLSDshJzruIzshYsg7L+866asIO2VqOyImCDqsJ3ssrRcbiAqIEB0ZW1wbGF0ZSBUTG9hZGVyUXVlcmllcyAtIOyEnOu4jOyFi+uzhCDroZzrjZQg7L+866asIOuwsOyXtCDqsJ3ssrRcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VNb2RlbENsYXNzPFxuICBUU3Vic2V0S2V5IGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gIFRTdWJzZXRNYXBwaW5nIGV4dGVuZHMgeyBbSyBpbiBUU3Vic2V0S2V5XTogVFN1YnNldE1hcHBpbmdbS10gfSA9IG5ldmVyLFxuICBUU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBQdXJpU3Vic2V0Rm4+ID0gbmV2ZXIsXG4gIFRMb2FkZXJRdWVyaWVzIGV4dGVuZHMgUHVyaUxvYWRlclF1ZXJpZXM8VFN1YnNldEtleT4gPSBuZXZlcixcbj4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG1vZGVsTmFtZTogc3RyaW5nID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgIHByb3RlY3RlZCBzdWJzZXRRdWVyaWVzPzogVFN1YnNldFF1ZXJpZXMsXG4gICAgcHJvdGVjdGVkIGxvYWRlclF1ZXJpZXM/OiBUTG9hZGVyUXVlcmllcyxcbiAgKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpO1xuICB9XG5cbiAgZ2V0REIod2hpY2g6IERCUHJlc2V0KTogS25leCB7XG4gICAgcmV0dXJuIERCLmdldERCKHdoaWNoKTtcbiAgfVxuXG4gIGdldFB1cmkod2hpY2g6IERCUHJlc2V0KTogUHVyaVdyYXBwZXIge1xuICAgIC8vIO2KuOuenOyereyFmCDsu6jthY3siqTtirjsl5DshJwg7Yq4656c7J6t7IWYIO2ajeuTnVxuICAgIGNvbnN0IHRyeCA9IERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmdldFRyYW5zYWN0aW9uKHdoaWNoKTtcbiAgICBpZiAodHJ4KSB7XG4gICAgICByZXR1cm4gdHJ4O1xuICAgIH1cblxuICAgIC8vIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66Gc7Jq0IFB1cmlXcmFwcGVyIOuwmO2ZmFxuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQih3aGljaCk7XG4gICAgcmV0dXJuIG5ldyBQdXJpV3JhcHBlcihkYiwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1YnNldFF1ZXJ5UHVyaSgpOiBQdXJpV3JhcHBlciB7XG4gICAgY29uc3QgYWN0aXZlVHJhbnNhY3Rpb24gPSBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5nZXRBY3RpdmVUcmFuc2FjdGlvbigpO1xuICAgIGlmIChhY3RpdmVUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuIGFjdGl2ZVRyYW5zYWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVyaVdyYXBwZXIodGhpcy5nZXREQihcInJcIiksIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICByZXR1cm4gREIuZGVzdHJveSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SW5zZXJ0ZWRJZHMoXG4gICAgd2RiOiBLbmV4LFxuICAgIHJvd3M6IERhdGFiYXNlUmVjb3JkW10sXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgdW5xS2V5RmllbGRzOiBzdHJpbmdbXSxcbiAgICBjaHVua1NpemU6IG51bWJlciA9IDUwMCxcbiAgKSB7XG4gICAgaWYgKCF3ZGIpIHtcbiAgICAgIHdkYiA9IHRoaXMuZ2V0REIoXCJ3XCIpO1xuICAgIH1cblxuICAgIGxldCB1bnFLZXlzOiBzdHJpbmdbXTtcbiAgICBsZXQgd2hlcmVJbkZpZWxkOiBzdHJpbmcgfCBLbmV4LlJhdztcbiAgICBsZXQgc2VsZWN0RmllbGQ6IHN0cmluZztcblxuICAgIGlmICh1bnFLZXlGaWVsZHMubGVuZ3RoID4gMSkge1xuICAgICAgd2hlcmVJbkZpZWxkID0gd2RiLnJhdyhgQ09OQ0FUX1dTKCdfJywgJyR7dW5xS2V5RmllbGRzLmpvaW4oXCIsXCIpfScpYCk7XG4gICAgICBzZWxlY3RGaWVsZCA9IGAke3doZXJlSW5GaWVsZH0gYXMgdG1wVWlkYDtcbiAgICAgIHVucUtleXMgPSByb3dzLm1hcCgocm93KSA9PiB1bnFLZXlGaWVsZHMubWFwKChmaWVsZCkgPT4gcm93W2ZpZWxkXSkuam9pbihcIl9cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aGVyZUluRmllbGQgPSB1bnFLZXlGaWVsZHNbMF07XG4gICAgICBzZWxlY3RGaWVsZCA9IHVucUtleUZpZWxkc1swXTtcbiAgICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICB1bnFLZXlzID0gcm93cy5tYXAoKHJvdykgPT4gcm93W3VucUtleUZpZWxkc1swXV0gYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0SWRzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbXMgb2YgY2x1c3Rlcih1bnFLZXlzLCBjaHVua1NpemUpKSB7XG4gICAgICBjb25zdCBkYlJvd3MgPSBhd2FpdCB3ZGIodGFibGVOYW1lKVxuICAgICAgICAuc2VsZWN0KFwiaWRcIiwgd2RiLnJhdyhzZWxlY3RGaWVsZCkpXG4gICAgICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICAgIC53aGVyZUluKFxuICAgICAgICAgIC8qIFNBRkVUWTogS25leCDrn7Dtg4DsnoTsnYAg7Lus65+8IOychOy5mOydmCBSYXcg7ZGc7ZiE7Iud7J2EIOyngOybkO2VmOyngOunjCDshKDslrgg7YOA7J6F7JeQ64qUIOuIhOudveuQmOyWtCDsnojsirXri4jri6QuICovXG4gICAgICAgICAgd2hlcmVJbkZpZWxkIGFzIHN0cmluZyxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgKTtcbiAgICAgIHJlc3VsdElkcyA9IHJlc3VsdElkcy5jb25jYXQoXG4gICAgICAgIGRiUm93cy5tYXAoKGRiUm93OiBEYXRhYmFzZVJlY29yZCkgPT4gcGFyc2VJbnQoU3RyaW5nKGRiUm93LmlkKSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0SWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIO2KueyglSDshJzruIzshYvsl5Ag64yA7ZWcIOy/vOumrCDruYzrjZQg7ZqN65OdXG4gICAqXG4gICAqIEByZXR1cm5zIHFiIC0g7L+866asIOu5jOuNlCAo7KGw6rG0IOy2lOqwgOyaqSlcbiAgICogQHJldHVybnMgb25TdWJzZXQgLSDtirnsoJUg7ISc67iM7IWLIOyghOyaqSDtg4DsnoXsnbQg7ZWE7JqU7ZWgIOuVjCDsgqzsmqlcbiAgICovXG4gIGdldFN1YnNldFF1ZXJpZXM8VCBleHRlbmRzIFRTdWJzZXRLZXk+KHN1YnNldDogVCkge1xuICAgIGlmICghdGhpcy5zdWJzZXRRdWVyaWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdWJzZXRRdWVyaWVzIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHB1cmlXcmFwcGVyID0gdGhpcy5nZXRTdWJzZXRRdWVyeVB1cmkoKTtcbiAgICBjb25zdCBxYiA9IHRoaXMuc3Vic2V0UXVlcmllc1tzdWJzZXRdPy4ocHVyaVdyYXBwZXIpO1xuXG4gICAgLy8gTm9uQWxsb3dlZEFzU2luZ2xlVGFibGU6IOuLqOydvCDthYzsnbTruJQg7Lus65+8IOygkeq3vCDrsKnsp4Dsmqkg66eI7LukXG4gICAgdHlwZSBRQlRhYmxlcyA9IFVuaW9uRXh0cmFjdGVkVFRhYmxlczxUU3Vic2V0S2V5LCBUU3Vic2V0UXVlcmllcz4gJiB7XG4gICAgICBOb25BbGxvd2VkQXNTaW5nbGVUYWJsZTogeyBfX2Z1bGx0ZXh0X186IHRydWUgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb25TdWJzZXQ8UyBleHRlbmRzIFRTdWJzZXRLZXk+KHN1YnNldDogUyk6IFJldHVyblR5cGU8VFN1YnNldFF1ZXJpZXNbU10+O1xuICAgIGZ1bmN0aW9uIG9uU3Vic2V0PEFyciBleHRlbmRzIHJlYWRvbmx5IFRTdWJzZXRLZXlbXT4oXG4gICAgICBzdWJzZXRzOiBbLi4uQXJyXSxcbiAgICApOiBSZXNvbHZlU3Vic2V0SW50ZXJzZWN0aW9uPEFyciwgVFN1YnNldFF1ZXJpZXM+O1xuICAgIGZ1bmN0aW9uIG9uU3Vic2V0KF9zdWJzZXQ6IFRTdWJzZXRLZXkgfCByZWFkb25seSBUU3Vic2V0S2V5W10pIHtcbiAgICAgIHJldHVybiBxYjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gU0FGRVRZOiDqsJnsnYAgUHVyaSDsnbjsiqTthLTsiqTsl5Ag64uo7J28IO2FjOydtOu4lCDsoJHqt7wg7KCc7ZWc7JqpIO2DgOyehSDrp4jsu6Trp4wg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgcWI6IHFiIGFzIFB1cmk8RGF0YWJhc2VTY2hlbWFFeHRlbmQsIFFCVGFibGVzLCB7fT4sXG4gICAgICBvblN1YnNldCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuaGFuY2VyIOqwneyytCDsg53shLEg7Zes7Y28XG4gICAqIO2DgOyehSDqsoDspp0g67CPIOy2lOuhoOydhCDrj4TsmYDspIxcbiAgICovXG4gIGNyZWF0ZUVuaGFuY2VyczxUIGV4dGVuZHMgVFN1YnNldEtleT4oXG4gICAgZW5oYW5jZXJzOiBFbmhhbmNlck1hcDxcbiAgICAgIFQsXG4gICAgICBJbmZlckFsbFN1YnNldHM8VFN1YnNldFF1ZXJpZXMsIFRMb2FkZXJRdWVyaWVzPixcbiAgICAgIFRTdWJzZXRNYXBwaW5nLFxuICAgICAgVFN1YnNldFF1ZXJpZXNcbiAgICA+LFxuICApIHtcbiAgICByZXR1cm4gZW5oYW5jZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIOyEnOu4jOyFiyDsv7zrpqwg7Iuk7ZaJXG4gICAqXG4gICAqIDEuIFNvbmFtdSDtlYTthLAg7KCB7JqpICjtg4DsnoUg67OA7ZmYIO2PrO2VqClcbiAgICogMi4g7L+866asIOyLpO2WiSAocGFnaW5hdGlvbiDsoIHsmqkpXG4gICAqIDMuIOuhnOuNlCDsi6TtlokgKDE6TiwgTjpNIOq0gOqzhCDrjbDsnbTthLAg66Gc65SpKVxuICAgKiA0LiBIeWRyYXRlIChmbGF0IOKGkiDspJHssqkg6rCd7LK0KVxuICAgKiA1LiBFbmhhbmNlciDsoIHsmqkgKHZpcnR1YWwg7ZWE65OcIOqzhOyCsClcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVTdWJzZXRRdWVyeTxcbiAgICBUIGV4dGVuZHMgVFN1YnNldEtleSxcbiAgICBUQ29tcHV0ZWRSZXN1bHRzIGV4dGVuZHMgSW5mZXJBbGxTdWJzZXRzPFRTdWJzZXRRdWVyaWVzLCBUTG9hZGVyUXVlcmllcz4sXG4gICAgVEZpbHRlciBleHRlbmRzIG9iamVjdCxcbiAgICBMUCBleHRlbmRzIHtcbiAgICAgIG51bT86IG51bWJlcjtcbiAgICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgICBxdWVyeU1vZGU/OiBTb25hbXVRdWVyeU1vZGU7XG4gICAgfSxcbiAgPihcbiAgICBwYXJhbXM6IHtcbiAgICAgIHN1YnNldDogVDtcbiAgICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+O1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG51bTogbnVtYmVyO1xuICAgICAgICBwYWdlOiBudW1iZXI7XG4gICAgICAgIHF1ZXJ5TW9kZT86IFNvbmFtdVF1ZXJ5TW9kZTtcbiAgICAgICAgc29uYW11RmlsdGVyPzogVEZpbHRlcjtcbiAgICAgIH07XG4gICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICBvcHRpbWl6ZUNvdW50UXVlcnk/OiBib29sZWFuO1xuICAgIH0gJiBFbmhhbmNlclBhcmFtPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4sXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgVFN1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgY29uc3QgeyBzdWJzZXQsIHFiLCBwYXJhbXM6IHF1ZXJ5UGFyYW1zLCBkZWJ1ZyA9IGZhbHNlLCBvcHRpbWl6ZUNvdW50UXVlcnkgPSBmYWxzZSB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLmxvYWRlclF1ZXJpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImxvYWRlclF1ZXJpZXMgaXMgbm90IGRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgLy8gU29uYW11IEZpbHRlciDsoIHsmqlcbiAgICBpZiAocXVlcnlQYXJhbXMuc29uYW11RmlsdGVyKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkRmlsdGVyID0gbm9ybWFsaXplRmlsdGVyUXVlcnkocXVlcnlQYXJhbXMuc29uYW11RmlsdGVyKTtcbiAgICAgIHRoaXMuYXBwbHlTb25hbXVGaWx0ZXJzKHFiLCBub3JtYWxpemVkRmlsdGVyKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG51bSwgcGFnZSB9ID0gcXVlcnlQYXJhbXM7XG4gICAgLy8g66qo65OgIOuhnOuNlOqwgCByb290IHF1ZXJ57JmAIOqwmeydgCDsl7DqsrDsnYQg7IKs7Jqp7ZWY64+E66GdIOyLpO2WiSDsi5zsoJDsnZgga25leOyXkOyEnCDtlZwg67KI66eMIO2MjOyDne2VnOuLpC5cbiAgICBjb25zdCBwdXJpV3JhcHBlciA9IG5ldyBQdXJpV3JhcHBlcihxYi5rbmV4LCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcblxuICAgIC8vIENPVU5UIOy/vOumrCDsi6TtlokgKHF1ZXJ5TW9kZTogbGlzdOydvCDrlYzripQgMCDrpqzthLQpXG4gICAgY29uc3QgdG90YWwgPSBhd2FpdCB0aGlzLmV4ZWN1dGVDb3VudFF1ZXJ5KHFiLCBxdWVyeVBhcmFtcywgZGVidWcsIG9wdGltaXplQ291bnRRdWVyeSk7XG5cbiAgICBpZiAocXVlcnlQYXJhbXM/LnF1ZXJ5TW9kZSA9PT0gXCJjb3VudFwiKSB7XG4gICAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgICAgcmV0dXJuIHsgdG90YWwgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfVxuXG4gICAgLy8gTElTVCDsv7zrpqwg7Iuk7ZaJXG4gICAgY29uc3QgY29tcHV0ZWRSb3dzID0gYXdhaXQgdGhpcy5leGVjdXRlTGlzdFF1ZXJ5KFxuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIG51bSxcbiAgICAgIHBhZ2UsXG4gICAgICBkZWJ1ZyxcbiAgICAgIHB1cmlXcmFwcGVyLFxuICAgICk7XG5cbiAgICAvLyBFbmhhbmNlciDsoIHsmqlcbiAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgIGNvbnN0IGVuaGFuY2VyID0gKHBhcmFtcyBhcyBhbnkpLmVuaGFuY2Vycz8uW3N1YnNldF07XG4gICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICBjb25zdCBlbmhhbmNlZFJvd3MgPSAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb21wdXRlZFJvd3MubWFwKChyb3cpID0+IGVuaGFuY2VyPy4ocm93KSA/PyByb3cpLFxuICAgICkpIGFzIFRTdWJzZXRNYXBwaW5nW1RdW107XG5cbiAgICAvLyBJbnRlcm5hbCDtlYTrk5wg7KCc6rGwXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQodGhpcy5tb2RlbE5hbWUpO1xuICAgIGNvbnN0IGludGVybmFsRmllbGRzID0gZW50aXR5LnN1YnNldHNJbnRlcm5hbFtzdWJzZXRdID8/IFtdO1xuICAgIGNvbnN0IHJvd3MgPVxuICAgICAgaW50ZXJuYWxGaWVsZHMubGVuZ3RoID4gMFxuICAgICAgICA/IGVuaGFuY2VkUm93cy5tYXAoKHJvdykgPT4gdGhpcy5vbWl0SW50ZXJuYWxGaWVsZHMocm93LCBpbnRlcm5hbEZpZWxkcykpXG4gICAgICAgIDogZW5oYW5jZWRSb3dzO1xuXG4gICAgaWYgKHF1ZXJ5UGFyYW1zLnF1ZXJ5TW9kZSA9PT0gXCJsaXN0XCIpIHtcbiAgICAgIC8vIOumrOyKpO2KuOunjCDrpqzthLRcbiAgICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICByZXR1cm4geyByb3dzIH0gYXMgTGlzdFJlc3VsdDxMUCwgVFN1YnNldE1hcHBpbmdbVF0+O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDrkZjri6Qg66as7YS0XG4gICAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgICAgcmV0dXJuIHsgcm93cywgdG90YWwgfSBhcyBMaXN0UmVzdWx0PExQLCBUU3Vic2V0TWFwcGluZ1tUXT47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOqwneyytOyXkOyEnCBpbnRlcm5hbCDtlYTrk5wg7KCc6rGwXG4gICAqIOykkeyyqSDtlYTrk5wo7JiIOiBcInVzZXIuZW1haWxcIikg67CPIOuwsOyXtCjsmIg6IFwiZW1wbG95ZWVzLnNhbGFyeVwiKeuPhCDsspjrpqxcbiAgICovXG4gIG9taXRJbnRlcm5hbEZpZWxkczxUIGV4dGVuZHMgb2JqZWN0Pihyb3c6IFQsIGZpZWxkczogc3RyaW5nW10pOiBUIHtcbiAgICBjb25zdCByZXN1bHQgPSBjbG9uZURlZXAocm93KTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgdGhpcy5kZWxldGVGaWVsZChyZXN1bHQsIGZpZWxkLnNwbGl0KFwiLlwiKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyUXVlcnnrpbwgUHVyaSBRdWVyeUJ1aWxkZXLsl5Ag7KCB7JqpXG4gICAqXG4gICAqIEBwYXJhbSBxYiBQdXJpIFF1ZXJ5QnVpbGRlciDsnbjsiqTthLTsiqRcbiAgICogQHBhcmFtIGZpbHRlcnMgRmlsdGVyUXVlcnkg6rCd7LK0XG4gICAqL1xuICBwcm90ZWN0ZWQgYXBwbHlTb25hbXVGaWx0ZXJzPFRFbnRpdHk+KFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIGZpbHRlcnM/OiBGaWx0ZXJRdWVyeTxURW50aXR5PixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFmaWx0ZXJzKSByZXR1cm47XG5cbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldCh0aGlzLm1vZGVsTmFtZSk7XG5cbiAgICAvLyAxLiDtlYTthLAg6rKA7KadIChFbnRpdHkg6riw67CYKVxuICAgIHZhbGlkYXRlU29uYW11RmlsdGVycyhmaWx0ZXJzLCBlbnRpdHkpO1xuXG4gICAgLy8gMi4g6rKA7Kad65CcIO2VhO2EsCDsoIHsmqlcbiAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgIGNvbnN0IHB1cmkgPSBxYiBhcyBhbnk7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgICAgaWYgKGNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkIHx8IGNvbmRpdGlvbiA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgIC8vIO2FjOydtOu4lOuqhS7tlYTrk5zrqoUg7ZiV7Iud7Jy866GcIOuzgO2ZmFxuICAgICAgY29uc3QgZnVsbEZpZWxkID0gZW50aXR5LmdldEZ1bGxGaWVsZE5hbWUoZmllbGQpO1xuXG4gICAgICAvLyDsp4HsoJEg6rCSIChlceyZgCDrj5nsnbwpXG4gICAgICBpZiAoIWlzT2JqZWN0VmFsdWUoY29uZGl0aW9uKSB8fCBBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgICAgcHVyaS53aGVyZShmdWxsRmllbGQsIGNvbmRpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyDsl7DsgrDsnpAg6rCd7LK0XG4gICAgICBmb3IgKGNvbnN0IFtvcGVyYXRvciwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikpIHtcbiAgICAgICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgICAgdGhpcy5hcHBseU9wZXJhdG9yKHFiLCBmdWxsRmllbGQsIG9wZXJhdG9yIGFzIEZpbHRlck9wZXJhdG9yLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOuLqOydvCDsl7DsgrDsnpDrpbwgUXVlcnlCdWlsZGVy7JeQIOyggeyaqVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wZXJhdG9yPFZhbHVlPihcbiAgICBxYjogUHVyaTxhbnksIGFueSwgYW55PixcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcbiAgICB2YWx1ZTogVmFsdWUsXG4gICk6IHZvaWQge1xuICAgIC8vIFNBRkVUWTog7L+866asIOu5jOuNlOydmCDsoJzrhKTrpq0g6rOE7JW96rO8IOyEoO2WiSDqsoDspp3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgY29uc3QgcHVyaSA9IHFiIGFzIGFueTtcblxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwibmVcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCIhPVwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI+XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJndGVcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI+PVwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI8XCIsIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJsdGVcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI8PVwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgcHVyaS53aGVyZUluKGZpZWxkLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwibm90SW5cIjpcbiAgICAgICAgcHVyaS53aGVyZU5vdEluKGZpZWxkLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCJsaWtlXCIsIGAlJHt2YWx1ZX0lYCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwic3RhcnRzV2l0aFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcImxpa2VcIiwgYCR7dmFsdWV9JWApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImVuZHNXaXRoXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9YCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaXNOdWxsXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIG51bGwpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImlzTm90TnVsbFwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIiE9XCIsIG51bGwpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImJlZm9yZVwiOlxuICAgICAgICBwdXJpLndoZXJlKGZpZWxkLCBcIjxcIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImFmdGVyXCI6XG4gICAgICAgIHB1cmkud2hlcmUoZmllbGQsIFwiPlwiLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYmV0d2VlblwiOiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gdmFsdWU7XG4gICAgICAgICAgcHVyaS53aGVyZShmaWVsZCwgXCI+PVwiLCBtaW4pLndoZXJlKGZpZWxkLCBcIjw9XCIsIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgb3BlcmF0b3I6ICR7b3BlcmF0b3J9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOykkeyyqSDtlYTrk5wg7IKt7KCcICjrsLDsl7Qg64K0IOqwneyytOuPhCDsspjrpqwpXG4gICAqL1xuICBkZWxldGVGaWVsZChvYmo6IGFueSwgcGFydHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCFvYmogfHwgIWlzT2JqZWN0VmFsdWUob2JqKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgb2JqLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSAmJiBpc09iamVjdFZhbHVlKGl0ZW0pKSB7XG4gICAgICAgICAgICBkZWxldGUgaXRlbVtwYXJ0c1swXV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBvYmpbcGFydHNbMF1dO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBwYXJ0cztcbiAgICBjb25zdCBuZXh0ID0gb2JqW2ZpcnN0XTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgICBuZXh0Lm1hcCgoaXRlbSkgPT4gdGhpcy5kZWxldGVGaWVsZChpdGVtLCByZXN0KSk7XG4gICAgfSBlbHNlIGlmIChuZXh0ICYmIGlzT2JqZWN0VmFsdWUobmV4dCkpIHtcbiAgICAgIHRoaXMuZGVsZXRlRmllbGQobmV4dCwgcmVzdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENPVU5UIOy/vOumrCDsi6TtlokgKOuCtOu2gCDrqZTshJzrk5wpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVDb3VudFF1ZXJ5KFxuICAgIHFiOiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICAgIHBhcmFtczogeyBxdWVyeU1vZGU/OiBcImxpc3RcIiB8IFwiY291bnRcIiB8IFwiYm90aFwiIH0sXG4gICAgZGVidWc6IGJvb2xlYW4sXG4gICAgb3B0aW1pemVDb3VudFF1ZXJ5OiBib29sZWFuLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGlmIChwYXJhbXMucXVlcnlNb2RlID09PSBcImxpc3RcIikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRQdXJpID0gcWIuY2xvbmUoKS5jbGVhcihcIm9yZGVyXCIpLmNsZWFyKFwibGltaXRcIikuY2xlYXIoXCJvZmZzZXRcIik7XG5cbiAgICBpZiAob3B0aW1pemVDb3VudFF1ZXJ5KSB7XG4gICAgICBjb25zdCB7IGRlZmF1bHQ6IFNxbFBhcnNlciB9ID0gYXdhaXQgaW1wb3J0KFwibm9kZS1zcWwtcGFyc2VyXCIpO1xuICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFNxbFBhcnNlci5QYXJzZXIoKTtcbiAgICAgIGNvbnN0IHBhcnNlZFF1ZXJ5ID0gcGFyc2VyLmFzdGlmeShjb3VudFB1cmkudG9RdWVyeSgpLCB7XG4gICAgICAgIGRhdGFiYXNlOiBTb25hbXUuY29uZmlnLmRhdGFiYXNlLmRhdGFiYXNlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxlZnRKb2luVGFibGVzID0gZ2V0Sm9pblRhYmxlcyhwYXJzZWRRdWVyeSwgW1wiTEVGVCBKT0lOXCJdKTtcbiAgICAgIGNvbnN0IHdoZXJlVGFibGVzID0gZ2V0VGFibGVOYW1lc0Zyb21XaGVyZShwYXJzZWRRdWVyeSk7XG5cbiAgICAgIGNvbnN0IHRhYmxlc1RvUmVtb3ZlID0gbGVmdEpvaW5UYWJsZXMuZmlsdGVyKChqKSA9PiAhd2hlcmVUYWJsZXMuaW5jbHVkZXMoaikpO1xuICAgICAgdGFibGVzVG9SZW1vdmUuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgICAgY291bnRQdXJpLmNsZWFySm9pbih0YWJsZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDT1VOVCgqKeuhnCDsoITssrQg66CI7L2U65OcIOyImOulvCDqs4TsgrBcbiAgICAvLyBUT0RPOiBxYuydmCBESVNUSU5DVOqwgCDsnojripQg6rK97JqwIOyymOumrO2VtOyVvCDtlahcbiAgICBjb25zdCBjb3VudFJlc3VsdDogeyB0b3RhbD86IG51bWJlciB9ID0gYXdhaXQgY291bnRQdXJpXG4gICAgICAuY2xlYXIoXCJzZWxlY3RcIilcbiAgICAgIC5zZWxlY3QoeyB0b3RhbDogUHVyaS5yYXdOdW1iZXIoYENPVU5UKCopOjppbnRlZ2VyYCkgfSlcbiAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb3VudFB1cmkuZGVidWcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRSZXN1bHQ/LnRvdGFsID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogTElTVCDsv7zrpqwg7Iuk7ZaJICjrgrTrtoAg66mU7ISc65OcKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlTGlzdFF1ZXJ5PFQgZXh0ZW5kcyBUU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcWI6IFB1cmk8YW55LCBhbnksIGFueT4sXG4gICAgcGFyYW1zOiB7IHF1ZXJ5TW9kZT86IFwibGlzdFwiIHwgXCJjb3VudFwiIHwgXCJib3RoXCIgfSxcbiAgICBudW06IG51bWJlcixcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgZGVidWc6IGJvb2xlYW4sXG4gICAgcHVyaVdyYXBwZXI6IFB1cmlXcmFwcGVyLFxuICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgaWYgKHBhcmFtcy5xdWVyeU1vZGUgPT09IFwiY291bnRcIikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbWl0ZWRRYiA9ICgoKSA9PiB7XG4gICAgICBpZiAobnVtID09PSAwKSB7XG4gICAgICAgIHJldHVybiBxYjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBxYi5saW1pdChudW0pLm9mZnNldChudW0gKiAocGFnZSAtIDEpKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIC8vIOuhnOuNlOuKlCDtj4ntj4ntlZwgcmVmSWQg67OE7Lmt7J2EIOyCrOyaqe2VmOuvgOuhnCDroZzrlKnsnYQg66eI7LmcIOuSpCBoeWRyYXRl7ZWp64uI64ukLlxuICAgIE5haXRlLnQoXCJwdXJpOmV4ZWN1dGVkLXF1ZXJ5XCIsIGxpbWl0ZWRRYi50b1F1ZXJ5KCkpO1xuICAgIGxldCB1bmxvYWRlZFJvd3MgPSBhd2FpdCBsaW1pdGVkUWIucmF3UXVlcnkoKTtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgcWIuZGVidWcoKTtcbiAgICB9XG5cbiAgICAvLyDroZzrjZQg7LKY66asXG4gICAgLy8gU0FGRVRZOiDsv7zrpqwg67mM642U7J2YIOygnOuEpOumrSDqs4Tslb3qs7wg7ISg7ZaJIOqygOymneydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICBjb25zdCBsb2FkZXJzID0gKHRoaXMubG9hZGVyUXVlcmllcyBhcyBhbnkpW3N1YnNldF07XG4gICAgaWYgKGxvYWRlcnMgJiYgQXJyYXkuaXNBcnJheShsb2FkZXJzKSkge1xuICAgICAgdW5sb2FkZWRSb3dzID0gYXdhaXQgdGhpcy5wcm9jZXNzTG9hZGVycyh1bmxvYWRlZFJvd3MsIGxvYWRlcnMsIGRlYnVnLCBwdXJpV3JhcHBlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHlkcmF0ZSh1bmxvYWRlZFJvd3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyerOq3gOyggSDroZzrjZQg7LKY66asXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NMb2FkZXJzKFxuICAgIHJvd3M6IGFueVtdLFxuICAgIGxvYWRlcnM6IGFueVtdLFxuICAgIGRlYnVnOiBib29sZWFuLFxuICAgIHB1cmlXcmFwcGVyOiBQdXJpV3JhcHBlcixcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGZvciAoY29uc3QgcmVzb2x2ZUxvYWRlciBvZiBsb2FkZXJzKSB7XG4gICAgICBjb25zdCB7IGFzLCByZWZJZCwgcWI6IHJlc29sdmVMb2FkZXJRYkZuLCBsb2FkZXJzOiBuZXN0ZWRMb2FkZXJzIH0gPSByZXNvbHZlTG9hZGVyO1xuXG4gICAgICBjb25zdCByZXNvbHZlTG9hZGVyUWIgPSByZXNvbHZlTG9hZGVyUWJGbihcbiAgICAgICAgcHVyaVdyYXBwZXIsXG4gICAgICAgIHJvd3MubWFwKChyb3cpID0+IHJvd1tyZWZJZF0pLFxuICAgICAgKTtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIHJlc29sdmVMb2FkZXJRYi5kZWJ1ZygpO1xuICAgICAgfVxuXG4gICAgICBOYWl0ZS50KFwicHVyaTpleGVjdXRlZC1xdWVyeVwiLCByZXNvbHZlTG9hZGVyUWIudG9RdWVyeSgpKTtcbiAgICAgIC8vIFNBRkVUWTog66Gc642U7J2YIHNlbGVjdCDsv7zrpqzripQg7Y+J7Y+J7ZWcIOugiOy9lOuTnCDrsLDsl7TsnYQg67CY7ZmY7ZWp64uI64ukLlxuICAgICAgbGV0IGxvYWRlZFJvd3MgPSAoYXdhaXQgcmVzb2x2ZUxvYWRlclFiLnJhd1F1ZXJ5KCkpIGFzIGFueVtdO1xuXG4gICAgICAvLyDspJHssqkgbG9hZGVyc+qwgCDsnojsnLzrqbQg7J6s6reAIOyymOumrFxuICAgICAgaWYgKG5lc3RlZExvYWRlcnMgJiYgbmVzdGVkTG9hZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvYWRlZFJvd3MgPSBhd2FpdCB0aGlzLnByb2Nlc3NMb2FkZXJzKGxvYWRlZFJvd3MsIG5lc3RlZExvYWRlcnMsIGRlYnVnLCBwdXJpV3JhcHBlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YlJvd0dyb3VwcyA9IGdyb3VwKGxvYWRlZFJvd3MsIChyb3cpID0+IHJvdy5yZWZJZCk7XG5cbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJvd1thc10gPSAoc3ViUm93R3JvdXBzW3Jvd1tyZWZJZF1dID8/IFtdKS5tYXAoKHIpID0+IG9taXQociwgW1wicmVmSWRcIl0pKTtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXQg66CI7L2U65Oc66W8IOykkeyyqSDqsJ3ssrTroZwg67OA7ZmYXG4gICAqXG4gICAqIC0gYHVzZXJfX25hbWVgIOKGkiBgeyB1c2VyOiB7IG5hbWUgfSB9YFxuICAgKiAtIG51bGxhYmxlIHJlbGF0aW9u7J2YIOqyveyasCBpZCDtlYTrk5zqsIAgbnVsbOydtOuptCDqsJ3ssrQg7J6Q7LK066W8IG51bGzroZxcbiAgICovXG4gIGh5ZHJhdGU8VCBleHRlbmRzIG9iamVjdD4ocm93czogVFtdKTogVFtdIHtcbiAgICAvLyBTQUZFVFk6IOy/vOumrCDruYzrjZTsnZgg7KCc64Sk66atIOqzhOyVveqzvCDshKDtlokg6rKA7Kad7J20IOydtCDtg4DsnoXsnYQg67O07J6l7ZWp64uI64ukLlxuICAgIHJldHVybiByb3dzLm1hcCgocm93OiBUKSA9PiB7XG4gICAgICBjb25zdCByb3dWYWx1ZXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHJvdykpO1xuICAgICAgLy8gbnVsbGFibGUgcmVsYXRpb24g7LKY66asOiDqt7jro7nsnZggaWQg7ZWE65Oc6rCAIG51bGzsnbTrqbQg6rCd7LK0IOyghOyytOulvCBudWxs66GcXG4gICAgICBjb25zdCBuZXN0ZWRLZXlzID0gT2JqZWN0LmtleXMocm93KS5maWx0ZXIoKGtleSkgPT4ga2V5LmluY2x1ZGVzKFwiX19cIikpO1xuICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0Lmdyb3VwQnkobmVzdGVkS2V5cywgKGtleSkgPT4ga2V5LnNwbGl0KFwiX19cIilbMF0pO1xuXG4gICAgICAvLyBpZCDtlYTrk5zqsIAgbnVsbOyduCDqt7jro7kg7LC+6riwICjsmIg6IHBhcmVudF9faWTqsIAgbnVsbOydtOuptCBwYXJlbnQg6re466O5IOyghOyytOqwgCBudWxsKVxuICAgICAgY29uc3QgbnVsbEtleXMgPSBPYmplY3QuZW50cmllcyhncm91cHMpXG4gICAgICAgIC5maWx0ZXIoKFtncm91cEtleSwgZmllbGRzXSkgPT4ge1xuICAgICAgICAgIGlmICghZmllbGRzIHx8IGZpZWxkcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgIC8vIOq3uOujueydmCBpZCDtlYTrk5wg7LC+6riwICjsmIg6IFwicGFyZW50X19pZFwiKVxuICAgICAgICAgIGNvbnN0IGlkRmllbGQgPSBgJHtncm91cEtleX1fX2lkYDtcbiAgICAgICAgICBpZiAoaWRGaWVsZCBpbiByb3cpIHtcbiAgICAgICAgICAgIC8vIGlkIO2VhOuTnOqwgCBudWxs7J2066m0IOqwneyytCDsoITssrTqsIAgbnVsbFxuICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlcy5nZXQoaWRGaWVsZCkgPT09IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWQg7ZWE65Oc6rCAIOyXhuycvOuptCDquLDsobQg66Gc7KeBOiDrqqjrk6Ag7ZWE65Oc6rCAIG51bGzsnbjsp4Ag7ZmV7J24XG4gICAgICAgICAgcmV0dXJuIGZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByb3dWYWx1ZXMuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlID09PSBudWxsIHx8IChBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpICYmIGZpZWxkVmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoW2tleV0pID0+IGtleSk7XG5cbiAgICAgIGxldCBoeWRyYXRlZDogRGF0YWJhc2VSZWNvcmQgPSBPYmplY3QuZnJvbUVudHJpZXMoW10pO1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhyb3cpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByb3dWYWx1ZXMuZ2V0KGZpZWxkKTtcbiAgICAgICAgaWYgKCFmaWVsZC5pbmNsdWRlcyhcIl9fXCIpKSB7XG4gICAgICAgICAgY29uc3QgaHlkcmF0ZWRWYWx1ZSA9XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpICYmIGlzT2JqZWN0KGZpZWxkVmFsdWVbMF0pXG4gICAgICAgICAgICAgID8gdGhpcy5oeWRyYXRlKGZpZWxkVmFsdWUpXG4gICAgICAgICAgICAgIDogZmllbGRWYWx1ZTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGh5ZHJhdGVkLCB7IFtmaWVsZF06IGh5ZHJhdGVkVmFsdWUgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDspJHssqkg7ZWE65OcIOyymOumrDogdXNlcl9fbmFtZSDihpIgdXNlcltuYW1lXVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGZpZWxkLnNwbGl0KFwiX19cIik7XG4gICAgICAgIGNvbnN0IG9ialBhdGggPVxuICAgICAgICAgIHBhcnRzWzBdICtcbiAgICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgLnNsaWNlKDEpXG4gICAgICAgICAgICAubWFwKChwYXJ0KSA9PiBgWyR7cGFydH1dYClcbiAgICAgICAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgICAgIGh5ZHJhdGVkID0gc2V0KFxuICAgICAgICAgIGh5ZHJhdGVkLFxuICAgICAgICAgIG9ialBhdGgsXG4gICAgICAgICAgZmllbGRWYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpICYmIGlzT2JqZWN0KGZpZWxkVmFsdWVbMF0pXG4gICAgICAgICAgICA/IHRoaXMuaHlkcmF0ZShmaWVsZFZhbHVlKVxuICAgICAgICAgICAgOiBmaWVsZFZhbHVlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBudWxsIHJlbGF0aW9uIOyymOumrFxuICAgICAgbnVsbEtleXMuZm9yRWFjaCgobnVsbEtleSkgPT4ge1xuICAgICAgICBPYmplY3QuYXNzaWduKGh5ZHJhdGVkLCB7IFtudWxsS2V5XTogbnVsbCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaHlkcmF0ZWQ7XG4gICAgfSkgYXMgVFtdO1xuICB9XG59XG5cbi8qKlxuICogRW5oYW5jZXIg7YyM652866+47YSwIOyhsOqxtOu2gCDtg4DsnoVcbiAqIFJlcXVpcmVkRW5oYW5jZXJLZXlz6rCAIOyXhuycvOuptCBlbmhhbmNlcnMg7ISg7YOd7KCBLCDsnojsnLzrqbQg7ZWE7IiYXG4gKi9cbnR5cGUgRW5oYW5jZXJQYXJhbTxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIHsgW0sgaW4gVFN1YnNldEtleV06IFRDb21wdXRlZFJlc3VsdHNbS10gfSxcbiAgVFN1YnNldE1hcHBpbmcgZXh0ZW5kcyB7IFtLIGluIFRTdWJzZXRLZXldOiBUU3Vic2V0TWFwcGluZ1tLXSB9LFxuICBUU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxUU3Vic2V0S2V5LCBQdXJpU3Vic2V0Rm4+LFxuPiA9IFtSZXF1aXJlZEVuaGFuY2VyS2V5czxUU3Vic2V0S2V5LCBUQ29tcHV0ZWRSZXN1bHRzLCBUU3Vic2V0TWFwcGluZz5dIGV4dGVuZHMgW25ldmVyXVxuICA/IHsgZW5oYW5jZXJzPzogRW5oYW5jZXJNYXA8VFN1YnNldEtleSwgVENvbXB1dGVkUmVzdWx0cywgVFN1YnNldE1hcHBpbmcsIFRTdWJzZXRRdWVyaWVzPiB9XG4gIDogeyBlbmhhbmNlcnM6IEVuaGFuY2VyTWFwPFRTdWJzZXRLZXksIFRDb21wdXRlZFJlc3VsdHMsIFRTdWJzZXRNYXBwaW5nLCBUU3Vic2V0UXVlcmllcz4gfTtcblxudHlwZSBSZXF1aXJlZEVuaGFuY2VyS2V5czxcbiAgVFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgVENvbXB1dGVkUmVzdWx0cyBleHRlbmRzIHsgW0sgaW4gVFN1YnNldEtleV06IFRDb21wdXRlZFJlc3VsdHNbS10gfSxcbiAgVFN1YnNldE1hcHBpbmcgZXh0ZW5kcyB7IFtLIGluIFRTdWJzZXRLZXldOiBUU3Vic2V0TWFwcGluZ1tLXSB9LFxuPiA9IHtcbiAgW0sgaW4gVFN1YnNldEtleV06IFRDb21wdXRlZFJlc3VsdHNbS10gZXh0ZW5kcyBUU3Vic2V0TWFwcGluZ1tLXSA/IG5ldmVyIDogSztcbn1bVFN1YnNldEtleV07XG5cbmV4cG9ydCBjb25zdCBCYXNlTW9kZWwgPSBuZXcgQmFzZU1vZGVsQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBTXNDLFlBQUE7Q0FDa0Isb0JBQUE7Q0FFcUIsV0FBQTtDQUNqQixjQUFBO0NBQ3RCLFdBQUE7Q0FHZ0IsbUJBQUE7Q0FDcUIsZ0JBQUE7Q0FHbEQsUUFBQTtDQUNJLFVBQUE7Q0FNZSxrQkFBQTtDQUVJLG9CQUFBO0NBdUJuQyxpQkFBYixNQUtFO0VBSWtCO0VBQ047RUFDQTtFQUxaO0VBRUEsWUFDRSxZQUFvQyxLQUFLLFlBQVksTUFDckQsZUFDQSxlQUNBO0dBSGdCLEtBQUEsWUFBQTtHQUNOLEtBQUEsZ0JBQUE7R0FDQSxLQUFBLGdCQUFBO0dBRVYsS0FBSyxTQUFTLFVBQVUsd0JBQXdCLEtBQUssV0FBVyxPQUFPLENBQUM7RUFDMUU7RUFFQSxNQUFNLE9BQXVCO0dBQzNCLE9BQU8sR0FBRyxNQUFNLEtBQUs7RUFDdkI7RUFFQSxRQUFRLE9BQThCO0dBRXBDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsZUFBZSxLQUFLO0dBQzNELElBQUksS0FDRixPQUFPO0dBSVQsTUFB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
|
package/dist/database/puri.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare class Puri<TSchema, TTables extends object, TResult> {
|
|
|
21
21
|
knex: Knex;
|
|
22
22
|
private knexQuery;
|
|
23
23
|
private tableSpec;
|
|
24
|
+
private nestedSelectPaths;
|
|
25
|
+
private nestedSelectIdentitySources;
|
|
24
26
|
private correlationRegistry;
|
|
25
27
|
constructor(knex: Knex, tableName: string);
|
|
26
28
|
constructor(knex: Knex, tableSource: Record<string, string | Puri<TSchema, any, any>>);
|
|
@@ -229,9 +231,11 @@ export declare class Puri<TSchema, TTables extends object, TResult> {
|
|
|
229
231
|
groupBy<TColumns extends ResultAvailableColumns<TTables, TResult>>(...columns: TColumns[]): this;
|
|
230
232
|
having(condition: string): this;
|
|
231
233
|
having<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn, operator: ComparisonOperator, value: any): this;
|
|
234
|
+
private executeSelect;
|
|
235
|
+
private canSelectRelationPresence;
|
|
232
236
|
then<TResult1 = Expand<TResult>[], TResult2 = never>(onfulfilled?: ((value: Expand<TResult>[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
233
|
-
catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult | TResult2>;
|
|
234
|
-
finally(onfinally?: (() => void) | null): Promise<TResult>;
|
|
237
|
+
catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult>[] | TResult2>;
|
|
238
|
+
finally(onfinally?: (() => void) | null): Promise<Expand<TResult>[]>;
|
|
235
239
|
first(): ResolvedPuri<Expand<TResult>, never>;
|
|
236
240
|
pluck<TColumn extends keyof TResult | ResultAvailableColumns<TTables, TResult>>(column: TColumn): ResolvedPuri<TColumn extends keyof TResult ? TResult[TColumn][] : ExtractColumnType<TTables, TColumn & string>[], never>;
|
|
237
241
|
insert(data: InsertData<SingleTableValue<TTables>>): ResolvedPuri<InsertResult, SingleTableValue<TTables>>;
|
|
@@ -329,7 +333,8 @@ export declare class ResolvedPuri<TResolved, TReturning> implements Promise<TRes
|
|
|
329
333
|
knexQuery: Knex.QueryBuilder;
|
|
330
334
|
private knex;
|
|
331
335
|
private tableSpec;
|
|
332
|
-
|
|
336
|
+
private resolveResult?;
|
|
337
|
+
constructor(knexQuery: Knex.QueryBuilder, knex: Knex, tableSpec?: TableSpec | null, resolveResult?: (() => Promise<TResolved>) | undefined);
|
|
333
338
|
[Symbol.toStringTag]: string;
|
|
334
339
|
toQuery(): string;
|
|
335
340
|
debug(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
|