@po-ui/ng-templates 16.4.0 → 16.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +4 -4
- package/fesm2022/po-ui-ng-templates.mjs +3 -3
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/package.json +4 -4
- package/po-ui-ng-templates-16.5.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/po-ui-ng-templates-16.4.0.tgz +0 -0
|
@@ -1087,7 +1087,7 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent
|
|
|
1087
1087
|
this.tableActions = newTableActions;
|
|
1088
1088
|
}
|
|
1089
1089
|
static ɵfac = function PoPageDynamicTableComponent_Factory(t) { return new (t || PoPageDynamicTableComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoDialogService), i0.ɵɵdirectiveInject(i2.PoNotificationService), i0.ɵɵdirectiveInject(i3.PoPageDynamicService), i0.ɵɵdirectiveInject(i4.PoPageCustomizationService), i0.ɵɵdirectiveInject(i5.PoPageDynamicTableActionsService), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
|
|
1090
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageDynamicTableComponent, selectors: [["po-page-dynamic-table"]], inputs: { onLoad: ["p-load", "onLoad"], keepFilters: ["p-keep-filters", "keepFilters", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], concatFilters: ["p-concat-filters", "concatFilters", convertToBoolean], hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideRemoveAllDisclaimer: ["p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], actions: ["p-actions", "actions"], pageCustomActions: ["p-page-custom-actions", "pageCustomActions"], tableCustomActions: ["p-table-custom-actions", "tableCustomActions"], quickSearchWidth: ["p-quick-search-width", "quickSearchWidth"], height: ["p-height", "height"], hideCloseDisclaimers: ["p-hide-close-disclaimers", "hideCloseDisclaimers"], quickSearchParam: ["p-quick-search-param", "quickSearchParam"], quickSearchValue: ["p-quick-search-value", "quickSearchValue"], searchLiterals: ["p-literals", "searchLiterals"], draggable: ["p-draggable", "draggable"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature], decls: 2, vars:
|
|
1090
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageDynamicTableComponent, selectors: [["po-page-dynamic-table"]], inputs: { onLoad: ["p-load", "onLoad"], keepFilters: ["p-keep-filters", "keepFilters", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], concatFilters: ["p-concat-filters", "concatFilters", convertToBoolean], hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideRemoveAllDisclaimer: ["p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], actions: ["p-actions", "actions"], pageCustomActions: ["p-page-custom-actions", "pageCustomActions"], tableCustomActions: ["p-table-custom-actions", "tableCustomActions"], quickSearchWidth: ["p-quick-search-width", "quickSearchWidth"], height: ["p-height", "height"], hideCloseDisclaimers: ["p-hide-close-disclaimers", "hideCloseDisclaimers"], quickSearchParam: ["p-quick-search-param", "quickSearchParam"], quickSearchValue: ["p-quick-search-value", "quickSearchValue"], searchLiterals: ["p-literals", "searchLiterals"], draggable: ["p-draggable", "draggable"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 22, consts: [[3, "p-actions", "p-breadcrumb", "p-hide-close-disclaimers", "p-filters", "p-keep-filters", "p-literals", "p-concat-filters", "p-hide-remove-all-disclaimer", "p-quick-search-width", "p-title", "p-quick-search-value", "p-advanced-search", "p-change-disclaimers", "p-quick-search"], [3, "p-sort", "p-actions", "p-actions-right", "p-selectable", "p-columns", "p-items", "p-height", "p-hide-columns-manager", "p-infinite-scroll", "p-show-more-disabled", "p-draggable", "p-show-more", "p-sort-by", "p-change-visible-columns", "p-restore-column-manager"]], template: function PoPageDynamicTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1091
1091
|
i0.ɵɵelementStart(0, "po-page-dynamic-search", 0);
|
|
1092
1092
|
i0.ɵɵlistener("p-advanced-search", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_advanced_search_0_listener($event) { return ctx.onAdvancedSearch($event); })("p-change-disclaimers", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_change_disclaimers_0_listener($event) { return ctx.onChangeDisclaimers($event); })("p-quick-search", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_quick_search_0_listener($event) { return ctx.onQuickSearch($event); });
|
|
1093
1093
|
i0.ɵɵelementStart(1, "po-table", 1);
|
|
@@ -1096,12 +1096,12 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent
|
|
|
1096
1096
|
} if (rf & 2) {
|
|
1097
1097
|
i0.ɵɵproperty("p-actions", ctx.pageActions)("p-breadcrumb", ctx.breadcrumb)("p-hide-close-disclaimers", ctx.hideCloseDisclaimers)("p-filters", ctx.filters)("p-keep-filters", ctx.keepFilters)("p-literals", ctx.searchLiterals)("p-concat-filters", ctx.concatFilters)("p-hide-remove-all-disclaimer", ctx.hideRemoveAllDisclaimer)("p-quick-search-width", ctx.quickSearchWidth)("p-title", ctx.title)("p-quick-search-value", ctx.quickSearchValue || "");
|
|
1098
1098
|
i0.ɵɵadvance(1);
|
|
1099
|
-
i0.ɵɵproperty("p-sort", true)("p-
|
|
1099
|
+
i0.ɵɵproperty("p-sort", true)("p-actions", ctx.tableActions)("p-actions-right", ctx.actionRight)("p-selectable", ctx.enableSelectionTable)("p-columns", ctx.columns)("p-items", ctx.items)("p-height", ctx.height)("p-hide-columns-manager", ctx.hideColumnsManager)("p-infinite-scroll", ctx.infiniteScroll)("p-show-more-disabled", !ctx.hasNext)("p-draggable", ctx.draggable);
|
|
1100
1100
|
} }, dependencies: [i2.PoTableComponent, i6.PoPageDynamicSearchComponent], encapsulation: 2 });
|
|
1101
1101
|
}
|
|
1102
1102
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageDynamicTableComponent, [{
|
|
1103
1103
|
type: Component,
|
|
1104
|
-
args: [{ selector: 'po-page-dynamic-table', providers: [PoPageDynamicService], template: "<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-
|
|
1104
|
+
args: [{ selector: 'po-page-dynamic-table', providers: [PoPageDynamicService], template: "<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-actions]=\"tableActions\"\n [p-actions-right]=\"actionRight\"\n [p-selectable]=\"enableSelectionTable\"\n [p-columns]=\"columns\"\n [p-items]=\"items\"\n [p-height]=\"height\"\n [p-hide-columns-manager]=\"hideColumnsManager\"\n [p-infinite-scroll]=\"infiniteScroll\"\n [p-show-more-disabled]=\"!hasNext\"\n (p-show-more)=\"showMore()\"\n (p-sort-by)=\"onSort($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-restore-column-manager)=\"onColumnRestoreManager($event)\"\n (p-sort-by)=\"onSortBy($event)\"\n [p-draggable]=\"draggable\"\n >\n </po-table>\n</po-page-dynamic-search>\n" }]
|
|
1105
1105
|
}], function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.PoDialogService }, { type: i2.PoNotificationService }, { type: i3.PoPageDynamicService }, { type: i4.PoPageCustomizationService }, { type: i5.PoPageDynamicTableActionsService }, { type: i2.PoLanguageService }]; }, { onLoad: [{
|
|
1106
1106
|
type: Input,
|
|
1107
1107
|
args: ['p-load']
|
|
@@ -1154,4 +1154,4 @@ export class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent
|
|
|
1154
1154
|
type: Input,
|
|
1155
1155
|
args: ['p-draggable']
|
|
1156
1156
|
}] }); })();
|
|
1157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1keW5hbWljLXRhYmxlL3BvLXBhZ2UtZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS9wby1wYWdlLWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBUUwscUJBQXFCLEVBQ3JCLGVBQWUsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWV0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FB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bml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBQb0RpYWxvZ0NvbmZpcm1PcHRpb25zLFxuICBQb0RpYWxvZ1NlcnZpY2UsXG4gIFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFBvUGFnZUFjdGlvbixcbiAgUG9UYWJsZUFjdGlvbixcbiAgUG9UYWJsZUNvbHVtblNvcnQsXG4gIFBvVGFibGVDb2x1bW5Tb3J0VHlwZSxcbiAgcG9Mb2NhbGVEZWZhdWx0XG59IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0RldGFpbENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBhZ2UtZHluYW1pYy1kZXRhaWwvcG8tcGFnZS1keW5hbWljLWRldGFpbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtZHluYW1pYy9wby1wYWdlLWR5bmFtaWMuc2VydmljZSc7XG5pbXBvcnQgeyBpc0V4dGVybmFsTGluaywgb3BlbkV4dGVybmFsTGluaywgcmVtb3ZlRHVwbGljYXRlSXRlbXNXaXRoQXJyYXlLZXkgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscyB9IGZyb20gJy4uL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtY3VzdG9taXphdGlvbi9wby1wYWdlLWN1c3RvbWl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljT3B0aW9uc1NjaGVtYSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtZHluYW1pYy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1hY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVEZXRhaWwgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLWJlZm9yZS1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUR1cGxpY2F0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLWR1cGxpY2F0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRWRpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLWVkaXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZU5ldyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLW5ldy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlUmVtb3ZlQWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1iZWZvcmUtcmVtb3ZlLWFsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlUmVtb3ZlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1iZWZvcmUtcmVtb3ZlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLWN1c3RvbS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbVRhYmxlQWN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1jdXN0b20tdGFibGUtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVNZXRhRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNMaXN0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLWxpc3QtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgcG9QYWdlRHluYW1pY1RhYmxlTGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtdGFibGUtbGl0ZXJhbHMnO1xuXG5jb25zdCBQQUdFX1NJWkVfREVGQVVMVCA9IDEwO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyk7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvUGFnZUR5bmFtaWNMaXN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLXBhZ2UtZHluYW1pYy10YWJsZWAgw6kgdW1hIHDDoWdpbmEgcXVlIGV4aWJlIHVtYSBsaXN0YSBkZSByZWdpc3Ryb3MgZW0gdW1hIHRhYmVsYSBiYXNlYWRvIGVtIHVtYSBsaXN0YSBkZSBmaWVsZHMsXG4gKiBvIG1lc21vIHRhbWLDqW0gc3Vwb3J0YSBtZXRhZGFkb3MgY29uZm9ybWUgZXNwZWNpZmljYWRvIG5hIGRvY3VtZW50YcOnw6NvLlxuICpcbiAqICMjIyBVdGlsaXphw6fDo28gdmlhIHJvdGFcbiAqXG4gKiBBbyB1dGlsaXphciBhcyByb3RhcyBwYXJhIGNhcnJlZ2FyIG8gdGVtcGxhdGUsIG8gYHBhZ2UtZHluYW1pYy10YWJsZWAgZGlzcG9uaWJpbGl6YSBwcm9wcmllZGFkZXMgcGFyYVxuICogcG9kZXIgZXNwZWNpZmljYXIgbyBlbmRwb2ludCBkb3MgZGFkb3MgZSBkb3MgbWV0YWRhZG9zLiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAqXG4gKiBPIGNvbXBvbmVudGUgcHJpbWVpcm8gaXLDoSBjYXJyZWdhciBvIG1ldGFkYWRvIGRhIHJvdGEgZGVmaW5pZGEgbmEgcHJvcHJpZWRhZGUgc2VydmljZU1ldGFkYXRhQXBpXG4gKiBlIGRlcG9pcyBpcsOhIGJ1c2NhciBkYSByb3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHNlcnZpY2VMb2FkQXBpXG4gKlxuICogPiBDYXNvIG8gc2Vydmlkb3IgcmV0b3JuYXIgdW0gZXJybyBhbyByZWN1cGVyYXIgbyBtZXRhZGFkb3MsIHNlcsOhIHJlcGFzc2FkbyBvIG1ldGFkYWRvcyBzYWx2byBlbSBjYWNoZSxcbiAqIHNlIG8gY2FjaGUgbsOjbyBleGlzdGUgc2Vyw6EgZGlzcGFyYWRvIHVtYSBub3RpZmljYcOnw6NvLlxuICpcbiAqIGBgYFxuICoge1xuICogICBwYXRoOiAncGVvcGxlJyxcbiAqICAgY29tcG9uZW50OiBQb1BhZ2VEeW5hbWljVGFibGVDb21wb25lbnQsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzZXJ2aWNlQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3Blb3BsZScsIC8vIGVuZHBvaW50IGRvcyBkYWRvc1xuICogICAgIHNlcnZpY2VNZXRhZGF0YUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9tZXRhZGF0YScsIC8vIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBHZXRcbiAqICAgICBzZXJ2aWNlTG9hZEFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9sb2FkLW1ldGFkYXRhJyAvLyBlbmRwb2ludCBkZSBjdXN0b21pemHDp8O1ZXMgZG9zIG1ldGFkYWRvcyB1dGlsaXphbmRvIG8gbcOpdG9kbyBIVFRQIFBvc3RcbiAqICAgfVxuICogfVxuICpcbiAqIGBgYFxuICpcbiAqIEEgcmVxdWlzacOnw6NvIGRvcyBtZXRhZGFkb3Mgw6kgZmVpdGEgbmEgaW5pY2lhbGl6YcOnw6NvIGRvIHRlbXBsYXRlIHBhcmEgYnVzY2FyIG9zIG1ldGFkYWRvcyBkYSBww6FnaW5hIHBhc3NhbmRvIG9cbiAqIHRpcG8gZG8gbWV0YWRhZG8gZXNwZXJhZG8gZSBhIHZlcnPDo28gY2FjaGVhZGEgcGVsbyBicm93c2VyLlxuICpcbiAqIE8gZm9ybWF0byBlc3BlcmFkbyBuYSByZXNwb3N0YSBkYSByZXF1aXNpw6fDo28gZXN0w6EgZXNwZWNpZmljYWRvIG5hIGludGVyZmFjZVxuICogW1BvUGFnZUR5bmFtaWNUYWJsZU1ldGFkYXRhXSgvZG9jdW1lbnRhdGlvbi9wby1wYWdlLWR5bmFtaWMtdGFibGUjcG8tcGFnZS1keW5hbWljLXRhYmxlLW1ldGFkYXRhKS4gUG9yIGV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiAge1xuICogICB2ZXJzaW9uOiAxLFxuICogICB0aXRsZTogJ1BlcnNvbiBUYWJsZScsXG4gKiAgIGZpZWxkczogW1xuICogICAgIHsgcHJvcGVydHk6ICdpZCcsIGtleTogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnc3RhdHVzJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICduYW1lJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICduaWNrbmFtZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnYmlydGhkYXRlJywgbGFiZWw6ICdCaXJ0aCBkYXRlJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICdnZW5yZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnY2l0eScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnY291bnRyeScgfVxuICogICBdLFxuICogICBrZWVwRmlsdGVyczogdHJ1ZVxuICogfVxuICogYGBgXG4gKlxuICogPiBDYXNvIG8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvcyBuw6NvIHNlamEgZXNwZWNpZmljYWRvLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIHV0aWxpemFuZG8gbyBgc2VydmljZUFwaWAgZGEgc2VndWludGUgZm9ybWE6XG4gKiBgYGBcbiAqIEdFVCB7ZW5kLXBvaW50fS9tZXRhZGF0YT90eXBlPWxpc3QmdmVyc2lvbj17dmVyc2lvbn1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gUGFnZSBEeW5hbWljIFRhYmxlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtdGFibGUtcGVvcGxlXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgVGFibGUgLSBQZW9wbGVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1wZW9wbGUvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1wZW9wbGUuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXBlb3BsZS9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXBlb3BsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBUYWJsZSAtIFVzZXJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS11c2Vycy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS11c2Vycy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXVzZXJzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1ob3RlbHNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBUYWJsZSAtIEhvdGVsc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWhvdGVscy9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWhvdGVscy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtaG90ZWxzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtaG90ZWxzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1kcmFnLWFuZC1kcm9wXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgVGFibGUgLSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtZHJhZy1hbmQtZHJvcC9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWRyYWctYW5kLWRyb3AuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWRyYWctYW5kLWRyb3Avc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1kcmFnLWFuZC1kcm9wLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXBhZ2UtZHluYW1pYy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb1BhZ2VEeW5hbWljU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUG9QYWdlRHluYW1pY1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgUG9QYWdlRHluYW1pY0xpc3RCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRnVuw6fDo28gb3Ugc2VydmnDp28gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBzdHJpbmdgOiAqRW5kcG9pbnQqIHVzYWRvIHBlbG8gY29tcG9uZW50ZSBwYXJhIHJlcXVpc2nDp8OjbyB2aWEgYFBPU1RgLlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogTyByZXRvcm5vIGRlc3RhIGZ1bsOnw6NvIGRldmUgc2VyIGRvIHRpcG8gYFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnNgLFxuICAgKiBvbmRlIG8gdXN1w6FyaW8gcG9kZXLDoSBjdXN0b21pemFyIG5vdm9zIGNhbXBvcywgYnJlYWRjcnVtYiwgdGl0bGUgZSBhY3Rpb25zXG4gICAqXG4gICAqIFBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogZ2V0UGFnZU9wdGlvbnMoKTogUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczpcbiAgICogICAgIHsgbmV3OiAnbmV3JywgZWRpdDogJ2VkaXQvOmlkJywgcmVtb3ZlOiB0cnVlIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljVGFibGVPcHRpb25zKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW50w6ltIG5hIG1vZGFsIGRlIGBCdXNjYSBBdmFuw6dhZGFgIG9zIHZhbG9yZXMgcHJlZW5jaGlkb3MgZG8gw7psdGltbyBmaWx0cm8gcmVhbGl6YWRvIHBlbG8gdXN1w6FyaW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1rZWVwLWZpbHRlcnMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkga2VlcEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgY29sdW5hIGRlIGHDp8O1ZXMgZmljYXLDoSBubyBsYWRvIGRpcmVpdG8gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYWN0aW9ucy1yaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhY3Rpb25SaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSB1dGlsaXphw6fDo28gZGEgcGVzcXVpc2EgcsOhcGlkYSBqdW50byBjb20gYSBwZXNxdWlzYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqIERlc3RhIGZvcm1hLCBhbyB0ZXIgdW1hIHBlc3F1aXNhIGF2YW7Dp2FkYSBlc3RhYmVsZWNpZGEgZSBzZXJcbiAgICogcHJlZW5jaGlkbyBhIHBlc3F1aXNhIHLDoXBpZGEsIG8gZmlsdHJvIHNlcsOhIGNvbmNhdGVuYWRvIGFkaWNpb25hbmRvIGEgcGVzcXVpc2FcbiAgICogcsOhcGlkYSB0YW1iw6ltIG5hIGxpc3RhIGRlIGBkaXNjbGFpbWVyc2AgYSBhcGxpY2FuZG8gdW1hIG5vdmEgYnVzY2EgY29tIGEgY29uY2F0ZW5hw6fDo28uXG4gICAqXG4gICAqIFBvciBleGVtcGxvLCBjb20gb3Mgc2VndWludGVzIGZpbHRyb3MgYXBsaWNhZG9zOlxuICAgKiAgIC0gZmlsdHJvIGF2YW7Dp2FkbzogYHsgbmFtZTogJ01pa2UnLCBhZ2U6ICcxMicgfWBcbiAgICogICAtIGZpbHRybyByw6FwaWRvOiBgeyBzZWFyY2g6ICdwYXBlcicgfWBcbiAgICpcbiAgICogQSByZXF1aXNpw6fDo28gZG9zIGRhZG9zIG5hIEFQSSBmaWNhcsOhIGNvbSBvcyBwYXLDom1ldHJvczpcbiAgICogYGBgXG4gICAqIHBhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPU1pa2UmYWdlPTEyJnNlYXJjaD1wYXBlclxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNvbmNhdC1maWx0ZXJzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNvbmNhdEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMsIHJlc3BvbnPDoXZlbCBwZWxhIGRlZmluacOnw6NvIGRlIHF1YWlzIGNvbHVuYXMgc2Vyw6NvIGV4aWJpZGFzLCBzZWphIGVzY29uZGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtY29sdW1ucy1tYW5hZ2VyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pXG4gIGhpZGVDb2x1bW5zTWFuYWdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9jdWx0YSBvIGJvdMOjbyBwYXJhIHJlbW92ZXIgdG9kb3Mgb3MgKmRpc2NsYWltZXJzKiBkbyBncnVwby5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbywgbyBtZXNtbyDDqSBleGliaWRvIMOgIHBhcnRpciBkZSBkb2lzIG91IG1haXMgKmRpc2NsYWltZXJzKiBjb20gYSBvcMOnw6NvIGBoaWRlQ2xvc2VgIGhhYmlsaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXJlbW92ZS1hbGwtZGlzY2xhaW1lcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZSBvIGJvdMOjbyBcIkNhcnJlZ2FyIE1haXNcIiBkZWl4YXLDoSBkZSBzZXIgZXhpYmlkby4gQW8gY2hlZ2FyIG5vIGZpbSBkYSB0YWJlbGFcbiAgICogZXhlY3V0YXLDoSBhIGZ1bsOnw6NvIGBwLXNob3ctbW9yZWAuXG4gICAqXG4gICAqICoqUmVncmFzIGRlIHV0aWxpemHDp8OjbzoqKlxuICAgKiAgLSBPIHNjcm9sbCBpbmZpbml0byBzw7MgZnVuY2lvbmEgcGFyYSB0YWJlbGFzIHF1ZSB1dGlsaXphbSBhIHByb3ByaWVkYWRlIGBwLWhlaWdodGAgZSBxdWUgcG9zc3VlbSBvIHNjcm9sbCBqw6EgbmEgY2FyZ2EgaW5pY2lhbCBkb3MgZGFkb3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBoYXNOZXh0ID0gZmFsc2U7XG4gIGl0ZW1zID0gW107XG4gIGxpdGVyYWxzO1xuICBwYWdlQWN0aW9uczogQXJyYXk8UG9QYWdlQWN0aW9uPiA9IFtdO1xuICB0YWJsZUFjdGlvbnM6IEFycmF5PFBvVGFibGVBY3Rpb24+ID0gW107XG5cbiAgcHJpdmF0ZSBfYWN0aW9uczogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucyA9IHt9O1xuICBwcml2YXRlIF9wYWdlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tQWN0aW9uPiA9IFtdO1xuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfb2xkUXVpY2tTZWFyY2hQYXJhbTogc3RyaW5nO1xuICBwcml2YXRlIF9xdWlja1NlYXJjaFBhcmFtOiBzdHJpbmcgPSAnc2VhcmNoJztcbiAgcHJpdmF0ZSBfcXVpY2tTZWFyY2hWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF9xdWlja1NlYXJjaFdpZHRoOiBudW1iZXI7XG4gIHByaXZhdGUgX3RhYmxlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tVGFibGVBY3Rpb24+ID0gW107XG5cbiAgcHJpdmF0ZSBwYWdlOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIGl0ZW1TZWxlY3RlZEFjdGlvbjtcbiAgcHJpdmF0ZSBwYXJhbXMgPSB7fTtcbiAgcHJpdmF0ZSBzb3J0ZWRDb2x1bW46IFBvVGFibGVDb2x1bW5Tb3J0O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgaGFzQ3VzdG9tQWN0aW9uV2l0aFNlbGVjdGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jdXN0b21QYWdlTGlzdEFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfY3VzdG9tVGFibGVBY3Rpb25zOiBBcnJheTxQb1RhYmxlQWN0aW9uPiA9IFtdO1xuICBwcml2YXRlIF9kZWZhdWx0UGFnZUFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfZGVmYXVsdFRhYmxlQWN0aW9uczogQXJyYXk8UG9UYWJsZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfaGlkZUNsb3NlRGlzY2xhaW1lcnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzZXQgZGVmYXVsdFBhZ2VBY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VBY3Rpb24+KSB7XG4gICAgdGhpcy5fZGVmYXVsdFBhZ2VBY3Rpb25zID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVQYWdlQWN0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZGVmYXVsdFRhYmxlQWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl9kZWZhdWx0VGFibGVBY3Rpb25zID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVUYWJsZUFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGN1c3RvbVBhZ2VMaXN0QWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9QYWdlQWN0aW9uPikge1xuICAgIHRoaXMuX2N1c3RvbVBhZ2VMaXN0QWN0aW9ucyA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlUGFnZUFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGN1c3RvbVRhYmxlQWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl9jdXN0b21UYWJsZUFjdGlvbnMgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlQWN0aW9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQcOnw7VlcyBkYSBww6FnaW5hIGUgZGEgdGFiZWxhLlxuICAgKiA+IENhc28gdXRpbGl6YXIgYSBhw6fDo28gcGFkcsOjbyBkZSBleGNsdWlyLCBhIG1lc21hIHNlcsOhIGV4aWJpZGEgcG9yIMO6bHRpbW8gbmEgdGFiZWxhLlxuICAgKi9cbiAgQElucHV0KCdwLWFjdGlvbnMnKSBzZXQgYWN0aW9ucyh2YWx1ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucykge1xuICAgIHRoaXMuX2FjdGlvbnMgPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAwID8gdmFsdWUgOiB7fTtcblxuICAgIHRoaXMuc2V0UGFnZUFjdGlvbnModGhpcy5hY3Rpb25zKTtcbiAgICB0aGlzLnNldFJlbW92ZUFsbEFjdGlvbigpO1xuICAgIHRoaXMuc2V0VGFibGVBY3Rpb25zKHRoaXMuYWN0aW9ucyk7XG4gIH1cblxuICBnZXQgYWN0aW9ucygpOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGHDp8O1ZXMgY3VzdG9taXphZGFzIGRhIHDDoWdpbmEgcXVlIHNlcsOjbyBpbmNvcnBvcmFkYXMgw6BzIGHDp8O1ZXNcbiAgICogaW5mb3JtYWRhcyBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBgcC1hY3Rpb25zYC5cbiAgICpcbiAgICogRXNzYXMgYcOnw7VlcyBmaWNhbSBsb2NhbGl6YWRhcyBuYSBwYXJ0ZSBzdXBlcmlvciBkYSBww6FnaW5hIGVtIGJvdMO1ZXMgY29tIGHDp8O1ZXMuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgdXRpbGl6YcOnw6NvOlxuICAgKiBgYGBcbiAgICogW1xuICAgKiAgeyBsYWJlbDogJ0V4cG9ydCcsIGFjdGlvbjogdGhpcy5leHBvcnQuYmluZCh0aGlzKSB9LFxuICAgKiAgeyBsYWJlbDogJ1ByaW50JywgYWN0aW9uOiB0aGlzLnByaW50LmJpbmQodGhpcykgfVxuICAgKiBdO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1wYWdlLWN1c3RvbS1hY3Rpb25zJykgc2V0IHBhZ2VDdXN0b21BY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24+KSB7XG4gICAgdGhpcy5fcGFnZUN1c3RvbUFjdGlvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB0aGlzLmN1c3RvbVBhZ2VMaXN0QWN0aW9ucyA9IHRoaXMudHJhbnNmb3JtQ3VzdG9tQWN0aW9uc1RvUGFnZUxpc3RBY3Rpb24odGhpcy5wYWdlQ3VzdG9tQWN0aW9ucyk7XG4gICAgdGhpcy5oYXNDdXN0b21BY3Rpb25XaXRoU2VsZWN0YWJsZSA9IHRoaXMucGFnZUN1c3RvbUFjdGlvbnMuc29tZShjdXN0b21BY3Rpb24gPT4gY3VzdG9tQWN0aW9uLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgZ2V0IHBhZ2VDdXN0b21BY3Rpb25zKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbUFjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9wYWdlQ3VzdG9tQWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGHDp8O1ZXMgY3VzdG9taXphZGFzIG5hIHRhYmVsYSBkYSBww6FnaW5hIHF1ZSBzZXLDo28gaW5jb3Jwb3JhZGFzIMOgcyBhw6fDtWVzXG4gICAqIGluZm9ybWFkYXMgYXRyYXbDqXMgZGEgcHJvcHJpZWRhZGUgYHAtYWN0aW9uc2AuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgdXRpbGl6YcOnw6NvOlxuICAgKiBgYGBcbiAgICogW1xuICAgKiAgeyBsYWJlbDogJ0FwcGx5IGRpc2NvdW50JywgYWN0aW9uOiB0aGlzLmFwcGx5RGlzY291bnQuYmluZCh0aGlzKSB9LFxuICAgKiAgeyBsYWJlbDogJ0RldGFpbHMnLCBhY3Rpb246IHRoaXMuZGV0YWlscy5iaW5kKHRoaXMpIH1cbiAgICogXTtcbiAgICogYGBgXG4gICAqID4gQ2FzbyB1dGlsaXphciBhIGHDp8OjbyBwYWRyw6NvIGRlIGV4Y2x1aXIsIGEgbWVzbWEgc2Vyw6EgZXhpYmlkYSBwb3Igw7psdGltbyBuYSB0YWJlbGEuXG4gICAqL1xuICBASW5wdXQoJ3AtdGFibGUtY3VzdG9tLWFjdGlvbnMnKSBzZXQgdGFibGVDdXN0b21BY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl90YWJsZUN1c3RvbUFjdGlvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB0aGlzLmN1c3RvbVRhYmxlQWN0aW9ucyA9IHRoaXMudHJhbnNmb3JtVGFibGVDdXN0b21BY3Rpb25zVG9UYWJsZUFjdGlvbnModGhpcy50YWJsZUN1c3RvbUFjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHRhYmxlQ3VzdG9tQWN0aW9ucygpOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21UYWJsZUFjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZUN1c3RvbUFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMYXJndXJhIGRvIGNhbXBvIGRlIGJ1c2NhLCB1dGlsaXphbmRvIG8gKkdyaWQgU3lzdGVtKixcbiAgICogZSBsaW1pdGFkbyBhbyBtw6F4aW1vIGRlIDYgY29sdW5hcy4gTyB0YW1hbmhvIG3DrW5pbW8gw6kgY29udHJvbGFkb1xuICAgKiBjb25mb3JtZSByZXNvbHXDp8OjbyBkZSB0ZWxhIHBhcmEgbWFudGVyIGEgY29uc2lzdMOqbmNpYSBkbyBsYXlvdXQuXG4gICAqL1xuICBASW5wdXQoJ3AtcXVpY2stc2VhcmNoLXdpZHRoJykgc2V0IHF1aWNrU2VhcmNoV2lkdGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3F1aWNrU2VhcmNoV2lkdGggPSB1dGlsLmNvbnZlcnRUb0ludCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFdpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgYWx0dXJhIGRhIHRhYmVsYSBlbSAqcGl4ZWxzKiBlIGZpeGEgbyBjYWJlw6dhbGhvLlxuICAgKi9cbiAgQElucHV0KCdwLWhlaWdodCcpIHNldCBoZWlnaHQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2hlaWdodCA9IHV0aWwuY29udmVydFRvSW50KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgZmlsdHJvcyBxdWUgdGVyw6NvIGEgb3DDp8OjbyBkZSBmZWNoYXIgb2N1bHRhZGFcbiAgICogZW0gc2V1IHJlc3BlY3Rpdm8gZGlzY2xhaW1lci4gVXRpbGl6YXIgbyBhdHJpYnV0byBgcHJvcGVydHlgIGRvIGNhbXBvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAgICogYGBgXG4gICAqIFsnY2l0eScsJ25hbWUnXTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1jbG9zZS1kaXNjbGFpbWVycycpIHNldCBoaWRlQ2xvc2VEaXNjbGFpbWVycyh2YWx1ZTogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuX2hpZGVDbG9zZURpc2NsYWltZXJzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICB9XG5cbiAgZ2V0IGhpZGVDbG9zZURpc2NsYWltZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlQ2xvc2VEaXNjbGFpbWVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIElkZW50aWZpY2Fkb3IgZG8gcGFyw6JtZXRybyBlbnZpYWRvIGFvIHNlcnZpw6dvIGFvIHJlYWxpemFyIHVtYSBidXNjYSByw6FwaWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnc2VhcmNoJ1xuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC1wYXJhbScpIHNldCBxdWlja1NlYXJjaFBhcmFtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9xdWlja1NlYXJjaFBhcmFtID0gdmFsdWUgPz8gJ3NlYXJjaCc7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hQYXJhbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFBhcmFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVmFsb3IgcGFkcsOjbyBuYSBidXNjYSByw6FwaWRhIGFvIGluaWNpYWxpemFyIG8gY29tcG9uZW50ZVxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC12YWx1ZScpIHNldCBxdWlja1NlYXJjaFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9xdWlja1NlYXJjaFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy10YWJsZWAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscyA9IHtcbiAgICogICAgZGlzY2xhaW1lckdyb3VwVGl0bGU6ICdGaWx0cm9zIGFwbGljYWRvczonLFxuICAgKiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRybyBhdmFuw6dhZG8nLFxuICAgKiAgICBmaWx0ZXJDYW5jZWxMYWJlbDogJ0ZlY2hhcicsXG4gICAqICAgIGZpbHRlckNvbmZpcm1MYWJlbDogJ0FwbGljYXInLFxuICAgKiAgICBxdWlja1NlYXJjaExhYmVsOiAnVmFsb3IgcGVzcXVpc2FkbzonLFxuICAgKiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1Blc3F1aXNlIGFxdWknXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzID0ge1xuICAgKiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRybyBhdmFuw6dhZG8nXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtdGFibGVcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtZHluYW1pYy10YWJsZT5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyB2YWxvciBwYWRyw6NvIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGNvbmZpZ3VyYWRvIG5vIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91ICpicm93c2VyKi5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNlYXJjaExpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHM7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgbyBtb2RvIGRyYWcgYW5kIGRyb3AgcGFyYSBhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1kcmFnZ2FibGUnKSBzZXQgZHJhZ2dhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnZ2FibGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcG9EaWFsb2dTZXJ2aWNlOiBQb0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb05vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlRHluYW1pY1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2U6IFBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcblxuICAgIHRoaXMubGl0ZXJhbHMgPSB7XG4gICAgICAuLi5wb1BhZ2VEeW5hbWljVGFibGVMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgIC4uLnBvUGFnZUR5bmFtaWNUYWJsZUxpdGVyYWxzRGVmYXVsdFtsYW5ndWFnZV1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRGF0YUZyb21BUEkoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25BZHZhbmNlZFNlYXJjaChmaWx0ZXIpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEoeyBwYWdlOiAxLCAuLi5maWx0ZXIgfSkuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMucGFyYW1zID0gZmlsdGVyO1xuXG4gICAgaWYgKHRoaXMua2VlcEZpbHRlcnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZURpc2NsYWltZXJzKGRpc2NsYWltZXJzKSB7XG4gICAgY29uc3QgZmlsdGVyID0ge307XG5cbiAgICBkaXNjbGFpbWVycy5mb3JFYWNoKGRpc2NsYWltZXIgPT4ge1xuICAgICAgZmlsdGVyW2Rpc2NsYWltZXIucHJvcGVydHldID0gZGlzY2xhaW1lci52YWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMub25BZHZhbmNlZFNlYXJjaChmaWx0ZXIpO1xuICB9XG5cbiAgb25RdWlja1NlYXJjaCh0ZXJtVHlwZWRJblF1aWNrU2VhcmNoKSB7XG4gICAgY29uc3QgcXVpY2tTZWFyY2hQYXJhbSA9IHRlcm1UeXBlZEluUXVpY2tTZWFyY2ggPyB7IFt0aGlzLnF1aWNrU2VhcmNoUGFyYW1dOiB0ZXJtVHlwZWRJblF1aWNrU2VhcmNoIH0gOiB7fTtcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuY29uY2F0RmlsdGVycyA/IHsgLi4udGhpcy5wYXJhbXMsIC4uLnF1aWNrU2VhcmNoUGFyYW0gfSA6IHsgLi4ucXVpY2tTZWFyY2hQYXJhbSB9O1xuXG4gICAgaWYgKHRoaXMuX29sZFF1aWNrU2VhcmNoUGFyYW0gaW4gdGhpcy5wYXJhbXMgJiYgdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbSAhPT0gdGhpcy5xdWlja1NlYXJjaFBhcmFtKSB7XG4gICAgICBkZWxldGUgdGhpcy5wYXJhbXNbdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbV07XG4gICAgfVxuXG4gICAgdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbSA9IHRoaXMucXVpY2tTZWFyY2hQYXJhbTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEodGVybVR5cGVkSW5RdWlja1NlYXJjaCA/IHsgcGFnZTogMSwgLi4udGhpcy5wYXJhbXMgfSA6IHVuZGVmaW5lZCkuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgb25Tb3J0KHNvcnRlZENvbHVtbjogUG9UYWJsZUNvbHVtblNvcnQpIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIGNvbnN0IG9yZGVyID0gc29ydGVkQ29sdW1uLnR5cGUgPT09ICdhc2NlbmRpbmcnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdXRpbC5zb3J0QXJyYXlPZk9iamVjdHModGhpcy5pdGVtcywgc29ydGVkQ29sdW1uLmNvbHVtbi5wcm9wZXJ0eSwgb3JkZXIpO1xuICAgIH1cbiAgICB0aGlzLnNvcnRlZENvbHVtbiA9IHNvcnRlZENvbHVtbjtcbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnModmFsdWUpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2libGVDb2x1bW5zLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblNvcnRCeShzb3J0ZWRDb2x1bW46IFBvVGFibGVDb2x1bW5Tb3J0KSB7XG4gICAgdGhpcy5zb3J0QnkuZW1pdChzb3J0ZWRDb2x1bW4pO1xuICB9XG5cbiAgc2hvd01vcmUoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmxvYWREYXRhKHsgcGFnZTogKyt0aGlzLnBhZ2UsIC4uLnRoaXMucGFyYW1zIH0pLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWxlY3Rpb25UYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBY3Rpb25SZW1vdmVBbGwgfHwgdGhpcy5oYXNDdXN0b21BY3Rpb25XaXRoU2VsZWN0YWJsZTtcbiAgfVxuXG4gIGdldCBoYXNBY3Rpb25SZW1vdmVBbGwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3Rpb25zLnJlbW92ZUFsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgcmVhbGl6YSBhIGF0dWFsaXphw6fDo28gZG9zIGRhZG9zIGRhIHRhYmVsYS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyBjYXB0dXJhciBhIGluc3TDom5jaWEgZG8gYHBhZ2UgZHluYW1pYyB0YWJsZWAsIGNvbW8gcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYCBodG1sXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtdGFibGUgI2R5bmFtaWNUYWJsZSBbcC1zZXJ2aWNlLWFwaV09XCJzZXJ2aWNlQXBpXCI+PC9wby1wYWdlLWR5bmFtaWMtdGFibGU+XG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGAgamF2YXNjcmlwdFxuICAgKiBpbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVDb21wb25lbnQsIFBvRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoJ2R5bmFtaWNUYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNUYWJsZTogUG9QYWdlRHluYW1pY1RhYmxlQ29tcG9uZW50O1xuICAgKlxuICAgKiBwYWdlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tQWN0aW9uPiA9IFtcbiAgICoge1xuICAgKiAgIGxhYmVsOiAnVXBkYXRlJyxcbiAgICogICBhY3Rpb246IHRoaXMudXBkYXRlVGFibGUuYmluZCh0aGlzKSxcbiAgICogICBpY29uOiAncG8taWNvbi1yZWZyZXNoJ1xuICAgKiB9XVxuICAgKlxuICAgKiB1cGRhdGVUYWJsZSgpIHtcbiAgICogICB0aGlzLmR5bmFtaWNUYWJsZS51cGRhdGVEYXRhVGFibGUoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICpcbiAgICogQHBhcmFtIHt7cGFnZTogbnVtYmVyLCBrZXk6IHZhbHVlIH19IGZpbHRlciBQcm9wcmllZGFkZSBwYXJhIGVudmlvIGRlIHVtIGZpbHRybyBjdXN0b21pemFkby5cbiAgICogRXhlbXBsbyBkZSBlbnZpbzpcbiAgICpcbiAgICpgYGBcbiAgICogdGhpcy5keW5hbWljVGFibGUudXBkYXRlRGF0YVRhYmxlKHtwYWdlOiAzLCBzZWFyY2g6ICdCcmFzaWwnfSk7XG4gICAqIGBgYFxuICAgKiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIGZpbHRybyBjdXN0b21pemFkbyBwYXJhIG8gbcOpdG9kbyBgdXBkYXRlRGF0YVRhYmxlYCBhIHRhYmVsYSBzZXLDoSBhdHVhbGl6YWRhIGNvbmZvcm1lIGEgcMOhZ2luYSBkbyB1bHRpbW8gaXRlbSBtb2RpZmljYWRvLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURhdGFUYWJsZShmaWx0ZXI/OiBhbnkpIHtcbiAgICBjb25zdCBpbmRleEl0ZW1TZWxlY3RlZCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5pdGVtU2VsZWN0ZWRBY3Rpb24pO1xuICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBNYXRoLmZsb29yKGluZGV4SXRlbVNlbGVjdGVkIC8gUEFHRV9TSVpFX0RFRkFVTFQpO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyIDwgMCA/IHRoaXMuY3VycmVudFBhZ2UgOiBwYWdlTnVtYmVyICsgMTtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEoZmlsdGVyKS5zdWJzY3JpYmUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5sb2FkRGF0YSh7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIC4uLnRoaXMucGFyYW1zIH0pLnN1YnNjcmliZSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpcm1SZW1vdmUoXG4gICAgYWN0aW9uUmVtb3ZlOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmUnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmU6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZSddLFxuICAgIGl0ZW1cbiAgKSB7XG4gICAgY29uc3QgY29uZmlybU9wdGlvbnM6IFBvRGlhbG9nQ29uZmlybU9wdGlvbnMgPSB7XG4gICAgICB0aXRsZTogdGhpcy5saXRlcmFscy5jb25maXJtUmVtb3ZlVGl0bGUsXG4gICAgICBtZXNzYWdlOiB0aGlzLmxpdGVyYWxzLmNvbmZpcm1SZW1vdmVNZXNzYWdlLFxuICAgICAgY29uZmlybTogdGhpcy5yZW1vdmUuYmluZCh0aGlzLCBpdGVtLCBhY3Rpb25SZW1vdmUsIGFjdGlvbkJlZm9yZVJlbW92ZSlcbiAgICB9O1xuXG4gICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybShjb25maXJtT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpcm1SZW1vdmVBbGwoXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmUnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZSddXG4gICkge1xuICAgIGNvbnN0IGNvbmZpcm1PcHRpb25zOiBQb0RpYWxvZ0NvbmZpcm1PcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuY29uZmlybVJlbW92ZUFsbFRpdGxlLFxuICAgICAgbWVzc2FnZTogdGhpcy5saXRlcmFscy5jb25maXJtUmVtb3ZlQWxsTWVzc2FnZSxcbiAgICAgIGNvbmZpcm06IHRoaXMucmVtb3ZlQWxsLmJpbmQodGhpcywgYWN0aW9uUmVtb3ZlQWxsLCBhY3Rpb25CZWZvcmVSZW1vdmVBbGwpXG4gICAgfTtcblxuICAgIHRoaXMucG9EaWFsb2dTZXJ2aWNlLmNvbmZpcm0oY29uZmlybU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRVbmlxdWVLZXkoaXRlbSkge1xuICAgIGNvbnN0IGtleXMgPSB1dGlsLm1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCB0aGlzLmtleXMpO1xuXG4gICAgcmV0dXJuIHV0aWwudmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldE9yZGVyUGFyYW0oc29ydGVkQ29sdW1uOiBQb1RhYmxlQ29sdW1uU29ydCA9IHsgdHlwZTogdW5kZWZpbmVkIH0pIHtcbiAgICBjb25zdCB7IGNvbHVtbiwgdHlwZSB9ID0gc29ydGVkQ29sdW1uO1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiB7IG9yZGVyOiBgLSR7Y29sdW1uLnByb3BlcnR5fWAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBvcmRlcjogYCR7Y29sdW1uLnByb3BlcnR5fWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEocGFyYW1zOiB7IHBhZ2U/OiBudW1iZXI7IHNlYXJjaD86IHN0cmluZyB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZUFwaSkge1xuICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmxpdGVyYWxzLmxvYWREYXRhRXJyb3JOb3RpZmljYXRpb24pO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyUGFyYW0gPSB0aGlzLmdldE9yZGVyUGFyYW0odGhpcy5zb3J0ZWRDb2x1bW4pO1xuICAgIGNvbnN0IGRlZmF1bHRQYXJhbXM6IGFueSA9IHsgcGFnZTogMSwgcGFnZVNpemU6IFBBR0VfU0laRV9ERUZBVUxUIH07XG4gICAgY29uc3QgZnVsbFBhcmFtczogYW55ID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5wYXJhbXMsIC4uLm9yZGVyUGFyYW0gfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlcyhmdWxsUGFyYW1zKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgbGV0IG5ld0FycmF5O1xuICAgICAgICBpZiAoZnVsbFBhcmFtcy5wYWdlID09PSAxKSB7XG4gICAgICAgICAgbmV3QXJyYXkgPSByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleShyZXNwb25zZS5pdGVtcywgcmVzcG9uc2UuaXRlbXMsIHRoaXMua2V5cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3QXJyYXkgPSByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleSh0aGlzLml0ZW1zLCByZXNwb25zZS5pdGVtcywgdGhpcy5rZXlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1zID0gbmV3QXJyYXkgPyBbLi4ubmV3QXJyYXldIDogdGhpcy5pdGVtcztcbiAgICAgICAgdGhpcy5wYWdlID0gZnVsbFBhcmFtcy5wYWdlO1xuICAgICAgICB0aGlzLmhhc05leHQgPSByZXNwb25zZS5oYXNOZXh0O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZXRhZGF0YShcbiAgICBzZXJ2aWNlQXBpRnJvbVJvdXRlOiBzdHJpbmcsXG4gICAgb25Mb2FkOiBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uXG4gICk6IE9ic2VydmFibGU8UG9QYWdlRHluYW1pY1RhYmxlTWV0YURhdGE+IHtcbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY1RhYmxlTWV0YURhdGE+KCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmF1dG9Sb3V0ZXIgPSByZXNwb25zZS5hdXRvUm91dGVyIHx8IHRoaXMuYXV0b1JvdXRlcjtcbiAgICAgICAgICB0aGlzLmFjdGlvbnMgPSByZXNwb25zZS5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucztcbiAgICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSByZXNwb25zZS5icmVhZGNydW1iIHx8IHRoaXMuYnJlYWRjcnVtYjtcbiAgICAgICAgICB0aGlzLmZpZWxkcyA9IHJlc3BvbnNlLmZpZWxkcyB8fCB0aGlzLmZpZWxkcztcbiAgICAgICAgICB0aGlzLnRpdGxlID0gcmVzcG9uc2UudGl0bGUgfHwgdGhpcy50aXRsZTtcbiAgICAgICAgICB0aGlzLnBhZ2VDdXN0b21BY3Rpb25zID0gcmVzcG9uc2UucGFnZUN1c3RvbUFjdGlvbnMgfHwgdGhpcy5wYWdlQ3VzdG9tQWN0aW9ucztcbiAgICAgICAgICB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucyA9IHJlc3BvbnNlLnRhYmxlQ3VzdG9tQWN0aW9ucyB8fCB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucztcbiAgICAgICAgICB0aGlzLmtlZXBGaWx0ZXJzID0gcmVzcG9uc2Uua2VlcEZpbHRlcnMgfHwgdGhpcy5rZWVwRmlsdGVycztcbiAgICAgICAgICB0aGlzLmNvbmNhdEZpbHRlcnMgPSByZXNwb25zZS5jb25jYXRGaWx0ZXJzIHx8IHRoaXMuY29uY2F0RmlsdGVycztcbiAgICAgICAgICB0aGlzLmhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyID0gcmVzcG9uc2UuaGlkZVJlbW92ZUFsbERpc2NsYWltZXIgfHwgdGhpcy5oaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjtcbiAgICAgICAgICB0aGlzLmhpZGVDbG9zZURpc2NsYWltZXJzID0gcmVzcG9uc2UuaGlkZUNsb3NlRGlzY2xhaW1lcnMgfHwgdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycztcbiAgICAgICAgICB0aGlzLnF1aWNrU2VhcmNoV2lkdGggPSByZXNwb25zZS5xdWlja1NlYXJjaFdpZHRoIHx8IHRoaXMucXVpY2tTZWFyY2hXaWR0aDtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZCk7XG4gIH1cblxuICAvLyBAdG9kbyBWYWxpZGFyIHJvdGFzIG5hIG3Do28gcG9pcyBzZSBleGlzdGlyIHVtYSByb3RhICcqKicgbyBjYXRjaCBkbyBuYXZpZ2F0aW9uIG7Do28gZnVuY2lvbmEuXG4gIHByaXZhdGUgbmF2aWdhdGVUbyhcbiAgICByb3V0ZTogeyBwYXRoOiBzdHJpbmc7IGNvbXBvbmVudD87IHVybD86IHN0cmluZzsgcGFyYW1zPzogYW55IH0sXG4gICAgZm9yY2VTdG9wQXV0b1JvdXRlcjogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZS51cmwgfHwgcm91dGUucGF0aF0sIHsgcXVlcnlQYXJhbXM6IHJvdXRlLnBhcmFtcyB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAoZm9yY2VTdG9wQXV0b1JvdXRlciB8fCAhdGhpcy5hdXRvUm91dGVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3V0ZXIuY29uZmlnLnVuc2hpZnQoPFJvdXRlPntcbiAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgY29tcG9uZW50OiByb3V0ZS5jb21wb25lbnQsXG4gICAgICAgIGRhdGE6IHsgc2VydmljZUFwaTogdGhpcy5zZXJ2aWNlQXBpLCBhdXRvUm91dGVyOiB0cnVlIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm5hdmlnYXRlVG8ocm91dGUsIHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25jYXRlbmF0ZWRVcmwoY29uY2F0S2V5czogYm9vbGVhbiwgdXJsOiBzdHJpbmcsIHNlbGVjdGVkSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5cyA9IHRoaXMua2V5cy5tYXAoa2V5ID0+IGVuY29kZVVSSUNvbXBvbmVudChzZWxlY3RlZEl0ZW1ba2V5XSkpLmpvaW4oKTtcbiAgICByZXR1cm4gY29uY2F0S2V5cyA/IGAke3VybH0vJHtrZXlzfWAgOiB1cmw7XG4gIH1cblxuICBwcml2YXRlIG9wZW5EZXRhaWwoYWN0aW9uOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkZXRhaWwnXSwgaXRlbSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2VcbiAgICAgICAgLmJlZm9yZURldGFpbCh0aGlzLmFjdGlvbnMuYmVmb3JlRGV0YWlsLCBpZCwgaXRlbSlcbiAgICAgICAgLnN1YnNjcmliZSgoYmVmb3JlRGV0YWlsUmVzdWx0OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVEZXRhaWwpID0+XG4gICAgICAgICAgdGhpcy5leGVjdXRlRGV0YWlsKGFjdGlvbiwgYmVmb3JlRGV0YWlsUmVzdWx0LCBpZCwgaXRlbSlcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVEZXRhaWwoXG4gICAgYWN0aW9uOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkZXRhaWwnXSxcbiAgICBiZWZvcmVEZXRhaWxSZXN1bHQ/OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcsXG4gICAgaWQ/OiBzdHJpbmcsXG4gICAgaXRlbT86IGFueVxuICApIHtcbiAgICBjb25zdCBiZWZvcmUgPSBiZWZvcmVEZXRhaWxSZXN1bHQgPz8ge307XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSB0eXBlb2YgYmVmb3JlLmFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBiZWZvcmUuYWxsb3dBY3Rpb24gOiB0cnVlO1xuICAgIGNvbnN0IHsgbmV3VXJsIH0gPSBiZWZvcmU7XG5cbiAgICBpZiAoYWxsb3dBY3Rpb24gJiYgYWN0aW9uKSB7XG4gICAgICBpZiAobmV3VXJsKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGhGcm9tTmV3VXJsKG5ld1VybCwgaWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aCB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb2x2ZVVybChpdGVtLCBhY3Rpb24pO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oeyBwYXRoOiBhY3Rpb24sIHVybCwgY29tcG9uZW50OiBQb1BhZ2VEeW5hbWljRGV0YWlsQ29tcG9uZW50IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uKGlkLCBpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhGcm9tTmV3VXJsKG5ld1VybDogc3RyaW5nLCBpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAobmV3VXJsLmluY2x1ZGVzKCc6aWQnKSkge1xuICAgICAgcmV0dXJuIG5ld1VybC5yZXBsYWNlKC86aWQvZywgaWQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3VXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHVwbGljYXRlKGFjdGlvbkR1cGxpY2F0ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snZHVwbGljYXRlJ10sIGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG4gICAgY29uc3QgZHVwbGljYXRlcyA9IHV0aWwucmVtb3ZlS2V5c1Byb3BlcnRpZXModGhpcy5rZXlzLCB1dGlsLm1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCB0aGlzLmR1cGxpY2F0ZXMpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVEdXBsaWNhdGUodGhpcy5hY3Rpb25zLmJlZm9yZUR1cGxpY2F0ZSwgaWQsIGR1cGxpY2F0ZXMpXG4gICAgICAgIC5zdWJzY3JpYmUoKGJlZm9yZUR1cGxpY2F0ZVJlc3VsdDogUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRHVwbGljYXRlKSA9PlxuICAgICAgICAgIHRoaXMuZXhlY3V0ZUR1cGxpY2F0ZShhY3Rpb25EdXBsaWNhdGUsIGJlZm9yZUR1cGxpY2F0ZVJlc3VsdCwgZHVwbGljYXRlcylcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVEdXBsaWNhdGUoXG4gICAgYWN0aW9uRHVwbGljYXRlOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkdXBsaWNhdGUnXSxcbiAgICBiZWZvcmVEdXBsaWNhdGVSZXN1bHQ6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUR1cGxpY2F0ZSxcbiAgICBkdXBsaWNhdGVzOiBhbnlcbiAgKSB7XG4gICAgY29uc3QgYmVmb3JlID0gYmVmb3JlRHVwbGljYXRlUmVzdWx0ID8/IHt9O1xuICAgIGNvbnN0IGFsbG93QWN0aW9uID0gdHlwZW9mIGJlZm9yZS5hbGxvd0FjdGlvbiA9PT0gJ2Jvb2xlYW4nID8gYmVmb3JlLmFsbG93QWN0aW9uIDogdHJ1ZTtcbiAgICBjb25zdCBiZWZvcmVEdXBsaWNhdGVSZXNvdXJjZSA9IGJlZm9yZS5yZXNvdXJjZTtcbiAgICBjb25zdCBuZXdBY3Rpb24gPSBiZWZvcmUubmV3VXJsID8/IGFjdGlvbkR1cGxpY2F0ZTtcblxuICAgIGlmIChhbGxvd0FjdGlvbiAmJiBhY3Rpb25EdXBsaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgYmVmb3JlRHVwbGljYXRlUmVzb3VyY2UgPT09ICdvYmplY3QnICYmIGJlZm9yZUR1cGxpY2F0ZVJlc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgIGR1cGxpY2F0ZXMgPSB1dGlsLnJlbW92ZUtleXNQcm9wZXJ0aWVzKHRoaXMua2V5cywgYmVmb3JlRHVwbGljYXRlUmVzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5ld0FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVUbyh7IHBhdGg6IG5ld0FjdGlvbiwgcGFyYW1zOiB7IGR1cGxpY2F0ZTogSlNPTi5zdHJpbmdpZnkoZHVwbGljYXRlcykgfSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld0FjdGlvbihkdXBsaWNhdGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0KGFjdGlvbkVkaXQ6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2VkaXQnXSwgaXRlbSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlRWRpdCh0aGlzLmFjdGlvbnMuYmVmb3JlRWRpdCwgaWQsIGl0ZW0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoYmVmb3JlRWRpdFJlc3VsdDogUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRWRpdCkgPT5cbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUVkaXRBY3Rpb24oYWN0aW9uRWRpdCwgYmVmb3JlRWRpdFJlc3VsdCwgaXRlbSwgaWQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVFZGl0QWN0aW9uKFxuICAgIGFjdGlvbjogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snZWRpdCddLFxuICAgIGJlZm9yZUVkaXRSZXN1bHQ6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUVkaXQsXG4gICAgaXRlbTogYW55LFxuICAgIGlkOiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgbmV3RWRpdEFjdGlvbiA9IGJlZm9yZUVkaXRSZXN1bHQ/Lm5ld1VybCA/PyBhY3Rpb247XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSBiZWZvcmVFZGl0UmVzdWx0Py5hbGxvd0FjdGlvbiA/PyB0cnVlO1xuXG4gICAgaWYgKCFhbGxvd0FjdGlvbikge1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmV3RWRpdEFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMub3BlbkVkaXRVcmwobmV3RWRpdEFjdGlvbiwgaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRJdGVtID0gbmV3RWRpdEFjdGlvbihpZCwgaXRlbSk7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZWRJdGVtID09PSAnb2JqZWN0JyAmJiB1cGRhdGVkSXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1vZGlmeVVJVGFibGVJdGVtKGl0ZW0sIHV0aWwucmVtb3ZlS2V5c1Byb3BlcnRpZXModGhpcy5rZXlzLCB1cGRhdGVkSXRlbSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkVkaXRVcmwocGF0aDogc3RyaW5nLCBpdGVtKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yZXNvbHZlVXJsKGl0ZW0sIHBhdGgpO1xuXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aCwgdXJsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RpZnlVSVRhYmxlSXRlbShjdXJyZW50SXRlbSwgbmV3SXRlbVZhbHVlKSB7XG4gICAgY29uc3QgdGFibGVJdGVtID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBjdXJyZW50SXRlbSk7XG4gICAgdGhpcy5pdGVtc1t0YWJsZUl0ZW1dID0geyAuLi5jdXJyZW50SXRlbSwgLi4ubmV3SXRlbVZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5OZXcoYWN0aW9uTmV3OiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWyduZXcnXSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVOZXcodGhpcy5hY3Rpb25zLmJlZm9yZU5ldylcbiAgICAgICAgLnN1YnNjcmliZSgoYmVmb3JlTmV3UmVzdWx0OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcpID0+IHRoaXMuZXhlY3V0ZU5ldyhhY3Rpb25OZXcsIGJlZm9yZU5ld1Jlc3VsdCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZU5ldyhhY3Rpb25OZXc6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ25ldyddLCBiZWZvcmVOZXdSZXN1bHQ/OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcpIHtcbiAgICBjb25zdCBiZWZvcmUgPSBiZWZvcmVOZXdSZXN1bHQgPz8ge307XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSB0eXBlb2YgYmVmb3JlLmFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBiZWZvcmUuYWxsb3dBY3Rpb24gOiB0cnVlO1xuICAgIGNvbnN0IHsgbmV3VXJsIH0gPSBiZWZvcmU7XG5cbiAgICBpZiAoYWxsb3dBY3Rpb24gJiYgYWN0aW9uTmV3KSB7XG4gICAgICBpZiAobmV3VXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlVG8oeyBwYXRoOiBuZXdVcmwgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uTmV3ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aDogYWN0aW9uTmV3IH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWN0aW9uTmV3KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhc28gZXhpc3RhIG1haXMgZGUgdW0gaWRlbnRpZmljYWRvciwgc2Vyw6EgY29uY2F0ZW5hZG8gY29tICd8Jy5cbiAgICpcbiAgICogRXg6IHsgaWQ6IDEsIGNvbXBhbnk6ICdwbycgfVxuICAgKlxuICAgKiBQYXJhIG8gZW5kcG9pbnQgL3Jlc291cmNlcy86aWQgc2Vyw6EgZXhlY3V0YWRhIGEgdXJsIC9yZXNvdXJjZXMvMXxwb1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmUoXG4gICAgaXRlbSxcbiAgICBhY3Rpb25SZW1vdmU6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ3JlbW92ZSddLFxuICAgIGFjdGlvbkJlZm9yZVJlbW92ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snYmVmb3JlUmVtb3ZlJ11cbiAgKSB7XG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlUmVtb3ZlKGFjdGlvbkJlZm9yZVJlbW92ZSwgdW5pcXVlS2V5LCBpdGVtKVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoYmVmb3JlUmVtb3ZlID0+IHRoaXMuZGVsZXRlQWN0aW9uKGl0ZW0sIGFjdGlvblJlbW92ZSwgYmVmb3JlUmVtb3ZlKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUFjdGlvbihcbiAgICBpdGVtLFxuICAgIGFjdGlvblJlbW92ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1sncmVtb3ZlJ10sXG4gICAgYmVmb3JlUmVtb3ZlOiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVSZW1vdmVcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB7IGFsbG93QWN0aW9uLCBuZXdVcmwgfSA9IGJlZm9yZVJlbW92ZSB8fCB7fTtcbiAgICBjb25zdCBhbGxvdyA9IGFsbG93QWN0aW9uID8/IHRydWU7XG5cbiAgICBpZiAoYWxsb3cpIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKTtcbiAgICAgIGNvbnN0IHJlc291cmNlVG9SZW1vdmVLZXkgPSB0aGlzLnJldHVyblJlc291cmNlc0tleXMoW2l0ZW1dKTtcblxuICAgICAgaWYgKHR5cGVvZiBhY3Rpb25SZW1vdmUgPT09ICdib29sZWFuJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgdW5pcXVlS2V5ID0gbmV3VXJsID8gdW5kZWZpbmVkIDogdW5pcXVlS2V5O1xuICAgICAgICByZXR1cm4gdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZVxuICAgICAgICAgIC5kZWxldGVSZXNvdXJjZSh1bmlxdWVLZXksIG5ld1VybClcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy5yZW1vdmVGcm9tVUkocmVzb3VyY2VUb1JlbW92ZUtleSwgdGhpcy5saXRlcmFscy5yZW1vdmVTdWNjZXNzTm90aWZpY2F0aW9uKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2YoYWN0aW9uUmVtb3ZlKHVuaXF1ZUtleSwgaXRlbSkpLnBpcGUoXG4gICAgICAgIHRhcChyZW1vdmUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbW92ZUl0ZW0gPSByZW1vdmUgPz8gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tVUkocmVzb3VyY2VUb1JlbW92ZUtleSwgdGhpcy5saXRlcmFscy5yZW1vdmVTdWNjZXNzTm90aWZpY2F0aW9uLCByZW1vdmVJdGVtKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRnJvbVVJKGl0ZW1zOiBBcnJheTxhbnk+LCBtZXNzYWdlOiBzdHJpbmcsIHJlbW92ZSA9IHRydWUpIHtcbiAgICBpZiAocmVtb3ZlID09PSB0cnVlICYmIGl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVtb3ZlTG9jYWxJdGVtcyhpdGVtcyk7XG4gICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3MobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBbGwoXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmVBbGwnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZUFsbCddXG4gICkge1xuICAgIGNvbnN0IG9yaWdpbmFsUmVzb3VyY2VzS2V5cyA9IHRoaXMuZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlUmVtb3ZlQWxsKGFjdGlvbkJlZm9yZVJlbW92ZUFsbCwgb3JpZ2luYWxSZXNvdXJjZXNLZXlzKVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoYmVmb3JlUmVtb3ZlID0+IHRoaXMuZGVsZXRlQWxsQWN0aW9uKGFjdGlvblJlbW92ZUFsbCwgYmVmb3JlUmVtb3ZlLCBvcmlnaW5hbFJlc291cmNlc0tleXMpKSlcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCk7XG5cbiAgICBpZiAocmVzb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXR1cm5SZXNvdXJjZXNLZXlzKHJlc291cmNlcyk7XG4gIH1cblxuICBwcml2YXRlIHJldHVyblJlc291cmNlc0tleXMocmVzb3VyY2VzKSB7XG4gICAgcmV0dXJuIHV0aWwubWFwQXJyYXlCeVByb3BlcnRpZXMocmVzb3VyY2VzLCB0aGlzLmtleXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVBbGxBY3Rpb24oXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmVBbGwnXSxcbiAgICBiZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZVJlbW92ZUFsbCxcbiAgICBvcmlnaW5hbFJlc291cmNlczogQXJyYXk8YW55PlxuICApIHtcbiAgICBjb25zdCB7IGFsbG93QWN0aW9uLCBuZXdVcmwsIHJlc291cmNlcyB9ID0gYmVmb3JlUmVtb3ZlQWxsID8/IHt9O1xuICAgIGNvbnN0IGFsbG93ID0gYWxsb3dBY3Rpb24gPz8gdHJ1ZTtcbiAgICBjb25zdCByZXNvdXJjZXN0b0RlbGV0ZSA9IHJlc291cmNlcyA/PyBvcmlnaW5hbFJlc291cmNlcztcblxuICAgIGlmIChhbGxvdyAmJiBBcnJheS5pc0FycmF5KHJlc291cmNlc3RvRGVsZXRlKSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3Rpb25SZW1vdmVBbGwgPT09ICdib29sZWFuJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZGVsZXRlUmVzb3VyY2VzKHJlc291cmNlc3RvRGVsZXRlLCBuZXdVcmwpLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbVVJKHJlc291cmNlc3RvRGVsZXRlLCB0aGlzLmxpdGVyYWxzLnJlbW92ZUFsbFN1Y2Nlc3NOb3RpZmljYXRpb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2YoYWN0aW9uUmVtb3ZlQWxsKHJlc291cmNlc3RvRGVsZXRlKSkucGlwZShcbiAgICAgICAgdGFwKHJlbW92ZUl0ZW1zID0+IHRoaXMucmVtb3ZlRnJvbVVJKHJlbW92ZUl0ZW1zLCB0aGlzLmxpdGVyYWxzLnJlbW92ZVN1Y2Nlc3NOb3RpZmljYXRpb24pKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMb2NhbEl0ZW1zKGl0ZW1zS2V5c1RvUmVtb3ZlID0gW10pIHtcbiAgICBpZiAoaXRlbXNLZXlzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKTtcbiAgICAgICAgcmV0dXJuICFpdGVtc0tleXNUb1JlbW92ZS5maW5kKGl0ZW1LZXlUb1JlbW92ZSA9PiB1dGlsLnZhbHVlc0Zyb21PYmplY3QoaXRlbUtleVRvUmVtb3ZlKS5qb2luKCd8JykgPT09IGl0ZW1LZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVXJsKGl0ZW06IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC86aWQvZywgdW5pcXVlS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFnZUFjdGlvbnMoYWN0aW9uczogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucykge1xuICAgIGlmIChhY3Rpb25zPy5uZXcpIHtcbiAgICAgIHRoaXMuZGVmYXVsdFBhZ2VBY3Rpb25zID0gW3sgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvbiwgYWN0aW9uOiB0aGlzLm9wZW5OZXcuYmluZCh0aGlzLCBhY3Rpb25zLm5ldykgfV07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DdXN0b21BY3Rpb25zVG9QYWdlTGlzdEFjdGlvbihcbiAgICBjdXN0b21BY3Rpb25zOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24+XG4gICk6IEFycmF5PFBvUGFnZUFjdGlvbj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIGN1c3RvbUFjdGlvbnMubWFwKGN1c3RvbUFjdGlvbiA9PiAoe1xuICAgICAgbGFiZWw6IGN1c3RvbUFjdGlvbi5sYWJlbCxcbiAgICAgIGFjdGlvbjogdGhpcy5jYWxsUGFnZUN1c3RvbUFjdGlvbi5iaW5kKHRoaXMsIGN1c3RvbUFjdGlvbiksXG4gICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVQYWdlQ3VzdG9tQWN0aW9uLmJpbmQodGhpcywgY3VzdG9tQWN0aW9uKSxcbiAgICAgIC4uLihjdXN0b21BY3Rpb24uaWNvbiAmJiB7IGljb246IGN1c3RvbUFjdGlvbi5pY29uIH0pLFxuICAgICAgdmlzaWJsZTogY3VzdG9tQWN0aW9uLnZpc2libGVcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVRhYmxlQ3VzdG9tQWN0aW9uc1RvVGFibGVBY3Rpb25zKFxuICAgIHRhYmxlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tVGFibGVBY3Rpb24+XG4gICk6IEFycmF5PFBvVGFibGVBY3Rpb24+IHtcbiAgICByZXR1cm4gdGFibGVDdXN0b21BY3Rpb25zLm1hcCh0YWJsZUN1c3RvbUFjdGlvbiA9PiAoe1xuICAgICAgbGFiZWw6IHRhYmxlQ3VzdG9tQWN0aW9uLmxhYmVsLFxuICAgICAgaWNvbjogdGFibGVDdXN0b21BY3Rpb24uaWNvbixcbiAgICAgIGFjdGlvbjogdGhpcy5jYWxsVGFibGVDdXN0b21BY3Rpb24uYmluZCh0aGlzLCB0YWJsZUN1c3RvbUFjdGlvbiksXG4gICAgICBkaXNhYmxlZDogdGFibGVDdXN0b21BY3Rpb24uZGlzYWJsZWQsXG4gICAgICB2aXNpYmxlOiB0YWJsZUN1c3RvbUFjdGlvbi52aXNpYmxlXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Rpc2FibGVQYWdlQ3VzdG9tQWN0aW9uKGN1c3RvbUFjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjdXN0b21BY3Rpb24uc2VsZWN0YWJsZSAmJiAhdGhpcy5nZXRTZWxlY3RlZEl0ZW1zS2V5cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsUGFnZUN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb246IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbUFjdGlvbikge1xuICAgIGlmIChjdXN0b21BY3Rpb24uYWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gY3VzdG9tQWN0aW9uLnNlbGVjdGFibGUgPyB0aGlzLmdldFNlbGVjdGVkSXRlbXNLZXlzKCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHNlbmRDdXN0b21BY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5jdXN0b21BY3Rpb24oY3VzdG9tQWN0aW9uLmFjdGlvbiwgc2VsZWN0ZWRJdGVtcylcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHNlbmRDdXN0b21BY3Rpb25TdWJzY3JpcHRpb24pO1xuICAgIH0gZWxzZSBpZiAoY3VzdG9tQWN0aW9uLnVybCkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aDogY3VzdG9tQWN0aW9uLnVybCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGxUYWJsZUN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb246IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbVRhYmxlQWN0aW9uLCBzZWxlY3RlZEl0ZW0pIHtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZEFjdGlvbiA9IHNlbGVjdGVkSXRlbTtcbiAgICBpZiAoY3VzdG9tQWN0aW9uLmFjdGlvbikge1xuICAgICAgY29uc3Qgc2VuZEN1c3RvbUFjdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2VcbiAgICAgICAgLmN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb24uYWN0aW9uLCBzZWxlY3RlZEl0ZW0pXG4gICAgICAgIC5zdWJzY3JpYmUodXBkYXRlZEl0ZW0gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZEl0ZW0gPT09ICdvYmplY3QnICYmIHVwZGF0ZWRJdGVtICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGlmeVVJVGFibGVJdGVtKHNlbGVjdGVkSXRlbSwgdXRpbC5yZW1vdmVLZXlzUHJvcGVydGllcyh0aGlzLmtleXMsIHVwZGF0ZWRJdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzZW5kQ3VzdG9tQWN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGN1c3RvbUFjdGlvbi51cmwpIHtcbiAgICAgIGlmIChpc0V4dGVybmFsTGluayhjdXN0b21BY3Rpb24udXJsKSkge1xuICAgICAgICBvcGVuRXh0ZXJuYWxMaW5rKHRoaXMuY3JlYXRlQ29uY2F0ZW5hdGVkVXJsKGN1c3RvbUFjdGlvbi5jb25jYXRLZXlzLCBjdXN0b21BY3Rpb24udXJsLCBzZWxlY3RlZEl0ZW0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyh7XG4gICAgICAgICAgcGF0aDogdGhpcy5jcmVhdGVDb25jYXRlbmF0ZWRVcmwoY3VzdG9tQWN0aW9uLmNvbmNhdEtleXMsIGN1c3RvbUFjdGlvbi51cmwsIHNlbGVjdGVkSXRlbSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZW1vdmVBbGxBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9ucztcbiAgICBpZiAodGhpcy5zaG93UmVtb3ZlKGFjdGlvbi5yZW1vdmVBbGwpKSB7XG4gICAgICB0aGlzLmRlZmF1bHRQYWdlQWN0aW9ucyA9IFtcbiAgICAgICAgLi4udGhpcy5fZGVmYXVsdFBhZ2VBY3Rpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblJlbW92ZUFsbCxcbiAgICAgICAgICBhY3Rpb246IHRoaXMuY29uZmlybVJlbW92ZUFsbC5iaW5kKHRoaXMsIGFjdGlvbi5yZW1vdmVBbGwsIGFjdGlvbi5iZWZvcmVSZW1vdmVBbGwpLFxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVSZW1vdmVBbGwuYmluZCh0aGlzKVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZVJlbW92ZUFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVBY3Rpb25zKGFjdGlvbnM6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnMpIHtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgY29uc3QgdmlzaWJsZVJlbW92ZSA9IHRoaXMuc2hvd1JlbW92ZShhY3Rpb25zLnJlbW92ZSk7XG4gICAgICB0aGlzLmRlZmF1bHRUYWJsZUFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IHRoaXMub3BlbkRldGFpbC5iaW5kKHRoaXMsIGFjdGlvbnMuZGV0YWlsKSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvblZpZXcsXG4gICAgICAgICAgdmlzaWJsZTogISF0aGlzLl9hY3Rpb25zLmRldGFpbFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiB0aGlzLm9wZW5FZGl0LmJpbmQodGhpcywgYWN0aW9ucy5lZGl0KSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkVkaXQsXG4gICAgICAgICAgdmlzaWJsZTogISF0aGlzLl9hY3Rpb25zLmVkaXRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogdGhpcy5vcGVuRHVwbGljYXRlLmJpbmQodGhpcywgYWN0aW9ucy5kdXBsaWNhdGUpLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLnRhYmxlQWN0aW9uRHVwbGljYXRlLFxuICAgICAgICAgIHZpc2libGU6ICEhdGhpcy5fYWN0aW9ucy5kdXBsaWNhdGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogdGhpcy5jb25maXJtUmVtb3ZlLmJpbmQodGhpcywgYWN0aW9ucy5yZW1vdmUsIGFjdGlvbnMuYmVmb3JlUmVtb3ZlKSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkRlbGV0ZSxcbiAgICAgICAgICBzZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgdmlzaWJsZTogdmlzaWJsZVJlbW92ZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGFGcm9tQVBJKCkge1xuICAgIGNvbnN0IHsgc2VydmljZUFwaTogc2VydmljZUFwaUZyb21Sb3V0ZSwgc2VydmljZU1ldGFkYXRhQXBpLCBzZXJ2aWNlTG9hZEFwaSB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhO1xuXG4gICAgY29uc3Qgb25Mb2FkID0gc2VydmljZUxvYWRBcGkgfHwgdGhpcy5vbkxvYWQ7XG4gICAgdGhpcy5zZXJ2aWNlQXBpID0gc2VydmljZUFwaUZyb21Sb3V0ZSB8fCB0aGlzLnNlcnZpY2VBcGk7XG5cbiAgICB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmNvbmZpZ1NlcnZpY2VBcGkoeyBlbmRwb2ludDogdGhpcy5zZXJ2aWNlQXBpLCBtZXRhZGF0YTogc2VydmljZU1ldGFkYXRhQXBpIH0pO1xuXG4gICAgY29uc3QgbWV0YWRhdGEkID0gdGhpcy5nZXRNZXRhZGF0YShzZXJ2aWNlQXBpRnJvbVJvdXRlLCBvbkxvYWQpO1xuICAgIGxldCBkYXRhJDtcbiAgICBpZiAodGhpcy5xdWlja1NlYXJjaFZhbHVlKSB7XG4gICAgICBjb25zdCBwYXJhbXNRdWlja1NlYXJjaFZhbHVlID0geyBbdGhpcy5xdWlja1NlYXJjaFBhcmFtXTogdGhpcy5xdWlja1NlYXJjaFZhbHVlIH07XG4gICAgICBkYXRhJCA9IHRoaXMubG9hZERhdGEocGFyYW1zUXVpY2tTZWFyY2hWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEkID0gdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBtZXRhZGF0YSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJzID0gdGhpcy5nZXRJbml0aWFsVmFsdWVzRnJvbUZpbHRlcigpO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGluaXRpYWxGaWx0ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsVmFsdWVzRnJvbUZpbHRlcigpIHtcbiAgICBjb25zdCBpbml0aWFsRmlsdGVycyA9IHRoaXMuZmlsdGVycy5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCBpdGVtKSA9PiBPYmplY3QuYXNzaWduKHJlc3VsdCwgeyBbaXRlbS5wcm9wZXJ0eV06IGl0ZW0uaW5pdFZhbHVlIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgT2JqZWN0LmtleXMoaW5pdGlhbEZpbHRlcnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaW5pdGlhbEZpbHRlcnNba2V5XSkge1xuICAgICAgICBkZWxldGUgaW5pdGlhbEZpbHRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpbml0aWFsRmlsdGVycztcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkOiBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uKSB7XG4gICAgaWYgKG9uTG9hZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9EeW5hbWljUGFnZU9wdGlvbnMob25Mb2FkKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2VQb09wdGlvbiA9PlxuICAgICAgICAgIHRoaXMucG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UuY2hhbmdlT3JpZ2luYWxPcHRpb25zVG9OZXdPcHRpb25zKHRoaXMsIHJlc3BvbnNlUG9PcHRpb24pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnM+IHtcbiAgICBjb25zdCBvcmlnaW5hbE9wdGlvbjogUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyA9IHtcbiAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICBhY3Rpb25zOiB0aGlzLmFjdGlvbnMsXG4gICAgICBicmVhZGNydW1iOiB0aGlzLmJyZWFkY3J1bWIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIGtlZXBGaWx0ZXJzOiB0aGlzLmtlZXBGaWx0ZXJzLFxuICAgICAgY29uY2F0RmlsdGVyczogdGhpcy5jb25jYXRGaWx0ZXJzLFxuICAgICAgaGlkZVJlbW92ZUFsbERpc2NsYWltZXI6IHRoaXMuaGlkZVJlbW92ZUFsbERpc2NsYWltZXIsXG4gICAgICBoaWRlQ2xvc2VEaXNjbGFpbWVyczogdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycyxcbiAgICAgIHBhZ2VDdXN0b21BY3Rpb25zOiB0aGlzLnBhZ2VDdXN0b21BY3Rpb25zLFxuICAgICAgdGFibGVDdXN0b21BY3Rpb25zOiB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucyxcbiAgICAgIHF1aWNrU2VhcmNoV2lkdGg6IHRoaXMucXVpY2tTZWFyY2hXaWR0aFxuICAgIH07XG5cbiAgICBjb25zdCBwYWdlT3B0aW9uU2NoZW1hOiBQb1BhZ2VEeW5hbWljT3B0aW9uc1NjaGVtYTxQb1BhZ2VEeW5hbWljVGFibGVPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdrZWVwRmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAncXVpY2tTZWFyY2hXaWR0aCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnY29uY2F0RmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnaGlkZVJlbW92ZUFsbERpc2NsYWltZXInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2hpZGVDbG9zZURpc2NsYWltZXJzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdwYWdlQ3VzdG9tQWN0aW9ucycsXG4gICAgICAgICAgbWVyZ2U6IHRydWUsXG4gICAgICAgICAga2V5Rm9yTWVyZ2U6ICdsYWJlbCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAndGFibGVDdXN0b21BY3Rpb25zJyxcbiAgICAgICAgICBtZXJnZTogdHJ1ZSxcbiAgICAgICAgICBrZXlGb3JNZXJnZTogJ2xhYmVsJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dSZW1vdmU8VD4oYWN0aW9uUmVtb3ZlOiBUKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWN0aW9uID0gYWN0aW9uUmVtb3ZlID8/IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJWYWx1ZShmaWx0ZXIpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMubWFwKGl0ZW0gPT4ge1xuICAgICAgaWYgKGZpbHRlci5oYXNPd25Qcm9wZXJ0eShpdGVtLnByb3BlcnR5KSkge1xuICAgICAgICBpdGVtLmluaXRWYWx1ZSA9IGZpbHRlcltpdGVtLnByb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFnZUFjdGlvbnMoKSB7XG4gICAgdGhpcy5wYWdlQWN0aW9ucyA9IFsuLi50aGlzLl9kZWZhdWx0UGFnZUFjdGlvbnMsIC4uLnRoaXMuX2N1c3RvbVBhZ2VMaXN0QWN0aW9uc107XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlQWN0aW9ucygpIHtcbiAgICBjb25zdCBkZWZhdWx0VGFibGVBY3Rpb25zV2l0aG91dEFjdGlvbkRlbGV0ZSA9IHRoaXMuX2RlZmF1bHRUYWJsZUFjdGlvbnMuZmlsdGVyKFxuICAgICAgdGFibGVBY3Rpb24gPT4gdGFibGVBY3Rpb24ubGFiZWwgIT09IHRoaXMubGl0ZXJhbHMudGFibGVBY3Rpb25EZWxldGVcbiAgICApO1xuXG4gICAgY29uc3QgdGFibGVBY3Rpb25EZWxldGUgPSB0aGlzLl9kZWZhdWx0VGFibGVBY3Rpb25zLmZpbmQoXG4gICAgICB0YWJsZUFjdGlvbiA9PiB0YWJsZUFjdGlvbi5sYWJlbCA9PT0gdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkRlbGV0ZVxuICAgICk7XG5cbiAgICBjb25zdCBuZXdUYWJsZUFjdGlvbnMgPSBbLi4uZGVmYXVsdFRhYmxlQWN0aW9uc1dpdGhvdXRBY3Rpb25EZWxldGUsIC4uLnRoaXMuX2N1c3RvbVRhYmxlQWN0aW9uc107XG5cbiAgICBpZiAodGFibGVBY3Rpb25EZWxldGUpIHtcbiAgICAgIG5ld1RhYmxlQWN0aW9ucy5wdXNoKHRhYmxlQWN0aW9uRGVsZXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlQWN0aW9ucyA9IG5ld1RhYmxlQWN0aW9ucztcbiAgfVxufVxuIiwiPHBvLXBhZ2UtZHluYW1pYy1zZWFyY2hcbiAgW3AtYWN0aW9uc109XCJwYWdlQWN0aW9uc1wiXG4gIFtwLWJyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXG4gIFtwLWhpZGUtY2xvc2UtZGlzY2xhaW1lcnNdPVwiaGlkZUNsb3NlRGlzY2xhaW1lcnNcIlxuICBbcC1maWx0ZXJzXT1cImZpbHRlcnNcIlxuICBbcC1rZWVwLWZpbHRlcnNdPVwia2VlcEZpbHRlcnNcIlxuICBbcC1saXRlcmFsc109XCJzZWFyY2hMaXRlcmFsc1wiXG4gIFtwLWNvbmNhdC1maWx0ZXJzXT1cImNvbmNhdEZpbHRlcnNcIlxuICBbcC1oaWRlLXJlbW92ZS1hbGwtZGlzY2xhaW1lcl09XCJoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lclwiXG4gIFtwLXF1aWNrLXNlYXJjaC13aWR0aF09XCJxdWlja1NlYXJjaFdpZHRoXCJcbiAgW3AtdGl0bGVdPVwidGl0bGVcIlxuICAocC1hZHZhbmNlZC1zZWFyY2gpPVwib25BZHZhbmNlZFNlYXJjaCgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLWRpc2NsYWltZXJzKT1cIm9uQ2hhbmdlRGlzY2xhaW1lcnMoJGV2ZW50KVwiXG4gIChwLXF1aWNrLXNlYXJjaCk9XCJvblF1aWNrU2VhcmNoKCRldmVudClcIlxuICBbcC1xdWljay1zZWFyY2gtdmFsdWVdPVwicXVpY2tTZWFyY2hWYWx1ZSB8fCAnJ1wiXG4+XG4gIDxwby10YWJsZVxuICAgIFtwLXNvcnRdPVwidHJ1ZVwiXG4gICAgW3AtaGlkZS10YWJsZS1zZWFyY2hdPVwidHJ1ZVwiXG4gICAgW3AtYWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxuICAgIFtwLWFjdGlvbnMtcmlnaHRdPVwiYWN0aW9uUmlnaHRcIlxuICAgIFtwLXNlbGVjdGFibGVdPVwiZW5hYmxlU2VsZWN0aW9uVGFibGVcIlxuICAgIFtwLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW3AtaXRlbXNdPVwiaXRlbXNcIlxuICAgIFtwLWhlaWdodF09XCJoZWlnaHRcIlxuICAgIFtwLWhpZGUtYmF0Y2gtYWN0aW9uc109XCJ0cnVlXCJcbiAgICBbcC1oaWRlLWNvbHVtbnMtbWFuYWdlcl09XCJoaWRlQ29sdW1uc01hbmFnZXJcIlxuICAgIFtwLWluZmluaXRlLXNjcm9sbF09XCJpbmZpbml0ZVNjcm9sbFwiXG4gICAgW3Atc2hvdy1tb3JlLWRpc2FibGVkXT1cIiFoYXNOZXh0XCJcbiAgICAocC1zaG93LW1vcmUpPVwic2hvd01vcmUoKVwiXG4gICAgKHAtc29ydC1ieSk9XCJvblNvcnQoJGV2ZW50KVwiXG4gICAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICAgIChwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXIpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbiAgICAocC1zb3J0LWJ5KT1cIm9uU29ydEJ5KCRldmVudClcIlxuICAgIFtwLWRyYWdnYWJsZV09XCJkcmFnZ2FibGVcIlxuICA+XG4gIDwvcG8tdGFibGU+XG48L3BvLXBhZ2UtZHluYW1pYy1zZWFyY2g+XG4iXX0=
|
|
1157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1keW5hbWljLXRhYmxlL3BvLXBhZ2UtZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS9wby1wYWdlLWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBUUwscUJBQXFCLEVBQ3JCLGVBQWUsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWV0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FB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QGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBQb0RpYWxvZ0NvbmZpcm1PcHRpb25zLFxuICBQb0RpYWxvZ1NlcnZpY2UsXG4gIFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFBvUGFnZUFjdGlvbixcbiAgUG9UYWJsZUFjdGlvbixcbiAgUG9UYWJsZUNvbHVtblNvcnQsXG4gIFBvVGFibGVDb2x1bW5Tb3J0VHlwZSxcbiAgcG9Mb2NhbGVEZWZhdWx0XG59IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0RldGFpbENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBhZ2UtZHluYW1pYy1kZXRhaWwvcG8tcGFnZS1keW5hbWljLWRldGFpbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtZHluYW1pYy9wby1wYWdlLWR5bmFtaWMuc2VydmljZSc7XG5pbXBvcnQgeyBpc0V4dGVybmFsTGluaywgb3BlbkV4dGVybmFsTGluaywgcmVtb3ZlRHVwbGljYXRlSXRlbXNXaXRoQXJyYXlLZXkgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscyB9IGZyb20gJy4uL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtY3VzdG9taXphdGlvbi9wby1wYWdlLWN1c3RvbWl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljT3B0aW9uc1NjaGVtYSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtZHluYW1pYy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1hY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVEZXRhaWwgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLWJlZm9yZS1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUR1cGxpY2F0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLWR1cGxpY2F0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRWRpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLWVkaXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZU5ldyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtYmVmb3JlLW5ldy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlUmVtb3ZlQWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1iZWZvcmUtcmVtb3ZlLWFsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlUmVtb3ZlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1iZWZvcmUtcmVtb3ZlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLWN1c3RvbS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbVRhYmxlQWN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1jdXN0b20tdGFibGUtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVNZXRhRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtdGFibGUtbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNMaXN0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLWxpc3QtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy10YWJsZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgcG9QYWdlRHluYW1pY1RhYmxlTGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtdGFibGUtbGl0ZXJhbHMnO1xuXG5jb25zdCBQQUdFX1NJWkVfREVGQVVMVCA9IDEwO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyk7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvUGFnZUR5bmFtaWNMaXN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLXBhZ2UtZHluYW1pYy10YWJsZWAgw6kgdW1hIHDDoWdpbmEgcXVlIGV4aWJlIHVtYSBsaXN0YSBkZSByZWdpc3Ryb3MgZW0gdW1hIHRhYmVsYSBiYXNlYWRvIGVtIHVtYSBsaXN0YSBkZSBmaWVsZHMsXG4gKiBvIG1lc21vIHRhbWLDqW0gc3Vwb3J0YSBtZXRhZGFkb3MgY29uZm9ybWUgZXNwZWNpZmljYWRvIG5hIGRvY3VtZW50YcOnw6NvLlxuICpcbiAqICMjIyBVdGlsaXphw6fDo28gdmlhIHJvdGFcbiAqXG4gKiBBbyB1dGlsaXphciBhcyByb3RhcyBwYXJhIGNhcnJlZ2FyIG8gdGVtcGxhdGUsIG8gYHBhZ2UtZHluYW1pYy10YWJsZWAgZGlzcG9uaWJpbGl6YSBwcm9wcmllZGFkZXMgcGFyYVxuICogcG9kZXIgZXNwZWNpZmljYXIgbyBlbmRwb2ludCBkb3MgZGFkb3MgZSBkb3MgbWV0YWRhZG9zLiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAqXG4gKiBPIGNvbXBvbmVudGUgcHJpbWVpcm8gaXLDoSBjYXJyZWdhciBvIG1ldGFkYWRvIGRhIHJvdGEgZGVmaW5pZGEgbmEgcHJvcHJpZWRhZGUgc2VydmljZU1ldGFkYXRhQXBpXG4gKiBlIGRlcG9pcyBpcsOhIGJ1c2NhciBkYSByb3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHNlcnZpY2VMb2FkQXBpXG4gKlxuICogPiBDYXNvIG8gc2Vydmlkb3IgcmV0b3JuYXIgdW0gZXJybyBhbyByZWN1cGVyYXIgbyBtZXRhZGFkb3MsIHNlcsOhIHJlcGFzc2FkbyBvIG1ldGFkYWRvcyBzYWx2byBlbSBjYWNoZSxcbiAqIHNlIG8gY2FjaGUgbsOjbyBleGlzdGUgc2Vyw6EgZGlzcGFyYWRvIHVtYSBub3RpZmljYcOnw6NvLlxuICpcbiAqIGBgYFxuICoge1xuICogICBwYXRoOiAncGVvcGxlJyxcbiAqICAgY29tcG9uZW50OiBQb1BhZ2VEeW5hbWljVGFibGVDb21wb25lbnQsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzZXJ2aWNlQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3Blb3BsZScsIC8vIGVuZHBvaW50IGRvcyBkYWRvc1xuICogICAgIHNlcnZpY2VNZXRhZGF0YUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9tZXRhZGF0YScsIC8vIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBHZXRcbiAqICAgICBzZXJ2aWNlTG9hZEFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9sb2FkLW1ldGFkYXRhJyAvLyBlbmRwb2ludCBkZSBjdXN0b21pemHDp8O1ZXMgZG9zIG1ldGFkYWRvcyB1dGlsaXphbmRvIG8gbcOpdG9kbyBIVFRQIFBvc3RcbiAqICAgfVxuICogfVxuICpcbiAqIGBgYFxuICpcbiAqIEEgcmVxdWlzacOnw6NvIGRvcyBtZXRhZGFkb3Mgw6kgZmVpdGEgbmEgaW5pY2lhbGl6YcOnw6NvIGRvIHRlbXBsYXRlIHBhcmEgYnVzY2FyIG9zIG1ldGFkYWRvcyBkYSBww6FnaW5hIHBhc3NhbmRvIG9cbiAqIHRpcG8gZG8gbWV0YWRhZG8gZXNwZXJhZG8gZSBhIHZlcnPDo28gY2FjaGVhZGEgcGVsbyBicm93c2VyLlxuICpcbiAqIE8gZm9ybWF0byBlc3BlcmFkbyBuYSByZXNwb3N0YSBkYSByZXF1aXNpw6fDo28gZXN0w6EgZXNwZWNpZmljYWRvIG5hIGludGVyZmFjZVxuICogW1BvUGFnZUR5bmFtaWNUYWJsZU1ldGFkYXRhXSgvZG9jdW1lbnRhdGlvbi9wby1wYWdlLWR5bmFtaWMtdGFibGUjcG8tcGFnZS1keW5hbWljLXRhYmxlLW1ldGFkYXRhKS4gUG9yIGV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiAge1xuICogICB2ZXJzaW9uOiAxLFxuICogICB0aXRsZTogJ1BlcnNvbiBUYWJsZScsXG4gKiAgIGZpZWxkczogW1xuICogICAgIHsgcHJvcGVydHk6ICdpZCcsIGtleTogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnc3RhdHVzJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICduYW1lJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICduaWNrbmFtZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnYmlydGhkYXRlJywgbGFiZWw6ICdCaXJ0aCBkYXRlJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICdnZW5yZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnY2l0eScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnY291bnRyeScgfVxuICogICBdLFxuICogICBrZWVwRmlsdGVyczogdHJ1ZVxuICogfVxuICogYGBgXG4gKlxuICogPiBDYXNvIG8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvcyBuw6NvIHNlamEgZXNwZWNpZmljYWRvLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIHV0aWxpemFuZG8gbyBgc2VydmljZUFwaWAgZGEgc2VndWludGUgZm9ybWE6XG4gKiBgYGBcbiAqIEdFVCB7ZW5kLXBvaW50fS9tZXRhZGF0YT90eXBlPWxpc3QmdmVyc2lvbj17dmVyc2lvbn1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gUGFnZSBEeW5hbWljIFRhYmxlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtdGFibGUtcGVvcGxlXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgVGFibGUgLSBQZW9wbGVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1wZW9wbGUvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1wZW9wbGUuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXBlb3BsZS9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXBlb3BsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBUYWJsZSAtIFVzZXJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS11c2Vycy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS11c2Vycy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLXVzZXJzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtdXNlcnMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1ob3RlbHNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBUYWJsZSAtIEhvdGVsc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWhvdGVscy9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWhvdGVscy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtaG90ZWxzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtaG90ZWxzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy10YWJsZS1kcmFnLWFuZC1kcm9wXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgVGFibGUgLSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtdGFibGUtZHJhZy1hbmQtZHJvcC9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWRyYWctYW5kLWRyb3AuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXRhYmxlLWRyYWctYW5kLWRyb3Avc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy10YWJsZS1kcmFnLWFuZC1kcm9wLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXBhZ2UtZHluYW1pYy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb1BhZ2VEeW5hbWljU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUG9QYWdlRHluYW1pY1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgUG9QYWdlRHluYW1pY0xpc3RCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRnVuw6fDo28gb3Ugc2VydmnDp28gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBzdHJpbmdgOiAqRW5kcG9pbnQqIHVzYWRvIHBlbG8gY29tcG9uZW50ZSBwYXJhIHJlcXVpc2nDp8OjbyB2aWEgYFBPU1RgLlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogTyByZXRvcm5vIGRlc3RhIGZ1bsOnw6NvIGRldmUgc2VyIGRvIHRpcG8gYFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnNgLFxuICAgKiBvbmRlIG8gdXN1w6FyaW8gcG9kZXLDoSBjdXN0b21pemFyIG5vdm9zIGNhbXBvcywgYnJlYWRjcnVtYiwgdGl0bGUgZSBhY3Rpb25zXG4gICAqXG4gICAqIFBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogZ2V0UGFnZU9wdGlvbnMoKTogUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczpcbiAgICogICAgIHsgbmV3OiAnbmV3JywgZWRpdDogJ2VkaXQvOmlkJywgcmVtb3ZlOiB0cnVlIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljVGFibGVPcHRpb25zKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW50w6ltIG5hIG1vZGFsIGRlIGBCdXNjYSBBdmFuw6dhZGFgIG9zIHZhbG9yZXMgcHJlZW5jaGlkb3MgZG8gw7psdGltbyBmaWx0cm8gcmVhbGl6YWRvIHBlbG8gdXN1w6FyaW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1rZWVwLWZpbHRlcnMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkga2VlcEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgY29sdW5hIGRlIGHDp8O1ZXMgZmljYXLDoSBubyBsYWRvIGRpcmVpdG8gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYWN0aW9ucy1yaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhY3Rpb25SaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSB1dGlsaXphw6fDo28gZGEgcGVzcXVpc2EgcsOhcGlkYSBqdW50byBjb20gYSBwZXNxdWlzYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqIERlc3RhIGZvcm1hLCBhbyB0ZXIgdW1hIHBlc3F1aXNhIGF2YW7Dp2FkYSBlc3RhYmVsZWNpZGEgZSBzZXJcbiAgICogcHJlZW5jaGlkbyBhIHBlc3F1aXNhIHLDoXBpZGEsIG8gZmlsdHJvIHNlcsOhIGNvbmNhdGVuYWRvIGFkaWNpb25hbmRvIGEgcGVzcXVpc2FcbiAgICogcsOhcGlkYSB0YW1iw6ltIG5hIGxpc3RhIGRlIGBkaXNjbGFpbWVyc2AgYSBhcGxpY2FuZG8gdW1hIG5vdmEgYnVzY2EgY29tIGEgY29uY2F0ZW5hw6fDo28uXG4gICAqXG4gICAqIFBvciBleGVtcGxvLCBjb20gb3Mgc2VndWludGVzIGZpbHRyb3MgYXBsaWNhZG9zOlxuICAgKiAgIC0gZmlsdHJvIGF2YW7Dp2FkbzogYHsgbmFtZTogJ01pa2UnLCBhZ2U6ICcxMicgfWBcbiAgICogICAtIGZpbHRybyByw6FwaWRvOiBgeyBzZWFyY2g6ICdwYXBlcicgfWBcbiAgICpcbiAgICogQSByZXF1aXNpw6fDo28gZG9zIGRhZG9zIG5hIEFQSSBmaWNhcsOhIGNvbSBvcyBwYXLDom1ldHJvczpcbiAgICogYGBgXG4gICAqIHBhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPU1pa2UmYWdlPTEyJnNlYXJjaD1wYXBlclxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNvbmNhdC1maWx0ZXJzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNvbmNhdEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMsIHJlc3BvbnPDoXZlbCBwZWxhIGRlZmluacOnw6NvIGRlIHF1YWlzIGNvbHVuYXMgc2Vyw6NvIGV4aWJpZGFzLCBzZWphIGVzY29uZGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtY29sdW1ucy1tYW5hZ2VyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pXG4gIGhpZGVDb2x1bW5zTWFuYWdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9jdWx0YSBvIGJvdMOjbyBwYXJhIHJlbW92ZXIgdG9kb3Mgb3MgKmRpc2NsYWltZXJzKiBkbyBncnVwby5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbywgbyBtZXNtbyDDqSBleGliaWRvIMOgIHBhcnRpciBkZSBkb2lzIG91IG1haXMgKmRpc2NsYWltZXJzKiBjb20gYSBvcMOnw6NvIGBoaWRlQ2xvc2VgIGhhYmlsaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXJlbW92ZS1hbGwtZGlzY2xhaW1lcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZSBvIGJvdMOjbyBcIkNhcnJlZ2FyIE1haXNcIiBkZWl4YXLDoSBkZSBzZXIgZXhpYmlkby4gQW8gY2hlZ2FyIG5vIGZpbSBkYSB0YWJlbGFcbiAgICogZXhlY3V0YXLDoSBhIGZ1bsOnw6NvIGBwLXNob3ctbW9yZWAuXG4gICAqXG4gICAqICoqUmVncmFzIGRlIHV0aWxpemHDp8OjbzoqKlxuICAgKiAgLSBPIHNjcm9sbCBpbmZpbml0byBzw7MgZnVuY2lvbmEgcGFyYSB0YWJlbGFzIHF1ZSB1dGlsaXphbSBhIHByb3ByaWVkYWRlIGBwLWhlaWdodGAgZSBxdWUgcG9zc3VlbSBvIHNjcm9sbCBqw6EgbmEgY2FyZ2EgaW5pY2lhbCBkb3MgZGFkb3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBoYXNOZXh0ID0gZmFsc2U7XG4gIGl0ZW1zID0gW107XG4gIGxpdGVyYWxzO1xuICBwYWdlQWN0aW9uczogQXJyYXk8UG9QYWdlQWN0aW9uPiA9IFtdO1xuICB0YWJsZUFjdGlvbnM6IEFycmF5PFBvVGFibGVBY3Rpb24+ID0gW107XG5cbiAgcHJpdmF0ZSBfYWN0aW9uczogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucyA9IHt9O1xuICBwcml2YXRlIF9wYWdlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tQWN0aW9uPiA9IFtdO1xuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfb2xkUXVpY2tTZWFyY2hQYXJhbTogc3RyaW5nO1xuICBwcml2YXRlIF9xdWlja1NlYXJjaFBhcmFtOiBzdHJpbmcgPSAnc2VhcmNoJztcbiAgcHJpdmF0ZSBfcXVpY2tTZWFyY2hWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF9xdWlja1NlYXJjaFdpZHRoOiBudW1iZXI7XG4gIHByaXZhdGUgX3RhYmxlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tVGFibGVBY3Rpb24+ID0gW107XG5cbiAgcHJpdmF0ZSBwYWdlOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBwcml2YXRlIGl0ZW1TZWxlY3RlZEFjdGlvbjtcbiAgcHJpdmF0ZSBwYXJhbXMgPSB7fTtcbiAgcHJpdmF0ZSBzb3J0ZWRDb2x1bW46IFBvVGFibGVDb2x1bW5Tb3J0O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgaGFzQ3VzdG9tQWN0aW9uV2l0aFNlbGVjdGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jdXN0b21QYWdlTGlzdEFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfY3VzdG9tVGFibGVBY3Rpb25zOiBBcnJheTxQb1RhYmxlQWN0aW9uPiA9IFtdO1xuICBwcml2YXRlIF9kZWZhdWx0UGFnZUFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfZGVmYXVsdFRhYmxlQWN0aW9uczogQXJyYXk8UG9UYWJsZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfaGlkZUNsb3NlRGlzY2xhaW1lcnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzZXQgZGVmYXVsdFBhZ2VBY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VBY3Rpb24+KSB7XG4gICAgdGhpcy5fZGVmYXVsdFBhZ2VBY3Rpb25zID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVQYWdlQWN0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZGVmYXVsdFRhYmxlQWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl9kZWZhdWx0VGFibGVBY3Rpb25zID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVUYWJsZUFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGN1c3RvbVBhZ2VMaXN0QWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9QYWdlQWN0aW9uPikge1xuICAgIHRoaXMuX2N1c3RvbVBhZ2VMaXN0QWN0aW9ucyA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlUGFnZUFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGN1c3RvbVRhYmxlQWN0aW9ucyh2YWx1ZTogQXJyYXk8UG9UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl9jdXN0b21UYWJsZUFjdGlvbnMgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlQWN0aW9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQcOnw7VlcyBkYSBww6FnaW5hIGUgZGEgdGFiZWxhLlxuICAgKiA+IENhc28gdXRpbGl6YXIgYSBhw6fDo28gcGFkcsOjbyBkZSBleGNsdWlyLCBhIG1lc21hIHNlcsOhIGV4aWJpZGEgcG9yIMO6bHRpbW8gbmEgdGFiZWxhLlxuICAgKi9cbiAgQElucHV0KCdwLWFjdGlvbnMnKSBzZXQgYWN0aW9ucyh2YWx1ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucykge1xuICAgIHRoaXMuX2FjdGlvbnMgPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAwID8gdmFsdWUgOiB7fTtcblxuICAgIHRoaXMuc2V0UGFnZUFjdGlvbnModGhpcy5hY3Rpb25zKTtcbiAgICB0aGlzLnNldFJlbW92ZUFsbEFjdGlvbigpO1xuICAgIHRoaXMuc2V0VGFibGVBY3Rpb25zKHRoaXMuYWN0aW9ucyk7XG4gIH1cblxuICBnZXQgYWN0aW9ucygpOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGHDp8O1ZXMgY3VzdG9taXphZGFzIGRhIHDDoWdpbmEgcXVlIHNlcsOjbyBpbmNvcnBvcmFkYXMgw6BzIGHDp8O1ZXNcbiAgICogaW5mb3JtYWRhcyBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBgcC1hY3Rpb25zYC5cbiAgICpcbiAgICogRXNzYXMgYcOnw7VlcyBmaWNhbSBsb2NhbGl6YWRhcyBuYSBwYXJ0ZSBzdXBlcmlvciBkYSBww6FnaW5hIGVtIGJvdMO1ZXMgY29tIGHDp8O1ZXMuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgdXRpbGl6YcOnw6NvOlxuICAgKiBgYGBcbiAgICogW1xuICAgKiAgeyBsYWJlbDogJ0V4cG9ydCcsIGFjdGlvbjogdGhpcy5leHBvcnQuYmluZCh0aGlzKSB9LFxuICAgKiAgeyBsYWJlbDogJ1ByaW50JywgYWN0aW9uOiB0aGlzLnByaW50LmJpbmQodGhpcykgfVxuICAgKiBdO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1wYWdlLWN1c3RvbS1hY3Rpb25zJykgc2V0IHBhZ2VDdXN0b21BY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24+KSB7XG4gICAgdGhpcy5fcGFnZUN1c3RvbUFjdGlvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB0aGlzLmN1c3RvbVBhZ2VMaXN0QWN0aW9ucyA9IHRoaXMudHJhbnNmb3JtQ3VzdG9tQWN0aW9uc1RvUGFnZUxpc3RBY3Rpb24odGhpcy5wYWdlQ3VzdG9tQWN0aW9ucyk7XG4gICAgdGhpcy5oYXNDdXN0b21BY3Rpb25XaXRoU2VsZWN0YWJsZSA9IHRoaXMucGFnZUN1c3RvbUFjdGlvbnMuc29tZShjdXN0b21BY3Rpb24gPT4gY3VzdG9tQWN0aW9uLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgZ2V0IHBhZ2VDdXN0b21BY3Rpb25zKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbUFjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9wYWdlQ3VzdG9tQWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGHDp8O1ZXMgY3VzdG9taXphZGFzIG5hIHRhYmVsYSBkYSBww6FnaW5hIHF1ZSBzZXLDo28gaW5jb3Jwb3JhZGFzIMOgcyBhw6fDtWVzXG4gICAqIGluZm9ybWFkYXMgYXRyYXbDqXMgZGEgcHJvcHJpZWRhZGUgYHAtYWN0aW9uc2AuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgdXRpbGl6YcOnw6NvOlxuICAgKiBgYGBcbiAgICogW1xuICAgKiAgeyBsYWJlbDogJ0FwcGx5IGRpc2NvdW50JywgYWN0aW9uOiB0aGlzLmFwcGx5RGlzY291bnQuYmluZCh0aGlzKSB9LFxuICAgKiAgeyBsYWJlbDogJ0RldGFpbHMnLCBhY3Rpb246IHRoaXMuZGV0YWlscy5iaW5kKHRoaXMpIH1cbiAgICogXTtcbiAgICogYGBgXG4gICAqID4gQ2FzbyB1dGlsaXphciBhIGHDp8OjbyBwYWRyw6NvIGRlIGV4Y2x1aXIsIGEgbWVzbWEgc2Vyw6EgZXhpYmlkYSBwb3Igw7psdGltbyBuYSB0YWJlbGEuXG4gICAqL1xuICBASW5wdXQoJ3AtdGFibGUtY3VzdG9tLWFjdGlvbnMnKSBzZXQgdGFibGVDdXN0b21BY3Rpb25zKHZhbHVlOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl90YWJsZUN1c3RvbUFjdGlvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB0aGlzLmN1c3RvbVRhYmxlQWN0aW9ucyA9IHRoaXMudHJhbnNmb3JtVGFibGVDdXN0b21BY3Rpb25zVG9UYWJsZUFjdGlvbnModGhpcy50YWJsZUN1c3RvbUFjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHRhYmxlQ3VzdG9tQWN0aW9ucygpOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21UYWJsZUFjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZUN1c3RvbUFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMYXJndXJhIGRvIGNhbXBvIGRlIGJ1c2NhLCB1dGlsaXphbmRvIG8gKkdyaWQgU3lzdGVtKixcbiAgICogZSBsaW1pdGFkbyBhbyBtw6F4aW1vIGRlIDYgY29sdW5hcy4gTyB0YW1hbmhvIG3DrW5pbW8gw6kgY29udHJvbGFkb1xuICAgKiBjb25mb3JtZSByZXNvbHXDp8OjbyBkZSB0ZWxhIHBhcmEgbWFudGVyIGEgY29uc2lzdMOqbmNpYSBkbyBsYXlvdXQuXG4gICAqL1xuICBASW5wdXQoJ3AtcXVpY2stc2VhcmNoLXdpZHRoJykgc2V0IHF1aWNrU2VhcmNoV2lkdGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3F1aWNrU2VhcmNoV2lkdGggPSB1dGlsLmNvbnZlcnRUb0ludCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFdpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgYWx0dXJhIGRhIHRhYmVsYSBlbSAqcGl4ZWxzKiBlIGZpeGEgbyBjYWJlw6dhbGhvLlxuICAgKi9cbiAgQElucHV0KCdwLWhlaWdodCcpIHNldCBoZWlnaHQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2hlaWdodCA9IHV0aWwuY29udmVydFRvSW50KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgZmlsdHJvcyBxdWUgdGVyw6NvIGEgb3DDp8OjbyBkZSBmZWNoYXIgb2N1bHRhZGFcbiAgICogZW0gc2V1IHJlc3BlY3Rpdm8gZGlzY2xhaW1lci4gVXRpbGl6YXIgbyBhdHJpYnV0byBgcHJvcGVydHlgIGRvIGNhbXBvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAgICogYGBgXG4gICAqIFsnY2l0eScsJ25hbWUnXTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1jbG9zZS1kaXNjbGFpbWVycycpIHNldCBoaWRlQ2xvc2VEaXNjbGFpbWVycyh2YWx1ZTogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuX2hpZGVDbG9zZURpc2NsYWltZXJzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICB9XG5cbiAgZ2V0IGhpZGVDbG9zZURpc2NsYWltZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlQ2xvc2VEaXNjbGFpbWVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIElkZW50aWZpY2Fkb3IgZG8gcGFyw6JtZXRybyBlbnZpYWRvIGFvIHNlcnZpw6dvIGFvIHJlYWxpemFyIHVtYSBidXNjYSByw6FwaWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnc2VhcmNoJ1xuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC1wYXJhbScpIHNldCBxdWlja1NlYXJjaFBhcmFtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9xdWlja1NlYXJjaFBhcmFtID0gdmFsdWUgPz8gJ3NlYXJjaCc7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hQYXJhbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFBhcmFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVmFsb3IgcGFkcsOjbyBuYSBidXNjYSByw6FwaWRhIGFvIGluaWNpYWxpemFyIG8gY29tcG9uZW50ZVxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC12YWx1ZScpIHNldCBxdWlja1NlYXJjaFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9xdWlja1NlYXJjaFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgcXVpY2tTZWFyY2hWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9xdWlja1NlYXJjaFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy10YWJsZWAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscyA9IHtcbiAgICogICAgZGlzY2xhaW1lckdyb3VwVGl0bGU6ICdGaWx0cm9zIGFwbGljYWRvczonLFxuICAgKiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRybyBhdmFuw6dhZG8nLFxuICAgKiAgICBmaWx0ZXJDYW5jZWxMYWJlbDogJ0ZlY2hhcicsXG4gICAqICAgIGZpbHRlckNvbmZpcm1MYWJlbDogJ0FwbGljYXInLFxuICAgKiAgICBxdWlja1NlYXJjaExhYmVsOiAnVmFsb3IgcGVzcXVpc2FkbzonLFxuICAgKiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1Blc3F1aXNlIGFxdWknXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzID0ge1xuICAgKiAgICBmaWx0ZXJUaXRsZTogJ0ZpbHRybyBhdmFuw6dhZG8nXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtdGFibGVcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtZHluYW1pYy10YWJsZT5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyB2YWxvciBwYWRyw6NvIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGNvbmZpZ3VyYWRvIG5vIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91ICpicm93c2VyKi5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNlYXJjaExpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHM7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgbyBtb2RvIGRyYWcgYW5kIGRyb3AgcGFyYSBhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1kcmFnZ2FibGUnKSBzZXQgZHJhZ2dhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnZ2FibGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcG9EaWFsb2dTZXJ2aWNlOiBQb0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb05vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlRHluYW1pY1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2U6IFBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcblxuICAgIHRoaXMubGl0ZXJhbHMgPSB7XG4gICAgICAuLi5wb1BhZ2VEeW5hbWljVGFibGVMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgIC4uLnBvUGFnZUR5bmFtaWNUYWJsZUxpdGVyYWxzRGVmYXVsdFtsYW5ndWFnZV1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRGF0YUZyb21BUEkoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25BZHZhbmNlZFNlYXJjaChmaWx0ZXIpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEoeyBwYWdlOiAxLCAuLi5maWx0ZXIgfSkuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMucGFyYW1zID0gZmlsdGVyO1xuXG4gICAgaWYgKHRoaXMua2VlcEZpbHRlcnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZURpc2NsYWltZXJzKGRpc2NsYWltZXJzKSB7XG4gICAgY29uc3QgZmlsdGVyID0ge307XG5cbiAgICBkaXNjbGFpbWVycy5mb3JFYWNoKGRpc2NsYWltZXIgPT4ge1xuICAgICAgZmlsdGVyW2Rpc2NsYWltZXIucHJvcGVydHldID0gZGlzY2xhaW1lci52YWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMub25BZHZhbmNlZFNlYXJjaChmaWx0ZXIpO1xuICB9XG5cbiAgb25RdWlja1NlYXJjaCh0ZXJtVHlwZWRJblF1aWNrU2VhcmNoKSB7XG4gICAgY29uc3QgcXVpY2tTZWFyY2hQYXJhbSA9IHRlcm1UeXBlZEluUXVpY2tTZWFyY2ggPyB7IFt0aGlzLnF1aWNrU2VhcmNoUGFyYW1dOiB0ZXJtVHlwZWRJblF1aWNrU2VhcmNoIH0gOiB7fTtcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuY29uY2F0RmlsdGVycyA/IHsgLi4udGhpcy5wYXJhbXMsIC4uLnF1aWNrU2VhcmNoUGFyYW0gfSA6IHsgLi4ucXVpY2tTZWFyY2hQYXJhbSB9O1xuXG4gICAgaWYgKHRoaXMuX29sZFF1aWNrU2VhcmNoUGFyYW0gaW4gdGhpcy5wYXJhbXMgJiYgdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbSAhPT0gdGhpcy5xdWlja1NlYXJjaFBhcmFtKSB7XG4gICAgICBkZWxldGUgdGhpcy5wYXJhbXNbdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbV07XG4gICAgfVxuXG4gICAgdGhpcy5fb2xkUXVpY2tTZWFyY2hQYXJhbSA9IHRoaXMucXVpY2tTZWFyY2hQYXJhbTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEodGVybVR5cGVkSW5RdWlja1NlYXJjaCA/IHsgcGFnZTogMSwgLi4udGhpcy5wYXJhbXMgfSA6IHVuZGVmaW5lZCkuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgb25Tb3J0KHNvcnRlZENvbHVtbjogUG9UYWJsZUNvbHVtblNvcnQpIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIGNvbnN0IG9yZGVyID0gc29ydGVkQ29sdW1uLnR5cGUgPT09ICdhc2NlbmRpbmcnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdXRpbC5zb3J0QXJyYXlPZk9iamVjdHModGhpcy5pdGVtcywgc29ydGVkQ29sdW1uLmNvbHVtbi5wcm9wZXJ0eSwgb3JkZXIpO1xuICAgIH1cbiAgICB0aGlzLnNvcnRlZENvbHVtbiA9IHNvcnRlZENvbHVtbjtcbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnModmFsdWUpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2libGVDb2x1bW5zLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblNvcnRCeShzb3J0ZWRDb2x1bW46IFBvVGFibGVDb2x1bW5Tb3J0KSB7XG4gICAgdGhpcy5zb3J0QnkuZW1pdChzb3J0ZWRDb2x1bW4pO1xuICB9XG5cbiAgc2hvd01vcmUoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmxvYWREYXRhKHsgcGFnZTogKyt0aGlzLnBhZ2UsIC4uLnRoaXMucGFyYW1zIH0pLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldCBlbmFibGVTZWxlY3Rpb25UYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBY3Rpb25SZW1vdmVBbGwgfHwgdGhpcy5oYXNDdXN0b21BY3Rpb25XaXRoU2VsZWN0YWJsZTtcbiAgfVxuXG4gIGdldCBoYXNBY3Rpb25SZW1vdmVBbGwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3Rpb25zLnJlbW92ZUFsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgcmVhbGl6YSBhIGF0dWFsaXphw6fDo28gZG9zIGRhZG9zIGRhIHRhYmVsYS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyBjYXB0dXJhciBhIGluc3TDom5jaWEgZG8gYHBhZ2UgZHluYW1pYyB0YWJsZWAsIGNvbW8gcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYCBodG1sXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtdGFibGUgI2R5bmFtaWNUYWJsZSBbcC1zZXJ2aWNlLWFwaV09XCJzZXJ2aWNlQXBpXCI+PC9wby1wYWdlLWR5bmFtaWMtdGFibGU+XG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGAgamF2YXNjcmlwdFxuICAgKiBpbXBvcnQgeyBQb1BhZ2VEeW5hbWljVGFibGVDb21wb25lbnQsIFBvRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoJ2R5bmFtaWNUYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNUYWJsZTogUG9QYWdlRHluYW1pY1RhYmxlQ29tcG9uZW50O1xuICAgKlxuICAgKiBwYWdlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tQWN0aW9uPiA9IFtcbiAgICoge1xuICAgKiAgIGxhYmVsOiAnVXBkYXRlJyxcbiAgICogICBhY3Rpb246IHRoaXMudXBkYXRlVGFibGUuYmluZCh0aGlzKSxcbiAgICogICBpY29uOiAncG8taWNvbi1yZWZyZXNoJ1xuICAgKiB9XVxuICAgKlxuICAgKiB1cGRhdGVUYWJsZSgpIHtcbiAgICogICB0aGlzLmR5bmFtaWNUYWJsZS51cGRhdGVEYXRhVGFibGUoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICpcbiAgICogQHBhcmFtIHt7cGFnZTogbnVtYmVyLCBrZXk6IHZhbHVlIH19IGZpbHRlciBQcm9wcmllZGFkZSBwYXJhIGVudmlvIGRlIHVtIGZpbHRybyBjdXN0b21pemFkby5cbiAgICogRXhlbXBsbyBkZSBlbnZpbzpcbiAgICpcbiAgICpgYGBcbiAgICogdGhpcy5keW5hbWljVGFibGUudXBkYXRlRGF0YVRhYmxlKHtwYWdlOiAzLCBzZWFyY2g6ICdCcmFzaWwnfSk7XG4gICAqIGBgYFxuICAgKiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIGZpbHRybyBjdXN0b21pemFkbyBwYXJhIG8gbcOpdG9kbyBgdXBkYXRlRGF0YVRhYmxlYCBhIHRhYmVsYSBzZXLDoSBhdHVhbGl6YWRhIGNvbmZvcm1lIGEgcMOhZ2luYSBkbyB1bHRpbW8gaXRlbSBtb2RpZmljYWRvLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURhdGFUYWJsZShmaWx0ZXI/OiBhbnkpIHtcbiAgICBjb25zdCBpbmRleEl0ZW1TZWxlY3RlZCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5pdGVtU2VsZWN0ZWRBY3Rpb24pO1xuICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBNYXRoLmZsb29yKGluZGV4SXRlbVNlbGVjdGVkIC8gUEFHRV9TSVpFX0RFRkFVTFQpO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyIDwgMCA/IHRoaXMuY3VycmVudFBhZ2UgOiBwYWdlTnVtYmVyICsgMTtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubG9hZERhdGEoZmlsdGVyKS5zdWJzY3JpYmUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5sb2FkRGF0YSh7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIC4uLnRoaXMucGFyYW1zIH0pLnN1YnNjcmliZSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpcm1SZW1vdmUoXG4gICAgYWN0aW9uUmVtb3ZlOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmUnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmU6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZSddLFxuICAgIGl0ZW1cbiAgKSB7XG4gICAgY29uc3QgY29uZmlybU9wdGlvbnM6IFBvRGlhbG9nQ29uZmlybU9wdGlvbnMgPSB7XG4gICAgICB0aXRsZTogdGhpcy5saXRlcmFscy5jb25maXJtUmVtb3ZlVGl0bGUsXG4gICAgICBtZXNzYWdlOiB0aGlzLmxpdGVyYWxzLmNvbmZpcm1SZW1vdmVNZXNzYWdlLFxuICAgICAgY29uZmlybTogdGhpcy5yZW1vdmUuYmluZCh0aGlzLCBpdGVtLCBhY3Rpb25SZW1vdmUsIGFjdGlvbkJlZm9yZVJlbW92ZSlcbiAgICB9O1xuXG4gICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybShjb25maXJtT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpcm1SZW1vdmVBbGwoXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmUnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZSddXG4gICkge1xuICAgIGNvbnN0IGNvbmZpcm1PcHRpb25zOiBQb0RpYWxvZ0NvbmZpcm1PcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuY29uZmlybVJlbW92ZUFsbFRpdGxlLFxuICAgICAgbWVzc2FnZTogdGhpcy5saXRlcmFscy5jb25maXJtUmVtb3ZlQWxsTWVzc2FnZSxcbiAgICAgIGNvbmZpcm06IHRoaXMucmVtb3ZlQWxsLmJpbmQodGhpcywgYWN0aW9uUmVtb3ZlQWxsLCBhY3Rpb25CZWZvcmVSZW1vdmVBbGwpXG4gICAgfTtcblxuICAgIHRoaXMucG9EaWFsb2dTZXJ2aWNlLmNvbmZpcm0oY29uZmlybU9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRVbmlxdWVLZXkoaXRlbSkge1xuICAgIGNvbnN0IGtleXMgPSB1dGlsLm1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCB0aGlzLmtleXMpO1xuXG4gICAgcmV0dXJuIHV0aWwudmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldE9yZGVyUGFyYW0oc29ydGVkQ29sdW1uOiBQb1RhYmxlQ29sdW1uU29ydCA9IHsgdHlwZTogdW5kZWZpbmVkIH0pIHtcbiAgICBjb25zdCB7IGNvbHVtbiwgdHlwZSB9ID0gc29ydGVkQ29sdW1uO1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiB7IG9yZGVyOiBgLSR7Y29sdW1uLnByb3BlcnR5fWAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBvcmRlcjogYCR7Y29sdW1uLnByb3BlcnR5fWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEocGFyYW1zOiB7IHBhZ2U/OiBudW1iZXI7IHNlYXJjaD86IHN0cmluZyB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZUFwaSkge1xuICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmxpdGVyYWxzLmxvYWREYXRhRXJyb3JOb3RpZmljYXRpb24pO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyUGFyYW0gPSB0aGlzLmdldE9yZGVyUGFyYW0odGhpcy5zb3J0ZWRDb2x1bW4pO1xuICAgIGNvbnN0IGRlZmF1bHRQYXJhbXM6IGFueSA9IHsgcGFnZTogMSwgcGFnZVNpemU6IFBBR0VfU0laRV9ERUZBVUxUIH07XG4gICAgY29uc3QgZnVsbFBhcmFtczogYW55ID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5wYXJhbXMsIC4uLm9yZGVyUGFyYW0gfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlcyhmdWxsUGFyYW1zKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgbGV0IG5ld0FycmF5O1xuICAgICAgICBpZiAoZnVsbFBhcmFtcy5wYWdlID09PSAxKSB7XG4gICAgICAgICAgbmV3QXJyYXkgPSByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleShyZXNwb25zZS5pdGVtcywgcmVzcG9uc2UuaXRlbXMsIHRoaXMua2V5cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3QXJyYXkgPSByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleSh0aGlzLml0ZW1zLCByZXNwb25zZS5pdGVtcywgdGhpcy5rZXlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1zID0gbmV3QXJyYXkgPyBbLi4ubmV3QXJyYXldIDogdGhpcy5pdGVtcztcbiAgICAgICAgdGhpcy5wYWdlID0gZnVsbFBhcmFtcy5wYWdlO1xuICAgICAgICB0aGlzLmhhc05leHQgPSByZXNwb25zZS5oYXNOZXh0O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZXRhZGF0YShcbiAgICBzZXJ2aWNlQXBpRnJvbVJvdXRlOiBzdHJpbmcsXG4gICAgb25Mb2FkOiBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uXG4gICk6IE9ic2VydmFibGU8UG9QYWdlRHluYW1pY1RhYmxlTWV0YURhdGE+IHtcbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY1RhYmxlTWV0YURhdGE+KCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmF1dG9Sb3V0ZXIgPSByZXNwb25zZS5hdXRvUm91dGVyIHx8IHRoaXMuYXV0b1JvdXRlcjtcbiAgICAgICAgICB0aGlzLmFjdGlvbnMgPSByZXNwb25zZS5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucztcbiAgICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSByZXNwb25zZS5icmVhZGNydW1iIHx8IHRoaXMuYnJlYWRjcnVtYjtcbiAgICAgICAgICB0aGlzLmZpZWxkcyA9IHJlc3BvbnNlLmZpZWxkcyB8fCB0aGlzLmZpZWxkcztcbiAgICAgICAgICB0aGlzLnRpdGxlID0gcmVzcG9uc2UudGl0bGUgfHwgdGhpcy50aXRsZTtcbiAgICAgICAgICB0aGlzLnBhZ2VDdXN0b21BY3Rpb25zID0gcmVzcG9uc2UucGFnZUN1c3RvbUFjdGlvbnMgfHwgdGhpcy5wYWdlQ3VzdG9tQWN0aW9ucztcbiAgICAgICAgICB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucyA9IHJlc3BvbnNlLnRhYmxlQ3VzdG9tQWN0aW9ucyB8fCB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucztcbiAgICAgICAgICB0aGlzLmtlZXBGaWx0ZXJzID0gcmVzcG9uc2Uua2VlcEZpbHRlcnMgfHwgdGhpcy5rZWVwRmlsdGVycztcbiAgICAgICAgICB0aGlzLmNvbmNhdEZpbHRlcnMgPSByZXNwb25zZS5jb25jYXRGaWx0ZXJzIHx8IHRoaXMuY29uY2F0RmlsdGVycztcbiAgICAgICAgICB0aGlzLmhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyID0gcmVzcG9uc2UuaGlkZVJlbW92ZUFsbERpc2NsYWltZXIgfHwgdGhpcy5oaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjtcbiAgICAgICAgICB0aGlzLmhpZGVDbG9zZURpc2NsYWltZXJzID0gcmVzcG9uc2UuaGlkZUNsb3NlRGlzY2xhaW1lcnMgfHwgdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycztcbiAgICAgICAgICB0aGlzLnF1aWNrU2VhcmNoV2lkdGggPSByZXNwb25zZS5xdWlja1NlYXJjaFdpZHRoIHx8IHRoaXMucXVpY2tTZWFyY2hXaWR0aDtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZCk7XG4gIH1cblxuICAvLyBAdG9kbyBWYWxpZGFyIHJvdGFzIG5hIG3Do28gcG9pcyBzZSBleGlzdGlyIHVtYSByb3RhICcqKicgbyBjYXRjaCBkbyBuYXZpZ2F0aW9uIG7Do28gZnVuY2lvbmEuXG4gIHByaXZhdGUgbmF2aWdhdGVUbyhcbiAgICByb3V0ZTogeyBwYXRoOiBzdHJpbmc7IGNvbXBvbmVudD87IHVybD86IHN0cmluZzsgcGFyYW1zPzogYW55IH0sXG4gICAgZm9yY2VTdG9wQXV0b1JvdXRlcjogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZS51cmwgfHwgcm91dGUucGF0aF0sIHsgcXVlcnlQYXJhbXM6IHJvdXRlLnBhcmFtcyB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAoZm9yY2VTdG9wQXV0b1JvdXRlciB8fCAhdGhpcy5hdXRvUm91dGVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3V0ZXIuY29uZmlnLnVuc2hpZnQoPFJvdXRlPntcbiAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgY29tcG9uZW50OiByb3V0ZS5jb21wb25lbnQsXG4gICAgICAgIGRhdGE6IHsgc2VydmljZUFwaTogdGhpcy5zZXJ2aWNlQXBpLCBhdXRvUm91dGVyOiB0cnVlIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm5hdmlnYXRlVG8ocm91dGUsIHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25jYXRlbmF0ZWRVcmwoY29uY2F0S2V5czogYm9vbGVhbiwgdXJsOiBzdHJpbmcsIHNlbGVjdGVkSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5cyA9IHRoaXMua2V5cy5tYXAoa2V5ID0+IGVuY29kZVVSSUNvbXBvbmVudChzZWxlY3RlZEl0ZW1ba2V5XSkpLmpvaW4oKTtcbiAgICByZXR1cm4gY29uY2F0S2V5cyA/IGAke3VybH0vJHtrZXlzfWAgOiB1cmw7XG4gIH1cblxuICBwcml2YXRlIG9wZW5EZXRhaWwoYWN0aW9uOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkZXRhaWwnXSwgaXRlbSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2VcbiAgICAgICAgLmJlZm9yZURldGFpbCh0aGlzLmFjdGlvbnMuYmVmb3JlRGV0YWlsLCBpZCwgaXRlbSlcbiAgICAgICAgLnN1YnNjcmliZSgoYmVmb3JlRGV0YWlsUmVzdWx0OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVEZXRhaWwpID0+XG4gICAgICAgICAgdGhpcy5leGVjdXRlRGV0YWlsKGFjdGlvbiwgYmVmb3JlRGV0YWlsUmVzdWx0LCBpZCwgaXRlbSlcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVEZXRhaWwoXG4gICAgYWN0aW9uOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkZXRhaWwnXSxcbiAgICBiZWZvcmVEZXRhaWxSZXN1bHQ/OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcsXG4gICAgaWQ/OiBzdHJpbmcsXG4gICAgaXRlbT86IGFueVxuICApIHtcbiAgICBjb25zdCBiZWZvcmUgPSBiZWZvcmVEZXRhaWxSZXN1bHQgPz8ge307XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSB0eXBlb2YgYmVmb3JlLmFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBiZWZvcmUuYWxsb3dBY3Rpb24gOiB0cnVlO1xuICAgIGNvbnN0IHsgbmV3VXJsIH0gPSBiZWZvcmU7XG5cbiAgICBpZiAoYWxsb3dBY3Rpb24gJiYgYWN0aW9uKSB7XG4gICAgICBpZiAobmV3VXJsKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGhGcm9tTmV3VXJsKG5ld1VybCwgaWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aCB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb2x2ZVVybChpdGVtLCBhY3Rpb24pO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oeyBwYXRoOiBhY3Rpb24sIHVybCwgY29tcG9uZW50OiBQb1BhZ2VEeW5hbWljRGV0YWlsQ29tcG9uZW50IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uKGlkLCBpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhGcm9tTmV3VXJsKG5ld1VybDogc3RyaW5nLCBpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAobmV3VXJsLmluY2x1ZGVzKCc6aWQnKSkge1xuICAgICAgcmV0dXJuIG5ld1VybC5yZXBsYWNlKC86aWQvZywgaWQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3VXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHVwbGljYXRlKGFjdGlvbkR1cGxpY2F0ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snZHVwbGljYXRlJ10sIGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG4gICAgY29uc3QgZHVwbGljYXRlcyA9IHV0aWwucmVtb3ZlS2V5c1Byb3BlcnRpZXModGhpcy5rZXlzLCB1dGlsLm1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCB0aGlzLmR1cGxpY2F0ZXMpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVEdXBsaWNhdGUodGhpcy5hY3Rpb25zLmJlZm9yZUR1cGxpY2F0ZSwgaWQsIGR1cGxpY2F0ZXMpXG4gICAgICAgIC5zdWJzY3JpYmUoKGJlZm9yZUR1cGxpY2F0ZVJlc3VsdDogUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRHVwbGljYXRlKSA9PlxuICAgICAgICAgIHRoaXMuZXhlY3V0ZUR1cGxpY2F0ZShhY3Rpb25EdXBsaWNhdGUsIGJlZm9yZUR1cGxpY2F0ZVJlc3VsdCwgZHVwbGljYXRlcylcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVEdXBsaWNhdGUoXG4gICAgYWN0aW9uRHVwbGljYXRlOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydkdXBsaWNhdGUnXSxcbiAgICBiZWZvcmVEdXBsaWNhdGVSZXN1bHQ6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUR1cGxpY2F0ZSxcbiAgICBkdXBsaWNhdGVzOiBhbnlcbiAgKSB7XG4gICAgY29uc3QgYmVmb3JlID0gYmVmb3JlRHVwbGljYXRlUmVzdWx0ID8/IHt9O1xuICAgIGNvbnN0IGFsbG93QWN0aW9uID0gdHlwZW9mIGJlZm9yZS5hbGxvd0FjdGlvbiA9PT0gJ2Jvb2xlYW4nID8gYmVmb3JlLmFsbG93QWN0aW9uIDogdHJ1ZTtcbiAgICBjb25zdCBiZWZvcmVEdXBsaWNhdGVSZXNvdXJjZSA9IGJlZm9yZS5yZXNvdXJjZTtcbiAgICBjb25zdCBuZXdBY3Rpb24gPSBiZWZvcmUubmV3VXJsID8/IGFjdGlvbkR1cGxpY2F0ZTtcblxuICAgIGlmIChhbGxvd0FjdGlvbiAmJiBhY3Rpb25EdXBsaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgYmVmb3JlRHVwbGljYXRlUmVzb3VyY2UgPT09ICdvYmplY3QnICYmIGJlZm9yZUR1cGxpY2F0ZVJlc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgIGR1cGxpY2F0ZXMgPSB1dGlsLnJlbW92ZUtleXNQcm9wZXJ0aWVzKHRoaXMua2V5cywgYmVmb3JlRHVwbGljYXRlUmVzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5ld0FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVUbyh7IHBhdGg6IG5ld0FjdGlvbiwgcGFyYW1zOiB7IGR1cGxpY2F0ZTogSlNPTi5zdHJpbmdpZnkoZHVwbGljYXRlcykgfSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld0FjdGlvbihkdXBsaWNhdGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0KGFjdGlvbkVkaXQ6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2VkaXQnXSwgaXRlbSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlRWRpdCh0aGlzLmFjdGlvbnMuYmVmb3JlRWRpdCwgaWQsIGl0ZW0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoYmVmb3JlRWRpdFJlc3VsdDogUG9QYWdlRHluYW1pY1RhYmxlQmVmb3JlRWRpdCkgPT5cbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUVkaXRBY3Rpb24oYWN0aW9uRWRpdCwgYmVmb3JlRWRpdFJlc3VsdCwgaXRlbSwgaWQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVFZGl0QWN0aW9uKFxuICAgIGFjdGlvbjogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snZWRpdCddLFxuICAgIGJlZm9yZUVkaXRSZXN1bHQ6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZUVkaXQsXG4gICAgaXRlbTogYW55LFxuICAgIGlkOiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgbmV3RWRpdEFjdGlvbiA9IGJlZm9yZUVkaXRSZXN1bHQ/Lm5ld1VybCA/PyBhY3Rpb247XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSBiZWZvcmVFZGl0UmVzdWx0Py5hbGxvd0FjdGlvbiA/PyB0cnVlO1xuXG4gICAgaWYgKCFhbGxvd0FjdGlvbikge1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmV3RWRpdEFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMub3BlbkVkaXRVcmwobmV3RWRpdEFjdGlvbiwgaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRJdGVtID0gbmV3RWRpdEFjdGlvbihpZCwgaXRlbSk7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZWRJdGVtID09PSAnb2JqZWN0JyAmJiB1cGRhdGVkSXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1vZGlmeVVJVGFibGVJdGVtKGl0ZW0sIHV0aWwucmVtb3ZlS2V5c1Byb3BlcnRpZXModGhpcy5rZXlzLCB1cGRhdGVkSXRlbSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkVkaXRVcmwocGF0aDogc3RyaW5nLCBpdGVtKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yZXNvbHZlVXJsKGl0ZW0sIHBhdGgpO1xuXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aCwgdXJsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RpZnlVSVRhYmxlSXRlbShjdXJyZW50SXRlbSwgbmV3SXRlbVZhbHVlKSB7XG4gICAgY29uc3QgdGFibGVJdGVtID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBjdXJyZW50SXRlbSk7XG4gICAgdGhpcy5pdGVtc1t0YWJsZUl0ZW1dID0geyAuLi5jdXJyZW50SXRlbSwgLi4ubmV3SXRlbVZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5OZXcoYWN0aW9uTmV3OiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWyduZXcnXSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVOZXcodGhpcy5hY3Rpb25zLmJlZm9yZU5ldylcbiAgICAgICAgLnN1YnNjcmliZSgoYmVmb3JlTmV3UmVzdWx0OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcpID0+IHRoaXMuZXhlY3V0ZU5ldyhhY3Rpb25OZXcsIGJlZm9yZU5ld1Jlc3VsdCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZU5ldyhhY3Rpb25OZXc6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ25ldyddLCBiZWZvcmVOZXdSZXN1bHQ/OiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVOZXcpIHtcbiAgICBjb25zdCBiZWZvcmUgPSBiZWZvcmVOZXdSZXN1bHQgPz8ge307XG4gICAgY29uc3QgYWxsb3dBY3Rpb24gPSB0eXBlb2YgYmVmb3JlLmFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBiZWZvcmUuYWxsb3dBY3Rpb24gOiB0cnVlO1xuICAgIGNvbnN0IHsgbmV3VXJsIH0gPSBiZWZvcmU7XG5cbiAgICBpZiAoYWxsb3dBY3Rpb24gJiYgYWN0aW9uTmV3KSB7XG4gICAgICBpZiAobmV3VXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlVG8oeyBwYXRoOiBuZXdVcmwgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uTmV3ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aDogYWN0aW9uTmV3IH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWN0aW9uTmV3KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhc28gZXhpc3RhIG1haXMgZGUgdW0gaWRlbnRpZmljYWRvciwgc2Vyw6EgY29uY2F0ZW5hZG8gY29tICd8Jy5cbiAgICpcbiAgICogRXg6IHsgaWQ6IDEsIGNvbXBhbnk6ICdwbycgfVxuICAgKlxuICAgKiBQYXJhIG8gZW5kcG9pbnQgL3Jlc291cmNlcy86aWQgc2Vyw6EgZXhlY3V0YWRhIGEgdXJsIC9yZXNvdXJjZXMvMXxwb1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmUoXG4gICAgaXRlbSxcbiAgICBhY3Rpb25SZW1vdmU6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ3JlbW92ZSddLFxuICAgIGFjdGlvbkJlZm9yZVJlbW92ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1snYmVmb3JlUmVtb3ZlJ11cbiAgKSB7XG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlUmVtb3ZlKGFjdGlvbkJlZm9yZVJlbW92ZSwgdW5pcXVlS2V5LCBpdGVtKVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoYmVmb3JlUmVtb3ZlID0+IHRoaXMuZGVsZXRlQWN0aW9uKGl0ZW0sIGFjdGlvblJlbW92ZSwgYmVmb3JlUmVtb3ZlKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUFjdGlvbihcbiAgICBpdGVtLFxuICAgIGFjdGlvblJlbW92ZTogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1sncmVtb3ZlJ10sXG4gICAgYmVmb3JlUmVtb3ZlOiBQb1BhZ2VEeW5hbWljVGFibGVCZWZvcmVSZW1vdmVcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB7IGFsbG93QWN0aW9uLCBuZXdVcmwgfSA9IGJlZm9yZVJlbW92ZSB8fCB7fTtcbiAgICBjb25zdCBhbGxvdyA9IGFsbG93QWN0aW9uID8/IHRydWU7XG5cbiAgICBpZiAoYWxsb3cpIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKTtcbiAgICAgIGNvbnN0IHJlc291cmNlVG9SZW1vdmVLZXkgPSB0aGlzLnJldHVyblJlc291cmNlc0tleXMoW2l0ZW1dKTtcblxuICAgICAgaWYgKHR5cGVvZiBhY3Rpb25SZW1vdmUgPT09ICdib29sZWFuJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgdW5pcXVlS2V5ID0gbmV3VXJsID8gdW5kZWZpbmVkIDogdW5pcXVlS2V5O1xuICAgICAgICByZXR1cm4gdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZVxuICAgICAgICAgIC5kZWxldGVSZXNvdXJjZSh1bmlxdWVLZXksIG5ld1VybClcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy5yZW1vdmVGcm9tVUkocmVzb3VyY2VUb1JlbW92ZUtleSwgdGhpcy5saXRlcmFscy5yZW1vdmVTdWNjZXNzTm90aWZpY2F0aW9uKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2YoYWN0aW9uUmVtb3ZlKHVuaXF1ZUtleSwgaXRlbSkpLnBpcGUoXG4gICAgICAgIHRhcChyZW1vdmUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbW92ZUl0ZW0gPSByZW1vdmUgPz8gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tVUkocmVzb3VyY2VUb1JlbW92ZUtleSwgdGhpcy5saXRlcmFscy5yZW1vdmVTdWNjZXNzTm90aWZpY2F0aW9uLCByZW1vdmVJdGVtKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRnJvbVVJKGl0ZW1zOiBBcnJheTxhbnk+LCBtZXNzYWdlOiBzdHJpbmcsIHJlbW92ZSA9IHRydWUpIHtcbiAgICBpZiAocmVtb3ZlID09PSB0cnVlICYmIGl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVtb3ZlTG9jYWxJdGVtcyhpdGVtcyk7XG4gICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3MobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBbGwoXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmVBbGwnXSxcbiAgICBhY3Rpb25CZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNbJ2JlZm9yZVJlbW92ZUFsbCddXG4gICkge1xuICAgIGNvbnN0IG9yaWdpbmFsUmVzb3VyY2VzS2V5cyA9IHRoaXMuZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zU2VydmljZVxuICAgICAgICAuYmVmb3JlUmVtb3ZlQWxsKGFjdGlvbkJlZm9yZVJlbW92ZUFsbCwgb3JpZ2luYWxSZXNvdXJjZXNLZXlzKVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoYmVmb3JlUmVtb3ZlID0+IHRoaXMuZGVsZXRlQWxsQWN0aW9uKGFjdGlvblJlbW92ZUFsbCwgYmVmb3JlUmVtb3ZlLCBvcmlnaW5hbFJlc291cmNlc0tleXMpKSlcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCk7XG5cbiAgICBpZiAocmVzb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXR1cm5SZXNvdXJjZXNLZXlzKHJlc291cmNlcyk7XG4gIH1cblxuICBwcml2YXRlIHJldHVyblJlc291cmNlc0tleXMocmVzb3VyY2VzKSB7XG4gICAgcmV0dXJuIHV0aWwubWFwQXJyYXlCeVByb3BlcnRpZXMocmVzb3VyY2VzLCB0aGlzLmtleXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVBbGxBY3Rpb24oXG4gICAgYWN0aW9uUmVtb3ZlQWxsOiBQb1BhZ2VEeW5hbWljVGFibGVBY3Rpb25zWydyZW1vdmVBbGwnXSxcbiAgICBiZWZvcmVSZW1vdmVBbGw6IFBvUGFnZUR5bmFtaWNUYWJsZUJlZm9yZVJlbW92ZUFsbCxcbiAgICBvcmlnaW5hbFJlc291cmNlczogQXJyYXk8YW55PlxuICApIHtcbiAgICBjb25zdCB7IGFsbG93QWN0aW9uLCBuZXdVcmwsIHJlc291cmNlcyB9ID0gYmVmb3JlUmVtb3ZlQWxsID8/IHt9O1xuICAgIGNvbnN0IGFsbG93ID0gYWxsb3dBY3Rpb24gPz8gdHJ1ZTtcbiAgICBjb25zdCByZXNvdXJjZXN0b0RlbGV0ZSA9IHJlc291cmNlcyA/PyBvcmlnaW5hbFJlc291cmNlcztcblxuICAgIGlmIChhbGxvdyAmJiBBcnJheS5pc0FycmF5KHJlc291cmNlc3RvRGVsZXRlKSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3Rpb25SZW1vdmVBbGwgPT09ICdib29sZWFuJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZGVsZXRlUmVzb3VyY2VzKHJlc291cmNlc3RvRGVsZXRlLCBuZXdVcmwpLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbVVJKHJlc291cmNlc3RvRGVsZXRlLCB0aGlzLmxpdGVyYWxzLnJlbW92ZUFsbFN1Y2Nlc3NOb3RpZmljYXRpb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2YoYWN0aW9uUmVtb3ZlQWxsKHJlc291cmNlc3RvRGVsZXRlKSkucGlwZShcbiAgICAgICAgdGFwKHJlbW92ZUl0ZW1zID0+IHRoaXMucmVtb3ZlRnJvbVVJKHJlbW92ZUl0ZW1zLCB0aGlzLmxpdGVyYWxzLnJlbW92ZVN1Y2Nlc3NOb3RpZmljYXRpb24pKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMb2NhbEl0ZW1zKGl0ZW1zS2V5c1RvUmVtb3ZlID0gW10pIHtcbiAgICBpZiAoaXRlbXNLZXlzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKTtcbiAgICAgICAgcmV0dXJuICFpdGVtc0tleXNUb1JlbW92ZS5maW5kKGl0ZW1LZXlUb1JlbW92ZSA9PiB1dGlsLnZhbHVlc0Zyb21PYmplY3QoaXRlbUtleVRvUmVtb3ZlKS5qb2luKCd8JykgPT09IGl0ZW1LZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVXJsKGl0ZW06IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5mb3JtYXRVbmlxdWVLZXkoaXRlbSk7XG5cbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC86aWQvZywgdW5pcXVlS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFnZUFjdGlvbnMoYWN0aW9uczogUG9QYWdlRHluYW1pY1RhYmxlQWN0aW9ucykge1xuICAgIGlmIChhY3Rpb25zPy5uZXcpIHtcbiAgICAgIHRoaXMuZGVmYXVsdFBhZ2VBY3Rpb25zID0gW3sgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvbiwgYWN0aW9uOiB0aGlzLm9wZW5OZXcuYmluZCh0aGlzLCBhY3Rpb25zLm5ldykgfV07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DdXN0b21BY3Rpb25zVG9QYWdlTGlzdEFjdGlvbihcbiAgICBjdXN0b21BY3Rpb25zOiBBcnJheTxQb1BhZ2VEeW5hbWljVGFibGVDdXN0b21BY3Rpb24+XG4gICk6IEFycmF5PFBvUGFnZUFjdGlvbj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIGN1c3RvbUFjdGlvbnMubWFwKGN1c3RvbUFjdGlvbiA9PiAoe1xuICAgICAgbGFiZWw6IGN1c3RvbUFjdGlvbi5sYWJlbCxcbiAgICAgIGFjdGlvbjogdGhpcy5jYWxsUGFnZUN1c3RvbUFjdGlvbi5iaW5kKHRoaXMsIGN1c3RvbUFjdGlvbiksXG4gICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVQYWdlQ3VzdG9tQWN0aW9uLmJpbmQodGhpcywgY3VzdG9tQWN0aW9uKSxcbiAgICAgIC4uLihjdXN0b21BY3Rpb24uaWNvbiAmJiB7IGljb246IGN1c3RvbUFjdGlvbi5pY29uIH0pLFxuICAgICAgdmlzaWJsZTogY3VzdG9tQWN0aW9uLnZpc2libGVcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVRhYmxlQ3VzdG9tQWN0aW9uc1RvVGFibGVBY3Rpb25zKFxuICAgIHRhYmxlQ3VzdG9tQWN0aW9uczogQXJyYXk8UG9QYWdlRHluYW1pY1RhYmxlQ3VzdG9tVGFibGVBY3Rpb24+XG4gICk6IEFycmF5PFBvVGFibGVBY3Rpb24+IHtcbiAgICByZXR1cm4gdGFibGVDdXN0b21BY3Rpb25zLm1hcCh0YWJsZUN1c3RvbUFjdGlvbiA9PiAoe1xuICAgICAgbGFiZWw6IHRhYmxlQ3VzdG9tQWN0aW9uLmxhYmVsLFxuICAgICAgaWNvbjogdGFibGVDdXN0b21BY3Rpb24uaWNvbixcbiAgICAgIGFjdGlvbjogdGhpcy5jYWxsVGFibGVDdXN0b21BY3Rpb24uYmluZCh0aGlzLCB0YWJsZUN1c3RvbUFjdGlvbiksXG4gICAgICBkaXNhYmxlZDogdGFibGVDdXN0b21BY3Rpb24uZGlzYWJsZWQsXG4gICAgICB2aXNpYmxlOiB0YWJsZUN1c3RvbUFjdGlvbi52aXNpYmxlXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Rpc2FibGVQYWdlQ3VzdG9tQWN0aW9uKGN1c3RvbUFjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjdXN0b21BY3Rpb24uc2VsZWN0YWJsZSAmJiAhdGhpcy5nZXRTZWxlY3RlZEl0ZW1zS2V5cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsUGFnZUN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb246IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbUFjdGlvbikge1xuICAgIGlmIChjdXN0b21BY3Rpb24uYWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gY3VzdG9tQWN0aW9uLnNlbGVjdGFibGUgPyB0aGlzLmdldFNlbGVjdGVkSXRlbXNLZXlzKCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHNlbmRDdXN0b21BY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5jdXN0b21BY3Rpb24oY3VzdG9tQWN0aW9uLmFjdGlvbiwgc2VsZWN0ZWRJdGVtcylcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHNlbmRDdXN0b21BY3Rpb25TdWJzY3JpcHRpb24pO1xuICAgIH0gZWxzZSBpZiAoY3VzdG9tQWN0aW9uLnVybCkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvKHsgcGF0aDogY3VzdG9tQWN0aW9uLnVybCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGxUYWJsZUN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb246IFBvUGFnZUR5bmFtaWNUYWJsZUN1c3RvbVRhYmxlQWN0aW9uLCBzZWxlY3RlZEl0ZW0pIHtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZEFjdGlvbiA9IHNlbGVjdGVkSXRlbTtcbiAgICBpZiAoY3VzdG9tQWN0aW9uLmFjdGlvbikge1xuICAgICAgY29uc3Qgc2VuZEN1c3RvbUFjdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucG9QYWdlRHluYW1pY1RhYmxlQWN0aW9uc1NlcnZpY2VcbiAgICAgICAgLmN1c3RvbUFjdGlvbihjdXN0b21BY3Rpb24uYWN0aW9uLCBzZWxlY3RlZEl0ZW0pXG4gICAgICAgIC5zdWJzY3JpYmUodXBkYXRlZEl0ZW0gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZEl0ZW0gPT09ICdvYmplY3QnICYmIHVwZGF0ZWRJdGVtICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGlmeVVJVGFibGVJdGVtKHNlbGVjdGVkSXRlbSwgdXRpbC5yZW1vdmVLZXlzUHJvcGVydGllcyh0aGlzLmtleXMsIHVwZGF0ZWRJdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzZW5kQ3VzdG9tQWN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGN1c3RvbUFjdGlvbi51cmwpIHtcbiAgICAgIGlmIChpc0V4dGVybmFsTGluayhjdXN0b21BY3Rpb24udXJsKSkge1xuICAgICAgICBvcGVuRXh0ZXJuYWxMaW5rKHRoaXMuY3JlYXRlQ29uY2F0ZW5hdGVkVXJsKGN1c3RvbUFjdGlvbi5jb25jYXRLZXlzLCBjdXN0b21BY3Rpb24udXJsLCBzZWxlY3RlZEl0ZW0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyh7XG4gICAgICAgICAgcGF0aDogdGhpcy5jcmVhdGVDb25jYXRlbmF0ZWRVcmwoY3VzdG9tQWN0aW9uLmNvbmNhdEtleXMsIGN1c3RvbUFjdGlvbi51cmwsIHNlbGVjdGVkSXRlbSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZW1vdmVBbGxBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9ucztcbiAgICBpZiAodGhpcy5zaG93UmVtb3ZlKGFjdGlvbi5yZW1vdmVBbGwpKSB7XG4gICAgICB0aGlzLmRlZmF1bHRQYWdlQWN0aW9ucyA9IFtcbiAgICAgICAgLi4udGhpcy5fZGVmYXVsdFBhZ2VBY3Rpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblJlbW92ZUFsbCxcbiAgICAgICAgICBhY3Rpb246IHRoaXMuY29uZmlybVJlbW92ZUFsbC5iaW5kKHRoaXMsIGFjdGlvbi5yZW1vdmVBbGwsIGFjdGlvbi5iZWZvcmVSZW1vdmVBbGwpLFxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVSZW1vdmVBbGwuYmluZCh0aGlzKVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZVJlbW92ZUFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZ2V0U2VsZWN0ZWRJdGVtc0tleXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVBY3Rpb25zKGFjdGlvbnM6IFBvUGFnZUR5bmFtaWNUYWJsZUFjdGlvbnMpIHtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgY29uc3QgdmlzaWJsZVJlbW92ZSA9IHRoaXMuc2hvd1JlbW92ZShhY3Rpb25zLnJlbW92ZSk7XG4gICAgICB0aGlzLmRlZmF1bHRUYWJsZUFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IHRoaXMub3BlbkRldGFpbC5iaW5kKHRoaXMsIGFjdGlvbnMuZGV0YWlsKSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvblZpZXcsXG4gICAgICAgICAgdmlzaWJsZTogISF0aGlzLl9hY3Rpb25zLmRldGFpbFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiB0aGlzLm9wZW5FZGl0LmJpbmQodGhpcywgYWN0aW9ucy5lZGl0KSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkVkaXQsXG4gICAgICAgICAgdmlzaWJsZTogISF0aGlzLl9hY3Rpb25zLmVkaXRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogdGhpcy5vcGVuRHVwbGljYXRlLmJpbmQodGhpcywgYWN0aW9ucy5kdXBsaWNhdGUpLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLnRhYmxlQWN0aW9uRHVwbGljYXRlLFxuICAgICAgICAgIHZpc2libGU6ICEhdGhpcy5fYWN0aW9ucy5kdXBsaWNhdGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogdGhpcy5jb25maXJtUmVtb3ZlLmJpbmQodGhpcywgYWN0aW9ucy5yZW1vdmUsIGFjdGlvbnMuYmVmb3JlUmVtb3ZlKSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkRlbGV0ZSxcbiAgICAgICAgICBzZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgdmlzaWJsZTogdmlzaWJsZVJlbW92ZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGFGcm9tQVBJKCkge1xuICAgIGNvbnN0IHsgc2VydmljZUFwaTogc2VydmljZUFwaUZyb21Sb3V0ZSwgc2VydmljZU1ldGFkYXRhQXBpLCBzZXJ2aWNlTG9hZEFwaSB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhO1xuXG4gICAgY29uc3Qgb25Mb2FkID0gc2VydmljZUxvYWRBcGkgfHwgdGhpcy5vbkxvYWQ7XG4gICAgdGhpcy5zZXJ2aWNlQXBpID0gc2VydmljZUFwaUZyb21Sb3V0ZSB8fCB0aGlzLnNlcnZpY2VBcGk7XG5cbiAgICB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmNvbmZpZ1NlcnZpY2VBcGkoeyBlbmRwb2ludDogdGhpcy5zZXJ2aWNlQXBpLCBtZXRhZGF0YTogc2VydmljZU1ldGFkYXRhQXBpIH0pO1xuXG4gICAgY29uc3QgbWV0YWRhdGEkID0gdGhpcy5nZXRNZXRhZGF0YShzZXJ2aWNlQXBpRnJvbVJvdXRlLCBvbkxvYWQpO1xuICAgIGxldCBkYXRhJDtcbiAgICBpZiAodGhpcy5xdWlja1NlYXJjaFZhbHVlKSB7XG4gICAgICBjb25zdCBwYXJhbXNRdWlja1NlYXJjaFZhbHVlID0geyBbdGhpcy5xdWlja1NlYXJjaFBhcmFtXTogdGhpcy5xdWlja1NlYXJjaFZhbHVlIH07XG4gICAgICBkYXRhJCA9IHRoaXMubG9hZERhdGEocGFyYW1zUXVpY2tTZWFyY2hWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEkID0gdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBtZXRhZGF0YSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJzID0gdGhpcy5nZXRJbml0aWFsVmFsdWVzRnJvbUZpbHRlcigpO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGluaXRpYWxGaWx0ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsVmFsdWVzRnJvbUZpbHRlcigpIHtcbiAgICBjb25zdCBpbml0aWFsRmlsdGVycyA9IHRoaXMuZmlsdGVycy5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCBpdGVtKSA9PiBPYmplY3QuYXNzaWduKHJlc3VsdCwgeyBbaXRlbS5wcm9wZXJ0eV06IGl0ZW0uaW5pdFZhbHVlIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgT2JqZWN0LmtleXMoaW5pdGlhbEZpbHRlcnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaW5pdGlhbEZpbHRlcnNba2V5XSkge1xuICAgICAgICBkZWxldGUgaW5pdGlhbEZpbHRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpbml0aWFsRmlsdGVycztcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkOiBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uKSB7XG4gICAgaWYgKG9uTG9hZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9EeW5hbWljUGFnZU9wdGlvbnMob25Mb2FkKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2VQb09wdGlvbiA9PlxuICAgICAgICAgIHRoaXMucG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UuY2hhbmdlT3JpZ2luYWxPcHRpb25zVG9OZXdPcHRpb25zKHRoaXMsIHJlc3BvbnNlUG9PcHRpb24pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNUYWJsZU9wdGlvbnM+IHtcbiAgICBjb25zdCBvcmlnaW5hbE9wdGlvbjogUG9QYWdlRHluYW1pY1RhYmxlT3B0aW9ucyA9IHtcbiAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICBhY3Rpb25zOiB0aGlzLmFjdGlvbnMsXG4gICAgICBicmVhZGNydW1iOiB0aGlzLmJyZWFkY3J1bWIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIGtlZXBGaWx0ZXJzOiB0aGlzLmtlZXBGaWx0ZXJzLFxuICAgICAgY29uY2F0RmlsdGVyczogdGhpcy5jb25jYXRGaWx0ZXJzLFxuICAgICAgaGlkZVJlbW92ZUFsbERpc2NsYWltZXI6IHRoaXMuaGlkZVJlbW92ZUFsbERpc2NsYWltZXIsXG4gICAgICBoaWRlQ2xvc2VEaXNjbGFpbWVyczogdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycyxcbiAgICAgIHBhZ2VDdXN0b21BY3Rpb25zOiB0aGlzLnBhZ2VDdXN0b21BY3Rpb25zLFxuICAgICAgdGFibGVDdXN0b21BY3Rpb25zOiB0aGlzLnRhYmxlQ3VzdG9tQWN0aW9ucyxcbiAgICAgIHF1aWNrU2VhcmNoV2lkdGg6IHRoaXMucXVpY2tTZWFyY2hXaWR0aFxuICAgIH07XG5cbiAgICBjb25zdCBwYWdlT3B0aW9uU2NoZW1hOiBQb1BhZ2VEeW5hbWljT3B0aW9uc1NjaGVtYTxQb1BhZ2VEeW5hbWljVGFibGVPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdrZWVwRmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAncXVpY2tTZWFyY2hXaWR0aCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnY29uY2F0RmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnaGlkZVJlbW92ZUFsbERpc2NsYWltZXInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2hpZGVDbG9zZURpc2NsYWltZXJzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdwYWdlQ3VzdG9tQWN0aW9ucycsXG4gICAgICAgICAgbWVyZ2U6IHRydWUsXG4gICAgICAgICAga2V5Rm9yTWVyZ2U6ICdsYWJlbCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAndGFibGVDdXN0b21BY3Rpb25zJyxcbiAgICAgICAgICBtZXJnZTogdHJ1ZSxcbiAgICAgICAgICBrZXlGb3JNZXJnZTogJ2xhYmVsJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dSZW1vdmU8VD4oYWN0aW9uUmVtb3ZlOiBUKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWN0aW9uID0gYWN0aW9uUmVtb3ZlID8/IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJWYWx1ZShmaWx0ZXIpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMubWFwKGl0ZW0gPT4ge1xuICAgICAgaWYgKGZpbHRlci5oYXNPd25Qcm9wZXJ0eShpdGVtLnByb3BlcnR5KSkge1xuICAgICAgICBpdGVtLmluaXRWYWx1ZSA9IGZpbHRlcltpdGVtLnByb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFnZUFjdGlvbnMoKSB7XG4gICAgdGhpcy5wYWdlQWN0aW9ucyA9IFsuLi50aGlzLl9kZWZhdWx0UGFnZUFjdGlvbnMsIC4uLnRoaXMuX2N1c3RvbVBhZ2VMaXN0QWN0aW9uc107XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlQWN0aW9ucygpIHtcbiAgICBjb25zdCBkZWZhdWx0VGFibGVBY3Rpb25zV2l0aG91dEFjdGlvbkRlbGV0ZSA9IHRoaXMuX2RlZmF1bHRUYWJsZUFjdGlvbnMuZmlsdGVyKFxuICAgICAgdGFibGVBY3Rpb24gPT4gdGFibGVBY3Rpb24ubGFiZWwgIT09IHRoaXMubGl0ZXJhbHMudGFibGVBY3Rpb25EZWxldGVcbiAgICApO1xuXG4gICAgY29uc3QgdGFibGVBY3Rpb25EZWxldGUgPSB0aGlzLl9kZWZhdWx0VGFibGVBY3Rpb25zLmZpbmQoXG4gICAgICB0YWJsZUFjdGlvbiA9PiB0YWJsZUFjdGlvbi5sYWJlbCA9PT0gdGhpcy5saXRlcmFscy50YWJsZUFjdGlvbkRlbGV0ZVxuICAgICk7XG5cbiAgICBjb25zdCBuZXdUYWJsZUFjdGlvbnMgPSBbLi4uZGVmYXVsdFRhYmxlQWN0aW9uc1dpdGhvdXRBY3Rpb25EZWxldGUsIC4uLnRoaXMuX2N1c3RvbVRhYmxlQWN0aW9uc107XG5cbiAgICBpZiAodGFibGVBY3Rpb25EZWxldGUpIHtcbiAgICAgIG5ld1RhYmxlQWN0aW9ucy5wdXNoKHRhYmxlQWN0aW9uRGVsZXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlQWN0aW9ucyA9IG5ld1RhYmxlQWN0aW9ucztcbiAgfVxufVxuIiwiPHBvLXBhZ2UtZHluYW1pYy1zZWFyY2hcbiAgW3AtYWN0aW9uc109XCJwYWdlQWN0aW9uc1wiXG4gIFtwLWJyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXG4gIFtwLWhpZGUtY2xvc2UtZGlzY2xhaW1lcnNdPVwiaGlkZUNsb3NlRGlzY2xhaW1lcnNcIlxuICBbcC1maWx0ZXJzXT1cImZpbHRlcnNcIlxuICBbcC1rZWVwLWZpbHRlcnNdPVwia2VlcEZpbHRlcnNcIlxuICBbcC1saXRlcmFsc109XCJzZWFyY2hMaXRlcmFsc1wiXG4gIFtwLWNvbmNhdC1maWx0ZXJzXT1cImNvbmNhdEZpbHRlcnNcIlxuICBbcC1oaWRlLXJlbW92ZS1hbGwtZGlzY2xhaW1lcl09XCJoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lclwiXG4gIFtwLXF1aWNrLXNlYXJjaC13aWR0aF09XCJxdWlja1NlYXJjaFdpZHRoXCJcbiAgW3AtdGl0bGVdPVwidGl0bGVcIlxuICAocC1hZHZhbmNlZC1zZWFyY2gpPVwib25BZHZhbmNlZFNlYXJjaCgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLWRpc2NsYWltZXJzKT1cIm9uQ2hhbmdlRGlzY2xhaW1lcnMoJGV2ZW50KVwiXG4gIChwLXF1aWNrLXNlYXJjaCk9XCJvblF1aWNrU2VhcmNoKCRldmVudClcIlxuICBbcC1xdWljay1zZWFyY2gtdmFsdWVdPVwicXVpY2tTZWFyY2hWYWx1ZSB8fCAnJ1wiXG4+XG4gIDxwby10YWJsZVxuICAgIFtwLXNvcnRdPVwidHJ1ZVwiXG4gICAgW3AtYWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxuICAgIFtwLWFjdGlvbnMtcmlnaHRdPVwiYWN0aW9uUmlnaHRcIlxuICAgIFtwLXNlbGVjdGFibGVdPVwiZW5hYmxlU2VsZWN0aW9uVGFibGVcIlxuICAgIFtwLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW3AtaXRlbXNdPVwiaXRlbXNcIlxuICAgIFtwLWhlaWdodF09XCJoZWlnaHRcIlxuICAgIFtwLWhpZGUtY29sdW1ucy1tYW5hZ2VyXT1cImhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgW3AtaW5maW5pdGUtc2Nyb2xsXT1cImluZmluaXRlU2Nyb2xsXCJcbiAgICBbcC1zaG93LW1vcmUtZGlzYWJsZWRdPVwiIWhhc05leHRcIlxuICAgIChwLXNob3ctbW9yZSk9XCJzaG93TW9yZSgpXCJcbiAgICAocC1zb3J0LWJ5KT1cIm9uU29ydCgkZXZlbnQpXCJcbiAgICAocC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zKT1cIm9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoJGV2ZW50KVwiXG4gICAgKHAtcmVzdG9yZS1jb2x1bW4tbWFuYWdlcik9XCJvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKCRldmVudClcIlxuICAgIChwLXNvcnQtYnkpPVwib25Tb3J0QnkoJGV2ZW50KVwiXG4gICAgW3AtZHJhZ2dhYmxlXT1cImRyYWdnYWJsZVwiXG4gID5cbiAgPC9wby10YWJsZT5cbjwvcG8tcGFnZS1keW5hbWljLXNlYXJjaD5cbiJdfQ==
|
|
@@ -6971,7 +6971,7 @@ class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent {
|
|
|
6971
6971
|
this.tableActions = newTableActions;
|
|
6972
6972
|
}
|
|
6973
6973
|
static ɵfac = function PoPageDynamicTableComponent_Factory(t) { return new (t || PoPageDynamicTableComponent)(i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoDialogService), i0.ɵɵdirectiveInject(i2.PoNotificationService), i0.ɵɵdirectiveInject(PoPageDynamicService), i0.ɵɵdirectiveInject(PoPageCustomizationService), i0.ɵɵdirectiveInject(PoPageDynamicTableActionsService), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
|
|
6974
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageDynamicTableComponent, selectors: [["po-page-dynamic-table"]], inputs: { onLoad: ["p-load", "onLoad"], keepFilters: ["p-keep-filters", "keepFilters", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], concatFilters: ["p-concat-filters", "concatFilters", convertToBoolean], hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideRemoveAllDisclaimer: ["p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], actions: ["p-actions", "actions"], pageCustomActions: ["p-page-custom-actions", "pageCustomActions"], tableCustomActions: ["p-table-custom-actions", "tableCustomActions"], quickSearchWidth: ["p-quick-search-width", "quickSearchWidth"], height: ["p-height", "height"], hideCloseDisclaimers: ["p-hide-close-disclaimers", "hideCloseDisclaimers"], quickSearchParam: ["p-quick-search-param", "quickSearchParam"], quickSearchValue: ["p-quick-search-value", "quickSearchValue"], searchLiterals: ["p-literals", "searchLiterals"], draggable: ["p-draggable", "draggable"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature], decls: 2, vars:
|
|
6974
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageDynamicTableComponent, selectors: [["po-page-dynamic-table"]], inputs: { onLoad: ["p-load", "onLoad"], keepFilters: ["p-keep-filters", "keepFilters", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], concatFilters: ["p-concat-filters", "concatFilters", convertToBoolean], hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideRemoveAllDisclaimer: ["p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], actions: ["p-actions", "actions"], pageCustomActions: ["p-page-custom-actions", "pageCustomActions"], tableCustomActions: ["p-table-custom-actions", "tableCustomActions"], quickSearchWidth: ["p-quick-search-width", "quickSearchWidth"], height: ["p-height", "height"], hideCloseDisclaimers: ["p-hide-close-disclaimers", "hideCloseDisclaimers"], quickSearchParam: ["p-quick-search-param", "quickSearchParam"], quickSearchValue: ["p-quick-search-value", "quickSearchValue"], searchLiterals: ["p-literals", "searchLiterals"], draggable: ["p-draggable", "draggable"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 22, consts: [[3, "p-actions", "p-breadcrumb", "p-hide-close-disclaimers", "p-filters", "p-keep-filters", "p-literals", "p-concat-filters", "p-hide-remove-all-disclaimer", "p-quick-search-width", "p-title", "p-quick-search-value", "p-advanced-search", "p-change-disclaimers", "p-quick-search"], [3, "p-sort", "p-actions", "p-actions-right", "p-selectable", "p-columns", "p-items", "p-height", "p-hide-columns-manager", "p-infinite-scroll", "p-show-more-disabled", "p-draggable", "p-show-more", "p-sort-by", "p-change-visible-columns", "p-restore-column-manager"]], template: function PoPageDynamicTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
6975
6975
|
i0.ɵɵelementStart(0, "po-page-dynamic-search", 0);
|
|
6976
6976
|
i0.ɵɵlistener("p-advanced-search", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_advanced_search_0_listener($event) { return ctx.onAdvancedSearch($event); })("p-change-disclaimers", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_change_disclaimers_0_listener($event) { return ctx.onChangeDisclaimers($event); })("p-quick-search", function PoPageDynamicTableComponent_Template_po_page_dynamic_search_p_quick_search_0_listener($event) { return ctx.onQuickSearch($event); });
|
|
6977
6977
|
i0.ɵɵelementStart(1, "po-table", 1);
|
|
@@ -6980,12 +6980,12 @@ class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent {
|
|
|
6980
6980
|
} if (rf & 2) {
|
|
6981
6981
|
i0.ɵɵproperty("p-actions", ctx.pageActions)("p-breadcrumb", ctx.breadcrumb)("p-hide-close-disclaimers", ctx.hideCloseDisclaimers)("p-filters", ctx.filters)("p-keep-filters", ctx.keepFilters)("p-literals", ctx.searchLiterals)("p-concat-filters", ctx.concatFilters)("p-hide-remove-all-disclaimer", ctx.hideRemoveAllDisclaimer)("p-quick-search-width", ctx.quickSearchWidth)("p-title", ctx.title)("p-quick-search-value", ctx.quickSearchValue || "");
|
|
6982
6982
|
i0.ɵɵadvance(1);
|
|
6983
|
-
i0.ɵɵproperty("p-sort", true)("p-
|
|
6983
|
+
i0.ɵɵproperty("p-sort", true)("p-actions", ctx.tableActions)("p-actions-right", ctx.actionRight)("p-selectable", ctx.enableSelectionTable)("p-columns", ctx.columns)("p-items", ctx.items)("p-height", ctx.height)("p-hide-columns-manager", ctx.hideColumnsManager)("p-infinite-scroll", ctx.infiniteScroll)("p-show-more-disabled", !ctx.hasNext)("p-draggable", ctx.draggable);
|
|
6984
6984
|
} }, dependencies: [i2.PoTableComponent, PoPageDynamicSearchComponent], encapsulation: 2 });
|
|
6985
6985
|
}
|
|
6986
6986
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageDynamicTableComponent, [{
|
|
6987
6987
|
type: Component,
|
|
6988
|
-
args: [{ selector: 'po-page-dynamic-table', providers: [PoPageDynamicService], template: "<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-
|
|
6988
|
+
args: [{ selector: 'po-page-dynamic-table', providers: [PoPageDynamicService], template: "<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-actions]=\"tableActions\"\n [p-actions-right]=\"actionRight\"\n [p-selectable]=\"enableSelectionTable\"\n [p-columns]=\"columns\"\n [p-items]=\"items\"\n [p-height]=\"height\"\n [p-hide-columns-manager]=\"hideColumnsManager\"\n [p-infinite-scroll]=\"infiniteScroll\"\n [p-show-more-disabled]=\"!hasNext\"\n (p-show-more)=\"showMore()\"\n (p-sort-by)=\"onSort($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-restore-column-manager)=\"onColumnRestoreManager($event)\"\n (p-sort-by)=\"onSortBy($event)\"\n [p-draggable]=\"draggable\"\n >\n </po-table>\n</po-page-dynamic-search>\n" }]
|
|
6989
6989
|
}], function () { return [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.PoDialogService }, { type: i2.PoNotificationService }, { type: PoPageDynamicService }, { type: PoPageCustomizationService }, { type: PoPageDynamicTableActionsService }, { type: i2.PoLanguageService }]; }, { onLoad: [{
|
|
6990
6990
|
type: Input,
|
|
6991
6991
|
args: ['p-load']
|