raise-common-lib 0.0.235-beta → 0.0.236-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -57
- package/bundles/raise-common-lib.umd.js +62 -30
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/commentary/index.component.js +3 -2
- package/esm2015/lib/common-grid/grid-action/grid-action.component.js +3 -2
- package/esm2015/lib/common-grid/index.component.js +3 -2
- package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +4 -3
- package/esm2015/lib/dashboard/dashboardPorlets.service.js +4 -3
- package/esm2015/lib/dashboard/dialog-group/download/index.component.js +3 -2
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +3 -2
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +3 -2
- package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +3 -2
- package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -2
- package/esm2015/lib/dashboard/pane-group-new.component.js +4 -3
- package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +3 -2
- package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -2
- package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +3 -2
- package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +4 -3
- package/esm2015/lib/dialog/common-delete-dialog/index.component.js +3 -2
- package/esm2015/lib/dialog/common-dialog/index.component.js +3 -2
- package/esm2015/lib/form/checkbox-group/index.component.js +3 -2
- package/esm2015/lib/form/confirm-select/index.component.js +3 -2
- package/esm2015/lib/form/search-input/index.component.js +3 -2
- package/esm2015/lib/layout/grid-box/index.component.js +3 -2
- package/esm2015/lib/layout/multi-tab/index.component.js +3 -2
- package/esm2015/lib/layout/page-list/index.component.js +3 -2
- package/esm2015/lib/layout/rs-header/index.component.js +5 -4
- package/esm2015/lib/service/dialog.service.js +3 -2
- package/esm2015/lib/utils/utils.js +32 -0
- package/esm5/lib/commentary/index.component.js +3 -2
- package/esm5/lib/common-grid/grid-action/grid-action.component.js +3 -2
- package/esm5/lib/common-grid/index.component.js +3 -2
- package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +4 -3
- package/esm5/lib/dashboard/dashboardPorlets.service.js +4 -3
- package/esm5/lib/dashboard/dialog-group/download/index.component.js +3 -2
- package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +3 -2
- package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +3 -2
- package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +3 -2
- package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -2
- package/esm5/lib/dashboard/pane-group-new.component.js +4 -3
- package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +3 -2
- package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -2
- package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +3 -2
- package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +4 -3
- package/esm5/lib/dialog/common-delete-dialog/index.component.js +3 -2
- package/esm5/lib/dialog/common-dialog/index.component.js +3 -2
- package/esm5/lib/form/checkbox-group/index.component.js +3 -2
- package/esm5/lib/form/confirm-select/index.component.js +3 -2
- package/esm5/lib/form/search-input/index.component.js +3 -2
- package/esm5/lib/layout/grid-box/index.component.js +3 -2
- package/esm5/lib/layout/multi-tab/index.component.js +3 -2
- package/esm5/lib/layout/page-list/index.component.js +3 -2
- package/esm5/lib/layout/rs-header/index.component.js +5 -4
- package/esm5/lib/service/dialog.service.js +3 -2
- package/esm5/lib/utils/utils.js +32 -0
- package/fesm2015/raise-common-lib.js +62 -30
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +62 -30
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/utils/utils.d.ts +1 -0
- package/package.json +1 -1
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/arrow_right.svg +4 -4
- package/src/assets/img/calendar-disabled.svg +6 -6
- package/src/assets/img/calendar.svg +6 -6
- package/src/assets/img/calendar_arrow_left.svg +3 -3
- package/src/assets/img/calendar_arrow_right.svg +3 -3
- package/src/assets/img/checked-vector.svg +3 -3
- package/src/assets/img/dialog-close.svg +4 -4
- package/src/assets/img/dialog-grow.svg +6 -6
- package/src/assets/img/dialog-shrink.svg +6 -6
- package/src/assets/img/plus.svg +4 -4
- package/src/assets/img/search.svg +4 -4
- package/src/assets/img/shrink-icon.svg +6 -6
- package/src/assets/img/time-disabled.svg +4 -4
- package/src/assets/img/time.svg +4 -4
- package/src/assets/img/toolbar-action-addFolder.svg +17 -17
- package/src/assets/img/toolbar-action-calculator.svg +11 -11
- package/src/assets/img/toolbar-action-collapse.svg +7 -7
- package/src/assets/img/toolbar-action-combine.svg +4 -4
- package/src/assets/img/toolbar-action-edit.svg +4 -4
- package/src/assets/img/toolbar-action-expand.svg +7 -7
- package/src/assets/img/toolbar-action-folderMove.svg +8 -8
- package/src/assets/img/toolbar-action-lock.svg +6 -6
- package/src/assets/img/toolbar-action-preview.svg +7 -7
- package/src/assets/img/toolbar-action-publish.svg +5 -5
- package/src/assets/img/toolbar-action-reminders.svg +10 -10
- package/src/assets/img/toolbar-action-rename.svg +7 -7
- package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
- package/src/assets/img/toolbar-action-send-file.svg +5 -5
- package/src/assets/img/toolbar-action-settle.svg +7 -7
- package/src/assets/img/toolbar-action-share.svg +5 -5
- package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
- package/src/assets/img/toolbar-action-sync.svg +4 -4
- package/src/assets/img/toolbar-action-template.svg +6 -6
- package/src/assets/img/toolbar-action-workflow.svg +9 -9
|
@@ -9,6 +9,7 @@ import { ApiList } from "../api";
|
|
|
9
9
|
import { API_SERVICE_TOKEN, PBF_TOKEN } from "../../service/InjectionToken";
|
|
10
10
|
import { DashboardService } from "../dashboard.service";
|
|
11
11
|
import { DashboardPorletsService } from "../dashboardPorlets.service";
|
|
12
|
+
import { getTranslation } from "../../utils/utils";
|
|
12
13
|
var SidebarIconlistNewComponent = /** @class */ (function () {
|
|
13
14
|
function SidebarIconlistNewComponent(api, dashboardService, dashboardPorletsService, ref, pbf, http) {
|
|
14
15
|
this.api = api;
|
|
@@ -32,7 +33,7 @@ var SidebarIconlistNewComponent = /** @class */ (function () {
|
|
|
32
33
|
this.updatePushBtn = new EventEmitter();
|
|
33
34
|
this.chartUpdate = new EventEmitter();
|
|
34
35
|
this.updateTheme = new EventEmitter();
|
|
35
|
-
this.translation =
|
|
36
|
+
this.translation = getTranslation();
|
|
36
37
|
this.dataMartTableList = [];
|
|
37
38
|
this.hasChanged = false;
|
|
38
39
|
this.subscriptions = [];
|
|
@@ -533,7 +534,7 @@ var SidebarIconlistNewComponent = /** @class */ (function () {
|
|
|
533
534
|
* @return {?}
|
|
534
535
|
*/
|
|
535
536
|
function () {
|
|
536
|
-
this.translation =
|
|
537
|
+
this.translation = getTranslation();
|
|
537
538
|
this.lang = this.pbf.getLanguageParams();
|
|
538
539
|
};
|
|
539
540
|
/**
|
|
@@ -1789,4 +1790,4 @@ if (false) {
|
|
|
1789
1790
|
*/
|
|
1790
1791
|
SidebarIconlistNewComponent.prototype.http;
|
|
1791
1792
|
}
|
|
1792
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvc2lkZWJhci1pY29ubGlzdC9zaWRlYmFyLWljb25saXN0LW5ldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHdEU7SUEyVkUscUNBQ1UsR0FBWSxFQUNiLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDL0MsR0FBc0IsRUFDUyxHQUFRLEVBQ0EsSUFBUztRQUxoRCxRQUFHLEdBQUgsR0FBRyxDQUFTO1FBQ2IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQy9DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1MsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNBLFNBQUksR0FBSixJQUFJLENBQUs7UUExVmpELHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUtuQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsdUJBQWtCLEdBQVEs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REFBdUQ7Ozs7O0lBQ3ZELDBDQUE4Qjs7Ozs7SUFDOUIsMENBQStDOzs7OztJQUMvQywyQ0FBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXBpTGlzdCB9IGZyb20gXCIuLi9hcGlcIjtcclxuaW1wb3J0IHsgQVBJX1NFUlZJQ0VfVE9LRU4sIFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkUG9ybGV0cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1zaWRlYmFyLWljb25saXN0LW5ld1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFySWNvbmxpc3ROZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZF9zaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGFzaGJvYXJkO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZElkO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYklkO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYkxhYmVsO1xyXG4gIEBJbnB1dCgpIHBvcnRsZXRzID0gW107XHJcbiAgQElucHV0KCkgdGFiYWN0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcG9ydGxldDtcclxuICBASW5wdXQoKSBmaWd1cmVDb2RlO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZFg6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZFk6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZE11bHRpcGxlczogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBfc2VsZWN0ZWRTZWNvbmRZOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBfc2VsZWN0VGhlbWU6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgYXBwQ29kZTtcclxuICBAT3V0cHV0KCkgY2xvc2VTaWRlYmFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQb3JsZXRDb25maWcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uVG9nZ2xlVGFiYWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQb3JsZXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZVB1c2hCdG4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0VXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVUaGVtZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwdWJsaWMgdHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIHByaXZhdGUgbGFuZztcclxuICBwdWJsaWMgZGF0YU1hcnRUYWJsZUxpc3QgPSBbXTtcclxuICBoYXNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgLy9jb25maWc7XHJcbiAgcHVibGljIGdhZGdldFRpdGxlO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgcG9ydGxldFR5cGU7XHJcbiAgcHVibGljIGV4cGFuZEFycmF5OiBBcnJheTxib29sZWFuPiA9IFtcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gIF07XHJcbiAgcHVibGljIHNlbGVjdGVkRGF0YVRhYmxlOiBhbnkgPSBcIlwiO1xyXG4gIHB1YmxpYyBzZWxlY3RlZERhdGFtYXJ0O1xyXG4gIHB1YmxpYyBjaGFydFNldHRpbmdzID0ge1xyXG4gICAgbGVnZW5kU2V0dGluZ3M6IHtcclxuICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgZW5hYmxlTXVsdGlwbGVBeGlzOiBmYWxzZSxcclxuICAgIHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuICAgIGNoYXJ0U2VyaWVzOiB7XHJcbiAgICAgIHR5cGU6IFwiQ29sdW1uXCIsXHJcbiAgICAgIHdpZHRoOiAyLFxyXG4gICAgfSxcclxuICAgIG11bHRpcGxlQXhpc01vZGU6IFwiU3RhY2tlZFwiLFxyXG4gICAgcHJpbWFyeVhBeGlzOiB7XHJcbiAgICAgIHRpdGxlOiBcIiBcIixcclxuICAgICAgbWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIH0sXHJcbiAgICBjaGFydEFyZWE6IHtcclxuICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgYm9yZGVyOiB7XHJcbiAgICAgICAgd2lkdGg6IDAsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGFsZXR0ZXM6IFtcclxuICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICBcIiNjNjQzN2RcIixcclxuICAgIF0sXHJcbiAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgLy8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG4gICAgICB0aXRsZTogXCIgXCIsXHJcbiAgICB9LFxyXG4gICAgem9vbVNldHRpbmdzOiB7XHJcbiAgICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcbiAgICAgIGVuYWJsZVBpbmNoWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOinpuaRuOe8qeaUvlxyXG4gICAgICBlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcbiAgICAgIGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG4gICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICBlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG4gICAgICBlbmFibGVab29taW5nOiBmYWxzZSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBwdWJsaWMgZGlzcGxheU9wdGlvbiA9IHsgdmlldzogXCJCb3RoXCIsIHByaW1hcnk6IFwiQ2hhcnRcIiB9O1xyXG4gIHB1YmxpYyBjb25maWc7XHJcbiAgcHVibGljIGN1cnJlbnRUYWI6IHN0cmluZyA9IFwidGFiMVwiO1xyXG4gIHB1YmxpYyB5TGlzdDogYW55ID0gW107XHJcbiAgcHVibGljIGNoYXJ0VHlwZUxpc3QgPSBbXHJcbiAgICBcIkNvbHVtblwiLFxyXG4gICAgXCJCYXJcIixcclxuICAgIFwiTGluZVwiLFxyXG4gICAgXCJTcGxpbmVcIixcclxuICAgIFwiQXJlYVwiLFxyXG4gICAgXCJTY2F0dGVyXCIsXHJcbiAgICBcIlBvbGFyXCIsXHJcbiAgICBcIlBpZVwiLFxyXG4gICAgXCJEb3VnaG51dFwiLFxyXG4gICAgXCJTdGFja2VkIENvbHVtblwiLFxyXG4gICAgXCJSYWRhclwiLFxyXG4gIF07XHJcbiAgcHVibGljIG11bHRpcGxlQXhpc01vZGVMaXN0ID0gW1wiU3RhY2tlZFwiLCBcIlNpbmdsZVwiLCBcIkNvbWJpbmVkXCJdO1xyXG4gIHRoZW1lRGF0YTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTEzXCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTRcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxMzZCQkJcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDgyQUZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxN1wiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMThcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzE2QTJDMlwiLCBcIiMzRUJCQ0VcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE5XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzE2NTlBOVwiLCBcIiMxMzc1QzRcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjBcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMTM2OEI4XCIsIFwiIzEzNzVDNFwiLCBcIiMxRDk3RTFcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDcwQTNcIiwgXCIjMDA3RkFEXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzE0NUZBRlwiLFxyXG4gICAgICAgIFwiIzEzNjhCOFwiLFxyXG4gICAgICAgIFwiIzEzNzVDNFwiLFxyXG4gICAgICAgIFwiIzFEOTdFMVwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyNFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNzBBM1wiLFxyXG4gICAgICAgIFwiIzAwNzhBOVwiLFxyXG4gICAgICAgIFwiIzAwN0ZBRFwiLFxyXG4gICAgICAgIFwiIzAwODlCNFwiLFxyXG4gICAgICAgIFwiIzE2QTJDMlwiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE5NDY5N1wiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzEzNkJCQlwiLFxyXG4gICAgICAgIFwiIzE0N0VDQ1wiLFxyXG4gICAgICAgIFwiIzFCOTJERFwiLFxyXG4gICAgICAgIFwiIzI2QTVFRFwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNjU5QlwiLFxyXG4gICAgICAgIFwiIzAwNzNBNlwiLFxyXG4gICAgICAgIFwiIzAwODJBRlwiLFxyXG4gICAgICAgIFwiIzAwOTBCOFwiLFxyXG4gICAgICAgIFwiIzBGOUVDMFwiLFxyXG4gICAgICAgIFwiIzI5QURDN1wiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxXCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTJcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU0XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMmY0OTlmXCIsXHJcbiAgICAgICAgXCIjOGQxZDJlXCIsXHJcbiAgICAgICAgXCIjZTliZjM1XCIsXHJcbiAgICAgICAgXCIjNTE3NzJmXCIsXHJcbiAgICAgICAgXCIjNDY5YmQ4XCIsXHJcbiAgICAgICAgXCIjNWM0NDhmXCIsXHJcbiAgICAgICAgXCIjZGE3MzJmXCIsXHJcbiAgICAgICAgXCIjMjQ1MzUzXCIsXHJcbiAgICAgICAgXCIjNDNhMjQ1XCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTVcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMzODM4MzlcIixcclxuICAgICAgICBcIiM0NDZlYzZcIixcclxuICAgICAgICBcIiNjZjYzODRcIixcclxuICAgICAgICBcIiNlYmIzN2VcIixcclxuICAgICAgICBcIiM3MWEyNDlcIixcclxuICAgICAgICBcIiM0YmIxYTVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lNlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzUxN2FlMVwiLFxyXG4gICAgICAgIFwiIzYzODZlNVwiLFxyXG4gICAgICAgIFwiIzc0OTFlOVwiLFxyXG4gICAgICAgIFwiIzg0OWRlY1wiLFxyXG4gICAgICAgIFwiIzk0YTllZlwiLFxyXG4gICAgICAgIFwiI2E0YjZmMlwiLFxyXG4gICAgICAgIFwiI2I0YzNmNlwiLFxyXG4gICAgICAgIFwiI2M0Y2ZmOVwiLFxyXG4gICAgICAgIFwiI2Q0ZGRmZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU3XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMzk4MjhlXCIsXHJcbiAgICAgICAgXCIjNDg4ZTk5XCIsXHJcbiAgICAgICAgXCIjNTc5YWE1XCIsXHJcbiAgICAgICAgXCIjNjZhNmIwXCIsXHJcbiAgICAgICAgXCIjNzViM2JkXCIsXHJcbiAgICAgICAgXCIjODViZmM5XCIsXHJcbiAgICAgICAgXCIjOTVjZGQ2XCIsXHJcbiAgICAgICAgXCIjYTRkYWUyXCIsXHJcbiAgICAgICAgXCIjYjVlOGYwXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZThcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiNlNzk2M2RcIixcclxuICAgICAgICBcIiNlYTllNGJcIixcclxuICAgICAgICBcIiNlZWE2NTlcIixcclxuICAgICAgICBcIiNmMGFlNjhcIixcclxuICAgICAgICBcIiNmMmI2NzhcIixcclxuICAgICAgICBcIiNmM2JmODdcIixcclxuICAgICAgICBcIiNmNWM3OThcIixcclxuICAgICAgICBcIiNmNmQwYWFcIixcclxuICAgICAgICBcIiNmN2Q5YmJcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lOVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzY0YThiNFwiLFxyXG4gICAgICAgIFwiIzdlYmVjMFwiLFxyXG4gICAgICAgIFwiIzljYzljYVwiLFxyXG4gICAgICAgIFwiI2I4ZDRkNFwiLFxyXG4gICAgICAgIFwiI2Q5ZDZjZFwiLFxyXG4gICAgICAgIFwiI2Q4YjdhN1wiLFxyXG4gICAgICAgIFwiI2NlOGY5M1wiLFxyXG4gICAgICAgIFwiI2MxNjI3ZlwiLFxyXG4gICAgICAgIFwiI2FkMjQ1OFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzQxNzZiYVwiLFxyXG4gICAgICAgIFwiIzU1OWFlOFwiLFxyXG4gICAgICAgIFwiIzcwYjNlOFwiLFxyXG4gICAgICAgIFwiI2E3Y2NlN1wiLFxyXG4gICAgICAgIFwiI2RmZGZkZlwiLFxyXG4gICAgICAgIFwiI2QyYTA4YlwiLFxyXG4gICAgICAgIFwiI2M3NmE1MFwiLFxyXG4gICAgICAgIFwiI2NhNGUzNFwiLFxyXG4gICAgICAgIFwiI2FhM2MyOVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgdGhlbWVGaWVsZHM6IE9iamVjdCA9IHsgdGV4dDogXCJ2YWx1ZVwiLCB2YWx1ZTogXCJpZFwiIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRQb3JsZXRzU2VydmljZTogRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBCRl9UT0tFTikgcHJpdmF0ZSBwYmY6IGFueSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBJX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgaHR0cDogYW55XHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGhpcy50YWJhY3RpdmUgPyBcInRhYjFcIiA6IFwidGFiMlwiO1xyXG4gICAgdGhpcy5nZXRJbmZvKCk7XHJcbiAgICB0aGlzLnNldERhdGFiaW5kKCk7XHJcbiAgICB0aGlzLmluaXRIaXN0b3JpY2FsSVJST3B0aW9ucygpO1xyXG4gICAgdGhpcy5nZXRtdWx0aXBsZXNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpOyAvLyDmoIforrDkuLrpnIDopoHmo4DmtYtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRQdXNoYnRuKCkuc3Vic2NyaWJlKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5nZXRDb25maWcoW10pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0ID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRYID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRZID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0cG9ydGxldEVkaXQoKS5zdWJzY3JpYmUoKGRhc2hib2FyZElkKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhc2hib2FyZElkID09PSB0aGlzLmRhc2hib2FyZElkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGFiaW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERhdGFNYXJ0VGFibGVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRhTWFydFRhYmxlTGlzdCgpIHtcclxuICAgIHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QgPSBbLi4udGhpcy5kYXNoYm9hcmQuZGF0YU1hcnRUYWJsZXNdLmZpbHRlcihcclxuICAgICAgKGl0ZW0pID0+ICFpdGVtLmlzSGlkZVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnJlbmFtZURhdGFNYXJ0VGFibGVzKFxyXG4gICAgICB0aGlzLmRhdGFNYXJ0VGFibGVMaXN0LFxyXG4gICAgICB0aGlzLmRhc2hib2FyZC5pZCxcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuZW50aXR5VHlwZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc29ydERhdGFNYXJ0VGFibGVzKHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QpO1xyXG4gICAgaWYgKCF0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpZ3VyZUNvZGUgPSB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZTtcclxuICAgIHRoaXMuZGFzaGJvYXJkLmRhdGFNYXJ0VGFibGVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YW1hcnRDb2RlID09PSBmaWd1cmVDb2RlICYmIGl0ZW0ucHJlZml4KSB7XHJcbiAgICAgICAgZmlndXJlQ29kZSA9IGl0ZW0ucHJlZml4O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZmluZCgoaXRlbSkgPT4gaXRlbS5kYXRhbWFydENvZGUgPT09IGZpZ3VyZUNvZGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEucHJlZml4ID09PSBmaWd1cmVDb2RlKSB7XHJcbiAgICAgICAgICBmaWd1cmVDb2RlID0gZGF0YS5kYXRhbWFydENvZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBmaWd1cmVDb2RlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRXaXphcmQod2l6YXJkOiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRBcnJheVt3aXphcmRdKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXkgPSBbXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXlbd2l6YXJkXSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5W3dpemFyZF0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SW5mbygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gICAgdGhpcy5sYW5nID0gdGhpcy5wYmYuZ2V0TGFuZ3VhZ2VQYXJhbXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcigpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jbGVhclNpZGViYXIubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy51cGRhdGVQdXNoQnRuLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXQuZW1pdChudWxsKTtcclxuICAgIHRoaXMuY2xvc2VTaWRlYmFyLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZpZ3VyZWNvZGUoKSB7XHJcbiAgICBsZXQgY29kZUFyciA9IFtcIlRhc2tzXCIsIFwiRnVuZExpc3RcIiwgXCJJUlJcIiwgXCJOb3Rlc1wiXTtcclxuICAgIGxldCBpID0gY29kZUFyci5pbmRleE9mKHRoaXMuZmlndXJlQ29kZSk7XHJcbiAgICByZXR1cm4gaSA+IC0xID8gZmFsc2UgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8g5Zu+6KGo57G75Z6L5pu05pS5ZXZlbnRcclxuICBwdWJsaWMgZ2V0UG9ydGxldFR5cGUoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnBvcnRsZXRUeXBlID0gJGV2ZW50O1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VkID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgIT09IHRoaXMucG9ydGxldFR5cGU7XHJcbiAgICBjb25zdCBwcmV2VHlwZSA9IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgdGhpcy5jb25maWcucG9ydGxldFR5cGUgPSB0aGlzLnBvcnRsZXRUeXBlO1xyXG4gICAgaWYgKCEkZXZlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKCRldmVudCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gbnVsbDtcclxuICAgICAgdGhpcy5leHBhbmRBcnJheVsyXSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5WzddID0gdHJ1ZTtcclxuICAgICAgLy8g5L+u5aSN5pyJ5pe26YCJ5oupIHh5IOi9tOaXtuayoeacieaVsOaNrueahOmXrumimFxyXG4gICAgICBpZiAodGhpcy5wb3J0bGV0ICYmIHRoaXMucG9ydGxldC5maWd1cmVDb2RlKSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKHRoaXMucG9ydGxldC5maWd1cmVDb2RlLCBmYWxzZSwgdGhpcy5wb3J0bGV0VHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldFR5cGUgPT09IFwibmV3Y2hhcnRcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5nc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICBsZWdlbmRTZXR0aW5nczoge1xyXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlbmFibGVNdWx0aXBsZUF4aXM6IGZhbHNlLFxyXG4gICAgICAgICAgc2hvd011bHRpTGV2ZWxMYWJlbHM6IGZhbHNlLFxyXG4gICAgICAgICAgY2hhcnRTZXJpZXM6IHtcclxuICAgICAgICAgICAgdHlwZTogXCJDb2x1bW5cIixcclxuICAgICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbXVsdGlwbGVBeGlzTW9kZTogXCJTdGFja2VkXCIsXHJcbiAgICAgICAgICBwcmltYXJ5WEF4aXM6IHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiIFwiLFxyXG4gICAgICAgICAgICBtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNoYXJ0QXJlYToge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgICBib3JkZXI6IHtcclxuICAgICAgICAgICAgICB3aWR0aDogMCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwYWxldHRlczogW1xyXG4gICAgICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHByaW1hcnlZQXhpczoge1xyXG4gICAgICAgICAgICAvLyBZ6L205qCH6aKY6K6+572u5Li656m6XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIiBcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB6b29tU2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuICAgICAgICAgICAgZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcbiAgICAgICAgICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpgInmi6nljLrln5/nvKnmlL5cclxuICAgICAgICAgICAgZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtczogW10sXHJcbiAgICAgICAgICAgIGVuYWJsZVNjcm9sbGJhcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoJGV2ZW50ID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRIaXN0b3JpY2FsSVJSUG9ydGxldCgpO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXlbN10gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzNdID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnBvcnRsZXRUeXBlKSB7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgY2hhbmdlRGF0YVRhYmxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YVRhYmxlID0gdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5maWx0ZXIoXHJcbiAgICAgIChlbCkgPT4gZWwuZGF0YW1hcnRDb2RlID09PSB2YWx1ZVxyXG4gICAgKVswXS5pZDtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhbWFydCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMucG9ydGxldCkge1xyXG4gICAgICB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9IHZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5wb3J0bGV0LmRhc2hib2FyZERhdGFUYWJsZUlkID0gdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jbGVhckZpZWxkTGlzdC5uZXh0KHRoaXMucG9ydGxldC5uZXdJZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuY2xlYXJGaWVsZHNPYmoodGhpcy5wb3J0bGV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSk7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzBdID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIF91cGRhdGVQb3JsZXRDb25maWcoZSkge1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YShjb2RlLCBlZGl0OiBib29sZWFuID0gdHJ1ZSwgcG9ydGxldFR5cGUgPSBcIlwiKSB7XHJcbiAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICBkYXRhTWFydENvZGU6IGNvZGUsXHJcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5zZXRTY2hlbWFQYXJhbXMoZGF0YU9iaiwgY29kZSwgdGhpcy5kYXNoYm9hcmQpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5HZXRTY2hlbWEsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAgXCJTZWVUaHJvdWdoUXVhcnRlcmx5XCIsXHJcbiAgICAgICAgICAgIFwiU2VlVGhyb3VnaFllYXJseVwiLFxyXG4gICAgICAgICAgICBcIlNlZVRocm91Z2hNb250aGx5XCIsXHJcbiAgICAgICAgICBdLmluY2x1ZGVzKGNvZGUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXMgPSByZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgICAhW1xyXG4gICAgICAgICAgICAgICAgXCJDSV9NVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ0lfUVREXCIsXHJcbiAgICAgICAgICAgICAgICBcIkNJX1lURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX01URFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX1FURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX1lURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX01URF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX01URF85OVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1FURF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1FURF85OVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1lURF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1lURF85OVwiLFxyXG4gICAgICAgICAgICAgIF0uaW5jbHVkZXMoaXRlbS5jb2xOYW1lKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF0pIHtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXSA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnRcclxuICAgICAgICBdID0gcmVzO1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvcnRsZXQuY29uZmlnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocG9ydGxldFR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucG9ydGxldFR5cGUgPSBwb3J0bGV0VHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcyA9IHJlcztcclxuXHJcbiAgICAgICAgICAvLyBUTyBETyDov4fmu6RZ6L2055qE5pWw5o2uXHJcbiAgICAgICAgICB0aGlzLnlMaXN0ID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IHRoaXMuY29uZmlnID8gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpIDogXCJcIjtcclxuXHJcbiAgICAgICAgICBlZGl0ICYmIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5maWVsZHMgPSByZXM7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcG9ydGxldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucG9ydGxldCk7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQocG9ydGxldCk7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIOi/h+a7pFnovbTnmoTmlbDmja5cclxuICAgICAgICAgICAgdGhpcy55TGlzdCA9IHJlcztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TXVsdGlwbGVBeGlzKGUpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMpIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5lbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UubmV4dCh7XHJcbiAgICAgICAgbmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuICAgICAgICBlbmFibGVNdWx0aXBsZUF4aXM6IHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMsXHJcbiAgICAgICAgdmlzaWJsZTogdGhpcy5jaGFydFNldHRpbmdzLmxlZ2VuZFNldHRpbmdzLnZpc2libGUsXHJcbiAgICAgICAgbXVsdGlwbGVBeGlzTW9kZTogdGhpcy5jaGFydFNldHRpbmdzLm11bHRpcGxlQXhpc01vZGUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q2hhcnRUeXBlKCkge1xyXG4gICAgY29uc3QgcG9ydGxldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucG9ydGxldCk7XHJcbiAgICBpZiAocG9ydGxldC5jb25maWcpIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgIGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0gY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmdcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgLi4uY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcsXHJcbiAgICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHsgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzIH07XHJcbiAgICAgIHBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQocG9ydGxldCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNoYXJ0VHlwZUNoYW5nZS5uZXh0KHtcclxuICAgICAgICBuZXdJZDogdGhpcy5wb3J0bGV0Lm5ld0lkLFxyXG4gICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUaGVtZURhdGEoZSkge1xyXG4gICAgY29uc3QgaWQgPSBlLnZhbHVlO1xyXG4gICAgY29uc3QgcG9ydGxldCA9IHRoaXMucG9ydGxldDtcclxuICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZURhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKCF0aGVtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2Uuc2V0VGhlbWUubmV4dCh7XHJcbiAgICAgIG5ld0lkOiBwb3J0bGV0Lm5ld0lkLFxyXG4gICAgICB0aGVtZTogdGhlbWUudmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBBZGRPckVkaXRQb3J0bGV0KCkge1xyXG4gICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICA/IHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0ICYmIHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG4gICAgICAvLyBTTVAyLTE3NjU0IOmcgOimgeWwhumAieaLqeeahCBmcmVxdWVuY3njgIFpbnZlc3RvcuOAgXZpc3VhbCB0eXBlIOS/neWtmOWIsCBjb25maWcg5Lit55So5p2l5ou/5Y+W5ZCO56uv5pWw5o2uXHJcbiAgICAgIC8vIOS9huaYr+WmguaenOebtOaOpeS/neWtmCB0aGlzLmNvbmZpZyDkvJrlh7rnjrAgU01QMi0xODgzNyDov5nkuKogQlVHXHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5wb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYW5nZWQpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkgJiZcclxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkWS5sZW5ndGggPiAwIHx8IHRoaXMuc2VsZWN0ZWRTZWNvbmRZLmxlbmd0aCA+IDApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgICAgIGNvbmZpZ1tcInNlbGVjdGVkWVwiXSA9IHRoaXMuc2VsZWN0ZWRZO1xyXG4gICAgICAgICAgY29uZmlnW1wic2VsZWN0ZWRTZWNvbmRZXCJdID0gdGhpcy5zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29uZmlnLnBvcnRsZXRUeXBlID09PSBcIm5ld2NoYXJ0XCIpIHtcclxuICAgICAgICAgIGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG4gICAgICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGRpc3BsYXlPcHRpb246IHRoaXMuZGlzcGxheU9wdGlvbixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbmZpZy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuY29uZmlnLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICBjb25maWcuc2VsZWN0ZWRJbnZlc3RvciA9IHRoaXMuY29uZmlnLnNlbGVjdGVkSW52ZXN0b3I7XHJcbiAgICAgIGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcbiAgICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgICBwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XHJcbiAgICAgIC8vIOaWsOWinkRhdGFUYWJsZeexu+Wei++8jCDnvJbovpFQb3JsZXRcclxuICAgICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5zZXREYXRhTWFuYWdlcihcclxuICAgICAgICBbdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpXSxcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRQb3J0bGV0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBbcG9ydGxldFR5cGVdLFxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgIHBvcnRsZXRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgZWwudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpICYmXHJcbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRZLmxlbmd0aCA+IDAgfHwgdGhpcy5zZWxlY3RlZFNlY29uZFkubGVuZ3RoID4gMClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgICB0aGlzLmNvbmZpZ1tcInNlbGVjdGVkWVwiXSA9IHRoaXMuc2VsZWN0ZWRZO1xyXG4gICAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRTZWNvbmRZXCJdID0gdGhpcy5zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJuZXdjaGFydFwiKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyA9IHtcclxuICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIGRpc3BsYXlPcHRpb246IHRoaXMuZGlzcGxheU9wdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdldFNlbGVjdERhdGFtYXJ0SWQoKTtcclxuICAgICAgY29uc3QgcG9ydGxldGRhdGEgPSB7XHJcbiAgICAgICAgaWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgICAgbmV3SWQ6IFwicG9ydGxldF9cIiArIHRoaXMucGJmLkd1aWQoKSxcclxuICAgICAgICBkYXNoYm9hcmREYXRhVGFibGVJZDogdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCksXHJcbiAgICAgICAgZmlndXJlQ29kZTogdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpLFxyXG4gICAgICAgIGNvbDogMCxcclxuICAgICAgICByb3c6IDAsXHJcbiAgICAgICAgc2l6ZVg6IDIsXHJcbiAgICAgICAgc2l6ZVk6IDEsXHJcbiAgICAgICAgcG9zWDogMCxcclxuICAgICAgICBwb3NZOiAwLFxyXG4gICAgICAgIGhlaWdodDogMSxcclxuICAgICAgICB3aWR0aDogMixcclxuICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy51cGRhdGVQb3JsZXQuZW1pdChwb3J0bGV0ZGF0YSk7XHJcbiAgICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgocG9ydGxldCkgPT4ge1xyXG4gICAgICAgIHBvcnRsZXQucm93ICs9IDE7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyDmlrDlop5EYXRhVGFibGXnsbvlnovvvIwg5paw5aKeUG9ybGV0XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc2V0RGF0YU1hbmFnZXIoXHJcbiAgICAgICAgW3RoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKV0sXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hZGRPcmRlbFBvcnRsZXQubmV4dCh0aGlzLmRhc2hib2FyZC5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFtwb3J0bGV0VHlwZV0sXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgcG9ydGxldGRhdGFcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBlZGl0UG9ydGxldCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGlmIChbXCJ0YWJsZVwiLCBcInRyYW5zcG9zZVwiLCBcImZpbmFuY2lhbFRhYmxlXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcbiAgICAgICAgdGhpcy5jb25maWcuZmllbGRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICAgIGVsLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHgpID0+IHgubmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMucG9ydGxldHNbaW5kZXhdLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHJcbiAgICAgICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0c1tpbmRleF0uZmlndXJlQ29kZSA9IHRoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgICAgIHBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgIHBvcnRsZXQuZGFzaGJvYXJkRGF0YVRhYmxlSWQgPSB0aGlzLmdldFNlbGVjdERhdGFtYXJ0SWQoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBvcmxldC5lbWl0KHBvcnRsZXQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5wb3J0bGV0LmlkIHx8IHRoaXMucG9ydGxldC5uZXdJZDtcclxuICAgICAgdGhpcy5jaGFydFVwZGF0ZS5lbWl0KGlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN3aXRjaFRhYih0eXBlKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSB0eXBlO1xyXG4gICAgdGhpcy5vblRvZ2dsZVRhYmFjdGl2ZS5lbWl0KCF0aGlzLnRhYmFjdGl2ZSk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldEVkaXQubmV4dCh0aGlzLmRhc2hib2FyZElkKTtcclxuICB9XHJcblxyXG4gIGdhZGdldFRpdGxlQ2hhbmdlKG5ld09iaikge1xyXG4gICAgaWYgKCF0aGlzLnBvcnRsZXQgfHwgIXRoaXMucG9ydGxldC5jb25maWcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5jb25maWcuZ2FkZ2V0VGl0bGUgPSBuZXdPYmo7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucG9ydGxldHMuZmluZEluZGV4KFxyXG4gICAgICAoeCkgPT4geC5uZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkXHJcbiAgICApO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgIHRoaXMucG9ydGxldC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldFRpdGxlLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhYmluZCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgY29uc3QgeyBkYXRhTWFydFRhYmxlcyA9IHt9IH0gPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlO1xyXG4gICAgICBsZXQgZmlndXJlQ29kZSA9IHRoaXMucG9ydGxldC5maWd1cmVDb2RlO1xyXG4gICAgICBkYXRhTWFydFRhYmxlc1t0aGlzLmRhc2hib2FyZC5pZF0uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmRhdGFtYXJ0Q29kZSA9PT0gZmlndXJlQ29kZSAmJiBpdGVtLnByZWZpeCkge1xyXG4gICAgICAgICAgZmlndXJlQ29kZSA9IGl0ZW0ucHJlZml4O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmRhdGFNYXJ0VGFibGVMaXN0ICYmXHJcbiAgICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGFtYXJ0Q29kZSA9PT0gZmlndXJlQ29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5wcmVmaXggPT09IGZpZ3VyZUNvZGUpIHtcclxuICAgICAgICAgICAgZmlndXJlQ29kZSA9IGRhdGEuZGF0YW1hcnRDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBmaWd1cmVDb2RlO1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHt9O1xyXG4gICAgICBpZiAodGhpcy5wb3J0bGV0LmNvbmZpZykgdGhpcy5jb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgICB0aGlzLmhhc01hcmtlciA9IHRoaXMuY29uZmlnLmhhc01hcmtlcjtcclxuICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQgfHwgXCJcIjtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gdGhpcy5jb25maWcuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVzdG9yID0gdGhpcy5jb25maWcuc2VsZWN0ZWRJbnZlc3RvcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZSA9IHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgICAgICB0aGlzLnBvcnRsZXRUeXBlID0gdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGlmIChbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWCA9IHRoaXMuX3NlbGVjdGVkWDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWSA9IHRoaXMuX3NlbGVjdGVkWTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IHRoaXMuX3NlbGVjdGVkU2Vjb25kWTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gdGhpcy5fc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RUaGVtZSA9IHRoaXMuX3NlbGVjdFRoZW1lO1xyXG4gICAgICAgIHRoaXMucG9ydGxldFR5cGUgPSB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZTtcclxuICAgICAgICB0aGlzLmdldERhdGEodGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUsIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcIm5ld2NoYXJ0XCIpIHtcclxuICAgICAgICB0aGlzLnBvcnRsZXRUeXBlID0gXCJuZXdjaGFydFwiO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcGFsZXR0ZXMgfSA9IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncztcclxuICAgICAgICAgICAgaWYgKHBhbGV0dGVzICYmIHBhbGV0dGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGhlbWUgPSB0aGlzLnRoZW1lRGF0YS5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgICAgIC8vIOeUqOS6juWIpOaWreS4pOS4qlxyXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShpdGVtLnZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkocGFsZXR0ZXMpXHJcbiAgICAgICAgICAgICAgKS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKFtdKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIGdldENvbmZpZyhmaWVsZHMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRhYklkOiB0aGlzLmFjdGl2ZVRhYklkLFxyXG4gICAgICB0YWJMYWJlbDogdGhpcy5hY3RpdmVUYWJMYWJlbCxcclxuICAgICAgcG9ydGxldFR5cGU6IFwiXCIsXHJcbiAgICAgIGdhZGdldFRpdGxlOiBcIlwiLFxyXG4gICAgICBpc1VwVG9EYXRlOiBmYWxzZSxcclxuICAgICAgcGVyaW9kOiAzLFxyXG4gICAgICBwYWdlYnJlYWs6IGZhbHNlLFxyXG4gICAgICB0aW1lTWVhc3VyZTogXCJNVERcIixcclxuICAgICAgc2VyaWVzOiBbXSxcclxuICAgICAgc1NlcmllczogW10sXHJcbiAgICAgIHRyZW5kc09yZGVyOiAxLFxyXG4gICAgICBzaG93VHJlbmRzOiB0cnVlLFxyXG4gICAgICBudW1iZXJGb3JtYXQ6IFwiIywjIzBcIixcclxuICAgICAgc2hvd0N1cnJlbnREYXRhOiBmYWxzZSxcclxuICAgICAgZmllbGRzOiBmaWVsZHMsXHJcbiAgICAgIGFsbEZpZWxkczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX1RFWFRfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIHRleHQgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX0RBVEVfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIGRhdGUgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJkYXRlXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9OVU1CRVJfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIG51bWJlciBmaWVsZHNcIixcclxuICAgICAgICAgIGRhdGFUeXBlOiBcIm51bWJlclwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sTmFtZTogXCJBTExfSU5URUdFUl9GSUVMRFNcIixcclxuICAgICAgICAgIGxhbmdWYWx1ZTogXCJBbGwgaW50ZWdlciBmaWVsZHNcIixcclxuICAgICAgICAgIGRhdGFUeXBlOiBcImludGVnZXJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX1BFUkNFTlRBR0VfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIHBlcmNlbnRhZ2UgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJwZXJjZW50XCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9NVUxUSVBMRV9GSUVMRFNcIixcclxuICAgICAgICAgIGxhbmdWYWx1ZTogXCJBbGwgbXVsdGlwbGUgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJtdWx0aXBsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBmaWx0ZXJTZXR0aW5nczogW10sXHJcbiAgICAgIGNvbHVtbkdyb3VwOiBbXSxcclxuICAgICAgbGlzdE9mSW52ZXN0ZWVJZDogW10sXHJcbiAgICAgIGludmVzdGVlSWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgIGdyb3VwQnk6IFwiXCIsXHJcbiAgICAgIGdyb3VwczogW10sXHJcbiAgICAgIGFzT2ZEYXRlOiBcIlwiLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IFwiXCIsXHJcbiAgICAgIGZ1bmRJZDogXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcclxuICAgICAgeGF4aXM6IHsgZ3JvdXBzOiBbXSB9LFxyXG4gICAgICB5YXhpczoge1xyXG4gICAgICAgIHNlcmllczogW3sgcG9ydGxldFR5cGU6IFwiXCIsIGNvbE5hbWU6IFwiXCIsIGNhbE1ldGhvZDogXCJcIiB9XSxcclxuICAgICAgfSxcclxuICAgICAgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IFtdLFxyXG4gICAgICBjb2x1bW5zV2lkdGg6IFtdLFxyXG4gICAgICBzb3J0U2V0dGluZ3M6IFtdLFxyXG4gICAgICBncm91cFNldHRpbmdzOiBbXSxcclxuICAgICAgdmFsdWVTb3J0U2V0dGluZ3M6IHt9LFxyXG4gICAgICBzaG93R3JhbmRUb3RhbHM6IHRydWUsXHJcbiAgICAgIHNob3dSb3dHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgICAgc2hvd0NvbHVtbkdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93U3ViVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93Um93U3ViVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93Q29sdW1uU3ViVG90YWxzOiB0cnVlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZEludmVzdG9yID0gbnVsbDtcclxuICBwdWJsaWMgaW52ZXN0b3JMaXN0ID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkVmlzdWFsVHlwZSA9IG51bGw7XHJcbiAgcHVibGljIHZpc3VhbFR5cGVMaXN0ID0gW107XHJcblxyXG4gIC8vIGhpc3RvcmljYWwgSVJSIGZyZXF1ZW5jeSDkuI3pnIDopoEgRGFpbHlcclxuICBnZXQgZnJlcXVlbmN5T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLm11bHRpcGxlc0xpc3QuZmlsdGVyKChpKSA9PiBpLmxhbmdDb2RlICE9PSBcIkRBSUxZXCIpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEhpc3RvcmljYWxJUlJPcHRpb25zKCkge1xyXG4gICAgY29uc3QgY2hhcnRUZXh0ID0gdGhpcy50cmFuc2xhdGlvbi5DT01QQU5ZX0NIQVJUIHx8IFwiLkNPTVBBTllfQ0hBUlRcIjtcclxuICAgIHRoaXMuaW52ZXN0b3JMaXN0ID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgY29kZTogXCJBbGxcIixcclxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0aW9uLkFMTCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwiRXhjbHVkZUdQJlNMUFwiLFxyXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRpb25bXCJFWENMVURFX0dQJlNMUFwiXSB8fCBcIi5FeGNsdWRlIEdQJlNMUFwiLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMudmlzdWFsVHlwZUxpc3QgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBjb2RlOiBcIm5ld2xpbmVcIixcclxuICAgICAgICB0ZXh0OiBgJHt0aGlzLnRyYW5zbGF0aW9uLkxJTkUgfHwgXCIuTElORVwifSAke2NoYXJ0VGV4dH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgY29kZTogXCJuZXdjb2x1bW5cIixcclxuICAgICAgICB0ZXh0OiBgJHt0aGlzLnRyYW5zbGF0aW9uLkNPTFVNTn0gJHtjaGFydFRleHR9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwidGFibGVcIixcclxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0aW9uLlRBQkxFIHx8IFwiLlRBQkxFXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEhpc3RvcmljYWxJUlJQb3J0bGV0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEludmVzdG9yID0gXCJBbGxcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMgPSBcIlFVQVJURVJMWVwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgPSBcIm5ld2xpbmVcIjtcclxuICAgIHRoaXMuc2V0SGlzdG9yaWNhbElSUkNoYXJ0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldEhpc3RvcmljYWxJUlJDaGFydChvcGVuZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChvcGVuZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZSAhPT0gXCJ0YWJsZVwiICYmXHJcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZSA9PT0gXCJ0YWJsZVwiXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYXNNYXJrZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGUgPSB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkSW52ZXN0b3IgPSB0aGlzLnNlbGVjdGVkSW52ZXN0b3I7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgIT09IFwidGFibGVcIikge1xyXG4gICAgICAvLyDov5nph4znoa7lrpogeOOAgXkg6L205a2X5q615ZCN56ewXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRYID0gXCJEYXRlXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRZID0gW1wiSVJSXCJdO1xyXG4gICAgICByZXR1cm4gdGhpcy54eUNoYW5nZShmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRYOiBhbnkgPSBudWxsO1xyXG4gIHNlbGVjdGVkWTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRTZWNvbmRZOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE11bHRpcGxlczogYW55ID0gbnVsbDtcclxuICBtYXJrZXJGb3JtYXQgPSBcIlwiO1xyXG4gIG1hcmtlckZvcm1hdExpc3QgPSBbXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIlwiLFxyXG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbi5OT05FIHx8IFwiLk5vbmVcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIktcIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uVEhPVVNBTkRTIHx8IFwiLlRob3VzYW5kc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdmFsdWU6IFwiTVwiLFxyXG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbi5NSUxMSU9OUyB8fCBcIi5NaWxsaW9uc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdmFsdWU6IFwiYm5cIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uQklMTElPTlMgfHwgXCIuQmlsbGlvbnNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIlRcIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uVFJJTExJT05TIHx8IFwiLlRyaWxsaW9uc1wiLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIGhhc01hcmtlciA9IGZhbHNlO1xyXG5cclxuICBsYWJlbENvbmZpZ0NoYW5nZShlKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5oYXNNYXJrZXIgPSBlO1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdCh7XHJcbiAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgIGNvbmZpZzogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2Uuc3dpdGNoTGFiZWxDb25maWcubmV4dCh7XHJcbiAgICAgIGNoZWNrZWQ6IGUsXHJcbiAgICAgIGlkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHh5Q2hhbmdlKGUpIHtcclxuICAgIGlmIChlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVUaGVtZS5lbWl0KHtcclxuICAgICAgICBzZWxlY3RlZFg6IHRoaXMuc2VsZWN0ZWRYLFxyXG4gICAgICAgIHNlbGVjdGVkWTogdGhpcy5zZWxlY3RlZFksXHJcbiAgICAgICAgc2VsZWN0ZWRNdWx0aXBsZXM6IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMsXHJcbiAgICAgICAgc2VsZWN0ZWRTZWNvbmRZOiB0aGlzLnNlbGVjdGVkU2Vjb25kWSxcclxuICAgICAgICBzZWxlY3RUaGVtZTogdGhpcy5zZWxlY3RUaGVtZSxcclxuICAgICAgICBoYXNNYXJrZXI6IHRoaXMuaGFzTWFya2VyLFxyXG4gICAgICAgIG1hcmtlckZvcm1hdDogdGhpcy5tYXJrZXJGb3JtYXQsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jb25maWdbXCJtYXJrZXJGb3JtYXRcIl0gPSB0aGlzLm1hcmtlckZvcm1hdDtcclxuICAgICAgdGhpcy5jb25maWdbXCJoYXNNYXJrZXJcIl0gPSB0aGlzLmhhc01hcmtlcjtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFlcIl0gPSB0aGlzLnNlbGVjdGVkWTtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFNlY29uZFlcIl0gPSB0aGlzLnNlbGVjdGVkU2Vjb25kWTtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0VGhlbWVcIl0gPSB0aGlzLnNlbGVjdFRoZW1lO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdCh7XHJcbiAgICAgICAgbmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuICAgICAgICBjb25maWc6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnKSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNob3dFZGl0KCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0VkaXQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucG9ydGxldFR5cGUgPT0gXCJuZXdjb2x1bW5saW5lXCIgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFkubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWS5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5BZGRPckVkaXRQb3J0bGV0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0VHlwZSAhPSBcIm5ld2NvbHVtbmxpbmVcIiAmJiB0aGlzLnNlbGVjdGVkWS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbXVsdGlwbGVzTGlzdDogYW55ID0gW107XHJcbiAgZ2V0bXVsdGlwbGVzTGlzdCgpIHtcclxuICAgIGNvbnN0IHVybCA9XHJcbiAgICAgIHRoaXMuYXBwQ29kZSA9PT0gXCJQTVNcIlxyXG4gICAgICAgID8gdGhpcy5hcGkudXJsTGlzdC5MUEdldFByb3BlcnR5TGlzdFxyXG4gICAgICAgIDogdGhpcy5hcGkudXJsTGlzdC5HZXRQcm9wZXJ0eUxpc3Q7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh1cmwsIHsgc2NvcGU6IFwiREFTSEJPQVJEX0ZSRVFVRU5DWVwiLCBsYW5nSWR4OiAyIH0sIChyZXMpID0+IHtcclxuICAgICAgdGhpcy5tdWx0aXBsZXNMaXN0ID0gcmVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYXBpdGFsaXplKHN0cikge1xyXG4gICAgLy8g5bCG5a2X56ym5Liy6L2s5o2i5Li65bCP5YaZ77yM5bm25L2/55So5q2j5YiZ6KGo6L6+5byP5bCG5q+P5Liq5Y2V6K+N55qE56ys5LiA5Liq5a2X56ym6L2s5o2i5Li65aSn5YaZXHJcbiAgICBpZiAoIXN0cikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxiXFx3L2csIGZ1bmN0aW9uIChjaGFyKSB7XHJcbiAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdERhdGFtYXJ0SWQoKSB7XHJcbiAgICAvLyDojrflj5bnnJ/mraPnmoREYXRhbWFydElEXHJcbiAgICBjb25zdCBjb2RlID0gdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpO1xyXG4gICAgbGV0IGRhdGFNYXJ0VGFibGVzID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5kYXRhTWFydFRhYmxlc1tcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuaWRcclxuICAgIF0uZmlsdGVyKChlbCkgPT4gY29kZSA9PSBlbC5kYXRhbWFydENvZGUpO1xyXG4gICAgaWYgKGRhdGFNYXJ0VGFibGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIGRhdGFNYXJ0VGFibGVzWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgID8gdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlXHJcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZTtcclxuICAgIC8vIOiOt+WPluecn+ato+eahERhdGFtYXJ0Q29kZVxyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3REYXRhbWFydENvZGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0YW1hcnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhbWFydENvZGUoKSB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5kYXRhTWFydFRhYmxlc1tcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuaWRcclxuICAgIF0uZmlsdGVyKChlKSA9PiB7XHJcbiAgICAgIHJldHVybiBlW1wiZGF0YW1hcnRDb2RlXCJdID09IHRoaXMuc2VsZWN0ZWREYXRhbWFydDtcclxuICAgIH0pO1xyXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoaXRlbVswXVtcInByZWZpeFwiXSkge1xyXG4gICAgICAgIHJldHVybiBgJHtpdGVtWzBdW1wicHJlZml4XCJdfSR7XHJcbiAgICAgICAgICB0aGlzLmNhcGl0YWxpemUodGhpcy5zZWxlY3RlZE11bHRpcGxlcykgfHwgXCJcIlxyXG4gICAgICAgIH1gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtWzBdW1wiZGF0YW1hcnRDb2RlXCJdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRoZW1lOiBhbnkgPSBcInRoZW1lMVwiO1xyXG4gIGNoYW5nZVRoZW1lKGUsIHR5cGUpIHtcclxuICAgIHRoaXMuc2VsZWN0VGhlbWUgPSBlLnZhbHVlO1xyXG4gICAgdGhpcy5jb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICB0aGlzLnVwZGF0ZVRoZW1lLmVtaXQoe1xyXG4gICAgICBzZWxlY3RlZFg6IHRoaXMuc2VsZWN0ZWRYLFxyXG4gICAgICBzZWxlY3RlZFk6IHRoaXMuc2VsZWN0ZWRZLFxyXG4gICAgICBzZWxlY3RlZE11bHRpcGxlczogdGhpcy5zZWxlY3RlZE11bHRpcGxlcyxcclxuICAgICAgc2VsZWN0ZWRTZWNvbmRZOiB0aGlzLnNlbGVjdGVkU2Vjb25kWSxcclxuICAgICAgc2VsZWN0VGhlbWU6IHRoaXMuc2VsZWN0VGhlbWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2hvd0VkaXQoKTtcclxuICB9XHJcblxyXG4gIHNvcnREYXRhTWFydFRhYmxlcyhkYXRhKSB7XHJcbiAgICBkYXRhLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgbGFuZ1ZhbHVlQSA9IGEubGFuZ1ZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGxhbmdWYWx1ZUIgPSBiLmxhbmdWYWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgaWYgKGxhbmdWYWx1ZUEgPCBsYW5nVmFsdWVCKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsYW5nVmFsdWVBID4gbGFuZ1ZhbHVlQikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUZvcm1hdCgpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5tYXJrZXJGb3JtYXQubmV4dCh7XHJcbiAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgIG1hcmtlckZvcm1hdDogdGhpcy5tYXJrZXJGb3JtYXQsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
1793
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvc2lkZWJhci1pY29ubGlzdC9zaWRlYmFyLWljb25saXN0LW5ldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5EO0lBMlZFLHFDQUNVLEdBQVksRUFDYixnQkFBa0MsRUFDbEMsdUJBQWdELEVBQy9DLEdBQXNCLEVBQ1MsR0FBUSxFQUNBLElBQVM7UUFMaEQsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNiLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUMvQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNTLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDQSxTQUFJLEdBQUosSUFBSSxDQUFLO1FBMVZqRCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFLbkMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsZUFBVSxHQUFRLEVBQUUsQ0FBQztR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L0MsMkNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi4vYXBpXCI7XHJcbmltcG9ydCB7IEFQSV9TRVJWSUNFX1RPS0VOLCBQQkZfVE9LRU4gfSBmcm9tIFwiLi4vLi4vc2VydmljZS9JbmplY3Rpb25Ub2tlblwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtc2lkZWJhci1pY29ubGlzdC1uZXdcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NpZGViYXItaWNvbmxpc3QtbmV3LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3NpZGViYXItaWNvbmxpc3QtbmV3LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZWJhckljb25saXN0TmV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXNoYm9hcmRfc2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmRJZDtcclxuICBASW5wdXQoKSBhY3RpdmVUYWJJZDtcclxuICBASW5wdXQoKSBhY3RpdmVUYWJMYWJlbDtcclxuICBASW5wdXQoKSBwb3J0bGV0cyA9IFtdO1xyXG4gIEBJbnB1dCgpIHRhYmFjdGl2ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHBvcnRsZXQ7XHJcbiAgQElucHV0KCkgZmlndXJlQ29kZTtcclxuICBASW5wdXQoKSBfc2VsZWN0ZWRYOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBfc2VsZWN0ZWRZOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBfc2VsZWN0ZWRNdWx0aXBsZXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgX3NlbGVjdGVkU2Vjb25kWTogYW55ID0gW107XHJcbiAgQElucHV0KCkgX3NlbGVjdFRoZW1lOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGFwcENvZGU7XHJcbiAgQE91dHB1dCgpIGNsb3NlU2lkZWJhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlUG9ybGV0Q29uZmlnID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblRvZ2dsZVRhYmFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlUG9ybGV0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQdXNoQnRuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGFydFVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlVGhlbWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHVibGljIHRyYW5zbGF0aW9uID0gZ2V0VHJhbnNsYXRpb24oKTtcclxuICBwcml2YXRlIGxhbmc7XHJcbiAgcHVibGljIGRhdGFNYXJ0VGFibGVMaXN0ID0gW107XHJcbiAgaGFzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIC8vY29uZmlnO1xyXG4gIHB1YmxpYyBnYWRnZXRUaXRsZTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIHBvcnRsZXRUeXBlO1xyXG4gIHB1YmxpYyBleHBhbmRBcnJheTogQXJyYXk8Ym9vbGVhbj4gPSBbXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICBdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZERhdGFUYWJsZTogYW55ID0gXCJcIjtcclxuICBwdWJsaWMgc2VsZWN0ZWREYXRhbWFydDtcclxuICBwdWJsaWMgY2hhcnRTZXR0aW5ncyA9IHtcclxuICAgIGxlZ2VuZFNldHRpbmdzOiB7XHJcbiAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgfSxcclxuICAgIGVuYWJsZU11bHRpcGxlQXhpczogZmFsc2UsXHJcbiAgICBzaG93TXVsdGlMZXZlbExhYmVsczogZmFsc2UsXHJcbiAgICBjaGFydFNlcmllczoge1xyXG4gICAgICB0eXBlOiBcIkNvbHVtblwiLFxyXG4gICAgICB3aWR0aDogMixcclxuICAgIH0sXHJcbiAgICBtdWx0aXBsZUF4aXNNb2RlOiBcIlN0YWNrZWRcIixcclxuICAgIHByaW1hcnlYQXhpczoge1xyXG4gICAgICB0aXRsZTogXCIgXCIsXHJcbiAgICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICB9LFxyXG4gICAgY2hhcnRBcmVhOiB7XHJcbiAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgIHdpZHRoOiAwLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHBhbGV0dGVzOiBbXHJcbiAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICBdLFxyXG4gICAgcHJpbWFyeVlBeGlzOiB7XHJcbiAgICAgIC8vIFnovbTmoIfpopjorr7nva7kuLrnqbpcclxuICAgICAgdGl0bGU6IFwiIFwiLFxyXG4gICAgfSxcclxuICAgIHpvb21TZXR0aW5nczoge1xyXG4gICAgICBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOm8oOagh+a7mui9rue8qeaUvlxyXG4gICAgICBlbmFibGVQaW5jaFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjop6bmkbjnvKnmlL5cclxuICAgICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOmAieaLqeWMuuWfn+e8qeaUvlxyXG4gICAgICBlbmFibGVEZWZlcnJlZFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjlu7bov5/nvKnmlL5cclxuICAgICAgdG9vbGJhckl0ZW1zOiBbXSxcclxuICAgICAgZW5hYmxlU2Nyb2xsYmFyOiBmYWxzZSxcclxuICAgICAgZW5hYmxlWm9vbWluZzogZmFsc2UsXHJcbiAgICB9LFxyXG4gIH07XHJcbiAgcHVibGljIGRpc3BsYXlPcHRpb24gPSB7IHZpZXc6IFwiQm90aFwiLCBwcmltYXJ5OiBcIkNoYXJ0XCIgfTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBjdXJyZW50VGFiOiBzdHJpbmcgPSBcInRhYjFcIjtcclxuICBwdWJsaWMgeUxpc3Q6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBjaGFydFR5cGVMaXN0ID0gW1xyXG4gICAgXCJDb2x1bW5cIixcclxuICAgIFwiQmFyXCIsXHJcbiAgICBcIkxpbmVcIixcclxuICAgIFwiU3BsaW5lXCIsXHJcbiAgICBcIkFyZWFcIixcclxuICAgIFwiU2NhdHRlclwiLFxyXG4gICAgXCJQb2xhclwiLFxyXG4gICAgXCJQaWVcIixcclxuICAgIFwiRG91Z2hudXRcIixcclxuICAgIFwiU3RhY2tlZCBDb2x1bW5cIixcclxuICAgIFwiUmFkYXJcIixcclxuICBdO1xyXG4gIHB1YmxpYyBtdWx0aXBsZUF4aXNNb2RlTGlzdCA9IFtcIlN0YWNrZWRcIiwgXCJTaW5nbGVcIiwgXCJDb21iaW5lZFwiXTtcclxuICB0aGVtZURhdGE6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxM1wiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMzNUI5RkNcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE0XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMDQ1NzhGXCIsIFwiIzNFQkJDRVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTVcIixcclxuICAgICAgdmFsdWU6IFtcIiMxQzM0ODRcIiwgXCIjMTM2QkJCXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTZcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA4MkFGXCIsIFwiIzNFQkJDRVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTdcIixcclxuICAgICAgdmFsdWU6IFtcIiMxQzM0ODRcIiwgXCIjMTY1OUE5XCIsIFwiIzFEOTdFMVwiLCBcIiMzNUI5RkNcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE4XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMDQ1NzhGXCIsIFwiIzAwNzBBM1wiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxOVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMTM3NUM0XCIsIFwiIzFEOTdFMVwiLCBcIiMzNUI5RkNcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTIwXCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMDQ1NzhGXCIsIFwiIzAwNzBBM1wiLCBcIiMwMDg5QjRcIiwgXCIjMTZBMkMyXCIsIFwiIzNFQkJDRVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjFcIixcclxuICAgICAgdmFsdWU6IFtcIiMxQzM0ODRcIiwgXCIjMTY1OUE5XCIsIFwiIzEzNjhCOFwiLCBcIiMxMzc1QzRcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjJcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzAwN0ZBRFwiLCBcIiMwMDg5QjRcIiwgXCIjMTZBMkMyXCIsIFwiIzNFQkJDRVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjNcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMxQzM0ODRcIixcclxuICAgICAgICBcIiMxNjU5QTlcIixcclxuICAgICAgICBcIiMxNDVGQUZcIixcclxuICAgICAgICBcIiMxMzY4QjhcIixcclxuICAgICAgICBcIiMxMzc1QzRcIixcclxuICAgICAgICBcIiMxRDk3RTFcIixcclxuICAgICAgICBcIiMzNUI5RkNcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjRcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMwNDU3OEZcIixcclxuICAgICAgICBcIiMwMDcwQTNcIixcclxuICAgICAgICBcIiMwMDc4QTlcIixcclxuICAgICAgICBcIiMwMDdGQURcIixcclxuICAgICAgICBcIiMwMDg5QjRcIixcclxuICAgICAgICBcIiMxNkEyQzJcIixcclxuICAgICAgICBcIiMzRUJCQ0VcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTFcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMxQzM0ODRcIixcclxuICAgICAgICBcIiMxOTQ2OTdcIixcclxuICAgICAgICBcIiMxNjU5QTlcIixcclxuICAgICAgICBcIiMxMzZCQkJcIixcclxuICAgICAgICBcIiMxNDdFQ0NcIixcclxuICAgICAgICBcIiMxQjkyRERcIixcclxuICAgICAgICBcIiMyNkE1RURcIixcclxuICAgICAgICBcIiMzNUI5RkNcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTJcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMwNDU3OEZcIixcclxuICAgICAgICBcIiMwMDY1OUJcIixcclxuICAgICAgICBcIiMwMDczQTZcIixcclxuICAgICAgICBcIiMwMDgyQUZcIixcclxuICAgICAgICBcIiMwMDkwQjhcIixcclxuICAgICAgICBcIiMwRjlFQzBcIixcclxuICAgICAgICBcIiMyOUFEQzdcIixcclxuICAgICAgICBcIiMzRUJCQ0VcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyXCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTNcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lNFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzJmNDk5ZlwiLFxyXG4gICAgICAgIFwiIzhkMWQyZVwiLFxyXG4gICAgICAgIFwiI2U5YmYzNVwiLFxyXG4gICAgICAgIFwiIzUxNzcyZlwiLFxyXG4gICAgICAgIFwiIzQ2OWJkOFwiLFxyXG4gICAgICAgIFwiIzVjNDQ4ZlwiLFxyXG4gICAgICAgIFwiI2RhNzMyZlwiLFxyXG4gICAgICAgIFwiIzI0NTM1M1wiLFxyXG4gICAgICAgIFwiIzQzYTI0NVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU1XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMzgzODM5XCIsXHJcbiAgICAgICAgXCIjNDQ2ZWM2XCIsXHJcbiAgICAgICAgXCIjY2Y2Mzg0XCIsXHJcbiAgICAgICAgXCIjZWJiMzdlXCIsXHJcbiAgICAgICAgXCIjNzFhMjQ5XCIsXHJcbiAgICAgICAgXCIjNGJiMWE1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTZcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM1MTdhZTFcIixcclxuICAgICAgICBcIiM2Mzg2ZTVcIixcclxuICAgICAgICBcIiM3NDkxZTlcIixcclxuICAgICAgICBcIiM4NDlkZWNcIixcclxuICAgICAgICBcIiM5NGE5ZWZcIixcclxuICAgICAgICBcIiNhNGI2ZjJcIixcclxuICAgICAgICBcIiNiNGMzZjZcIixcclxuICAgICAgICBcIiNjNGNmZjlcIixcclxuICAgICAgICBcIiNkNGRkZmRcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lN1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzM5ODI4ZVwiLFxyXG4gICAgICAgIFwiIzQ4OGU5OVwiLFxyXG4gICAgICAgIFwiIzU3OWFhNVwiLFxyXG4gICAgICAgIFwiIzY2YTZiMFwiLFxyXG4gICAgICAgIFwiIzc1YjNiZFwiLFxyXG4gICAgICAgIFwiIzg1YmZjOVwiLFxyXG4gICAgICAgIFwiIzk1Y2RkNlwiLFxyXG4gICAgICAgIFwiI2E0ZGFlMlwiLFxyXG4gICAgICAgIFwiI2I1ZThmMFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU4XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjZTc5NjNkXCIsXHJcbiAgICAgICAgXCIjZWE5ZTRiXCIsXHJcbiAgICAgICAgXCIjZWVhNjU5XCIsXHJcbiAgICAgICAgXCIjZjBhZTY4XCIsXHJcbiAgICAgICAgXCIjZjJiNjc4XCIsXHJcbiAgICAgICAgXCIjZjNiZjg3XCIsXHJcbiAgICAgICAgXCIjZjVjNzk4XCIsXHJcbiAgICAgICAgXCIjZjZkMGFhXCIsXHJcbiAgICAgICAgXCIjZjdkOWJiXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTlcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM2NGE4YjRcIixcclxuICAgICAgICBcIiM3ZWJlYzBcIixcclxuICAgICAgICBcIiM5Y2M5Y2FcIixcclxuICAgICAgICBcIiNiOGQ0ZDRcIixcclxuICAgICAgICBcIiNkOWQ2Y2RcIixcclxuICAgICAgICBcIiNkOGI3YTdcIixcclxuICAgICAgICBcIiNjZThmOTNcIixcclxuICAgICAgICBcIiNjMTYyN2ZcIixcclxuICAgICAgICBcIiNhZDI0NThcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTBcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM0MTc2YmFcIixcclxuICAgICAgICBcIiM1NTlhZThcIixcclxuICAgICAgICBcIiM3MGIzZThcIixcclxuICAgICAgICBcIiNhN2NjZTdcIixcclxuICAgICAgICBcIiNkZmRmZGZcIixcclxuICAgICAgICBcIiNkMmEwOGJcIixcclxuICAgICAgICBcIiNjNzZhNTBcIixcclxuICAgICAgICBcIiNjYTRlMzRcIixcclxuICAgICAgICBcIiNhYTNjMjlcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIHRoZW1lRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwidmFsdWVcIiwgdmFsdWU6IFwiaWRcIiB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpOiBBcGlMaXN0LFxyXG4gICAgcHVibGljIGRhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2U6IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQQkZfVE9LRU4pIHByaXZhdGUgcGJmOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQSV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIGh0dHA6IGFueVxyXG4gICkge31cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY3VycmVudFRhYiA9IHRoaXMudGFiYWN0aXZlID8gXCJ0YWIxXCIgOiBcInRhYjJcIjtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gICAgdGhpcy5zZXREYXRhYmluZCgpO1xyXG4gICAgdGhpcy5pbml0SGlzdG9yaWNhbElSUk9wdGlvbnMoKTtcclxuICAgIHRoaXMuZ2V0bXVsdGlwbGVzTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTsgLy8g5qCH6K6w5Li66ZyA6KaB5qOA5rWLXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0UHVzaGJ0bigpLnN1YnNjcmliZSgoaWQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmQgJiYgdGhpcy5kYXNoYm9hcmQuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKFtdKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhbWFydCA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkWCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkWSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldHBvcnRsZXRFZGl0KCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG4gICAgICAgIGlmIChkYXNoYm9hcmRJZCA9PT0gdGhpcy5kYXNoYm9hcmRJZCkge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhYmluZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmluaXREYXRhTWFydFRhYmxlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGF0YU1hcnRUYWJsZUxpc3QoKSB7XHJcbiAgICB0aGlzLmRhdGFNYXJ0VGFibGVMaXN0ID0gWy4uLnRoaXMuZGFzaGJvYXJkLmRhdGFNYXJ0VGFibGVzXS5maWx0ZXIoXHJcbiAgICAgIChpdGVtKSA9PiAhaXRlbS5pc0hpZGVcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5yZW5hbWVEYXRhTWFydFRhYmxlcyhcclxuICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdCxcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuaWQsXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmVudGl0eVR5cGVcclxuICAgICk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNvcnREYXRhTWFydFRhYmxlcyh0aGlzLmRhdGFNYXJ0VGFibGVMaXN0KTtcclxuICAgIGlmICghdGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBmaWd1cmVDb2RlID0gdGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGU7XHJcbiAgICB0aGlzLmRhc2hib2FyZC5kYXRhTWFydFRhYmxlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmRhdGFtYXJ0Q29kZSA9PT0gZmlndXJlQ29kZSAmJiBpdGVtLnByZWZpeCkge1xyXG4gICAgICAgIGZpZ3VyZUNvZGUgPSBpdGVtLnByZWZpeDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmRhdGFNYXJ0VGFibGVMaXN0LmZpbmQoKGl0ZW0pID0+IGl0ZW0uZGF0YW1hcnRDb2RlID09PSBmaWd1cmVDb2RlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLnByZWZpeCA9PT0gZmlndXJlQ29kZSkge1xyXG4gICAgICAgICAgZmlndXJlQ29kZSA9IGRhdGEuZGF0YW1hcnRDb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0ID0gZmlndXJlQ29kZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0V2l6YXJkKHdpemFyZDogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuZXhwYW5kQXJyYXlbd2l6YXJkXSkge1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5ID0gW1xyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5W3dpemFyZF0gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHBhbmRBcnJheVt3aXphcmRdID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gZ2V0VHJhbnNsYXRpb24oKTtcclxuICAgIHRoaXMubGFuZyA9IHRoaXMucGJmLmdldExhbmd1YWdlUGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2xlYXJTaWRlYmFyLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBjbG9zZSgpIHtcclxuICAgIHRoaXMudXBkYXRlUHVzaEJ0bi5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQobnVsbCk7XHJcbiAgICB0aGlzLmNsb3NlU2lkZWJhci5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWd1cmVjb2RlKCkge1xyXG4gICAgbGV0IGNvZGVBcnIgPSBbXCJUYXNrc1wiLCBcIkZ1bmRMaXN0XCIsIFwiSVJSXCIsIFwiTm90ZXNcIl07XHJcbiAgICBsZXQgaSA9IGNvZGVBcnIuaW5kZXhPZih0aGlzLmZpZ3VyZUNvZGUpO1xyXG4gICAgcmV0dXJuIGkgPiAtMSA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIOWbvuihqOexu+Wei+abtOaUuWV2ZW50XHJcbiAgcHVibGljIGdldFBvcnRsZXRUeXBlKCRldmVudCkge1xyXG4gICAgdGhpcy5wb3J0bGV0VHlwZSA9ICRldmVudDtcclxuICAgIHRoaXMuaGFzQ2hhbmdlZCA9IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlICE9PSB0aGlzLnBvcnRsZXRUeXBlO1xyXG4gICAgY29uc3QgcHJldlR5cGUgPSB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZTtcclxuICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID0gdGhpcy5wb3J0bGV0VHlwZTtcclxuICAgIGlmICghJGV2ZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcygkZXZlbnQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRYID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFkgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXlbMl0gPSBmYWxzZTtcclxuICAgICAgdGhpcy5leHBhbmRBcnJheVs3XSA9IHRydWU7XHJcbiAgICAgIC8vIOS/ruWkjeacieaXtumAieaLqSB4eSDovbTml7bmsqHmnInmlbDmja7nmoTpl67pophcclxuICAgICAgaWYgKHRoaXMucG9ydGxldCAmJiB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSkge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSh0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSwgZmFsc2UsIHRoaXMucG9ydGxldFR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBvcnRsZXRUeXBlID09PSBcIm5ld2NoYXJ0XCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzID0ge1xyXG4gICAgICAgICAgLi4udGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZy5jaGFydFNldHRpbmdzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzID0ge1xyXG4gICAgICAgICAgbGVnZW5kU2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZW5hYmxlTXVsdGlwbGVBeGlzOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuICAgICAgICAgIGNoYXJ0U2VyaWVzOiB7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiQ29sdW1uXCIsXHJcbiAgICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG11bHRpcGxlQXhpc01vZGU6IFwiU3RhY2tlZFwiLFxyXG4gICAgICAgICAgcHJpbWFyeVhBeGlzOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIiBcIixcclxuICAgICAgICAgICAgbWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjaGFydEFyZWE6IHtcclxuICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgYm9yZGVyOiB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcGFsZXR0ZXM6IFtcclxuICAgICAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgICAgICAgLy8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG4gICAgICAgICAgICB0aXRsZTogXCIgXCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgem9vbVNldHRpbmdzOiB7XHJcbiAgICAgICAgICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcbiAgICAgICAgICAgIGVuYWJsZVBpbmNoWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOinpuaRuOe8qeaUvlxyXG4gICAgICAgICAgICBlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcbiAgICAgICAgICAgIGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG4gICAgICAgICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICAgICAgICBlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG4gICAgICAgICAgICBlbmFibGVab29taW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCRldmVudCA9PT0gXCJoaXN0b3JpY2FsSVJSXCIpIHtcclxuICAgICAgdGhpcy5vblNlbGVjdGVkSGlzdG9yaWNhbElSUlBvcnRsZXQoKTtcclxuICAgICAgdGhpcy5leHBhbmRBcnJheVsyXSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5WzddID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRBcnJheVsyXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5leHBhbmRBcnJheVszXSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0VHlwZSkge1xyXG4gICAgICB0aGlzLkFkZE9yRWRpdFBvcnRsZXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGNoYW5nZURhdGFUYWJsZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGFUYWJsZSA9IHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZmlsdGVyKFxyXG4gICAgICAoZWwpID0+IGVsLmRhdGFtYXJ0Q29kZSA9PT0gdmFsdWVcclxuICAgIClbMF0uaWQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgdGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUgPSB2YWx1ZTtcclxuXHJcbiAgICAgIHRoaXMucG9ydGxldC5kYXNoYm9hcmREYXRhVGFibGVJZCA9IHRoaXMuZ2V0U2VsZWN0RGF0YW1hcnRJZCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldCkge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2xlYXJGaWVsZExpc3QubmV4dCh0aGlzLnBvcnRsZXQubmV3SWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldCkge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmNsZWFyRmllbGRzT2JqKHRoaXMucG9ydGxldCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldERhdGEodmFsdWUpO1xyXG4gICAgdGhpcy5leHBhbmRBcnJheVswXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5leHBhbmRBcnJheVsyXSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBfdXBkYXRlUG9ybGV0Q29uZmlnKGUpIHtcclxuICAgIHRoaXMudXBkYXRlUG9ybGV0Q29uZmlnLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGEoY29kZSwgZWRpdDogYm9vbGVhbiA9IHRydWUsIHBvcnRsZXRUeXBlID0gXCJcIikge1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgZGF0YU1hcnRDb2RlOiBjb2RlLFxyXG4gICAgICBsYW5ndWFnZTogdGhpcy5sYW5nLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc2V0U2NoZW1hUGFyYW1zKGRhdGFPYmosIGNvZGUsIHRoaXMuZGFzaGJvYXJkKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuR2V0U2NoZW1hLCBkYXRhT2JqLCAocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIFwiU2VlVGhyb3VnaFF1YXJ0ZXJseVwiLFxyXG4gICAgICAgICAgICBcIlNlZVRocm91Z2hZZWFybHlcIixcclxuICAgICAgICAgICAgXCJTZWVUaHJvdWdoTW9udGhseVwiLFxyXG4gICAgICAgICAgXS5pbmNsdWRlcyhjb2RlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmVzID0gcmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgIVtcclxuICAgICAgICAgICAgICAgIFwiQ0lfTVREXCIsXHJcbiAgICAgICAgICAgICAgICBcIkNJX1FURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDSV9ZVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ1RXUl9NVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ1RXUl9RVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ1RXUl9ZVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9NVERfOTVcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9NVERfOTlcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9RVERfOTVcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9RVERfOTlcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9ZVERfOTVcIixcclxuICAgICAgICAgICAgICAgIFwiQ1ZBUl9ZVERfOTlcIixcclxuICAgICAgICAgICAgICBdLmluY2x1ZGVzKGl0ZW0uY29sTmFtZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5maWVsZHNBcnJbdGhpcy5kYXNoYm9hcmQuaWRdKSB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5maWVsZHNBcnJbdGhpcy5kYXNoYm9hcmQuaWRdW1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0XHJcbiAgICAgICAgXSA9IHJlcztcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wb3J0bGV0LmNvbmZpZykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5wb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHBvcnRsZXRUeXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID0gcG9ydGxldFR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5maWVsZHMgPSByZXM7XHJcblxyXG4gICAgICAgICAgLy8gVE8gRE8g6L+H5rukWei9tOeahOaVsOaNrlxyXG4gICAgICAgICAgdGhpcy55TGlzdCA9IHJlcztcclxuICAgICAgICAgIHRoaXMucG9ydGxldC5jb25maWcgPSB0aGlzLmNvbmZpZyA/IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKSA6IFwiXCI7XHJcblxyXG4gICAgICAgICAgZWRpdCAmJiB0aGlzLkFkZE9yRWRpdFBvcnRsZXQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcuZmllbGRzID0gcmVzO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgICAgICAgICBwb3J0bGV0LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcmxldC5lbWl0KHBvcnRsZXQpO1xyXG4gICAgICAgICAgICAvLyBUTyBETyDov4fmu6RZ6L2055qE5pWw5o2uXHJcbiAgICAgICAgICAgIHRoaXMueUxpc3QgPSByZXM7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE11bHRpcGxlQXhpcyhlKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmNoYXJ0U2V0dGluZ3MuZW5hYmxlTXVsdGlwbGVBeGlzKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzLmxlZ2VuZFNldHRpbmdzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZW5hYmxlTXVsdGlwbGVBeGlzQ2hhbmdlLm5leHQoe1xyXG4gICAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgICAgZW5hYmxlTXVsdGlwbGVBeGlzOiB0aGlzLmNoYXJ0U2V0dGluZ3MuZW5hYmxlTXVsdGlwbGVBeGlzLFxyXG4gICAgICAgIHZpc2libGU6IHRoaXMuY2hhcnRTZXR0aW5ncy5sZWdlbmRTZXR0aW5ncy52aXNpYmxlLFxyXG4gICAgICAgIG11bHRpcGxlQXhpc01vZGU6IHRoaXMuY2hhcnRTZXR0aW5ncy5tdWx0aXBsZUF4aXNNb2RlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENoYXJ0VHlwZSgpIHtcclxuICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgaWYgKHBvcnRsZXQuY29uZmlnKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UocG9ydGxldC5jb25maWcpO1xyXG4gICAgICBjb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyA9IGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIC4uLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLFxyXG4gICAgICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7IGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyB9O1xyXG4gICAgICBwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVBvcmxldC5lbWl0KHBvcnRsZXQpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jaGFydFR5cGVDaGFuZ2UubmV4dCh7XHJcbiAgICAgICAgbmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VGhlbWVEYXRhKGUpIHtcclxuICAgIGNvbnN0IGlkID0gZS52YWx1ZTtcclxuICAgIGNvbnN0IHBvcnRsZXQgPSB0aGlzLnBvcnRsZXQ7XHJcbiAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWVEYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKTtcclxuICAgIGlmICghdGhlbWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnNldFRoZW1lLm5leHQoe1xyXG4gICAgICBuZXdJZDogcG9ydGxldC5uZXdJZCxcclxuICAgICAgdGhlbWU6IHRoZW1lLnZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQWRkT3JFZGl0UG9ydGxldCgpIHtcclxuICAgIGNvbnN0IHBvcnRsZXRUeXBlID1cclxuICAgICAgdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiXHJcbiAgICAgICAgPyB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICA6IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgaWYgKHRoaXMucG9ydGxldCAmJiB0aGlzLnBvcnRsZXQubmV3SWQpIHtcclxuICAgICAgLy8gU01QMi0xNzY1NCDpnIDopoHlsIbpgInmi6nnmoQgZnJlcXVlbmN544CBaW52ZXN0b3LjgIF2aXN1YWwgdHlwZSDkv53lrZjliLAgY29uZmlnIOS4reeUqOadpeaLv+WPluWQjuerr+aVsOaNrlxyXG4gICAgICAvLyDkvYbmmK/lpoLmnpznm7TmjqXkv53lrZggdGhpcy5jb25maWcg5Lya5Ye6546wIFNNUDItMTg4Mzcg6L+Z5LiqIEJVR1xyXG4gICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpICYmXHJcbiAgICAgICAgICAodGhpcy5zZWxlY3RlZFkubGVuZ3RoID4gMCB8fCB0aGlzLnNlbGVjdGVkU2Vjb25kWS5sZW5ndGggPiAwKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uZmlnW1wic2VsZWN0ZWRYXCJdID0gdGhpcy5zZWxlY3RlZFg7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RlZFlcIl0gPSB0aGlzLnNlbGVjdGVkWTtcclxuICAgICAgICAgIGNvbmZpZ1tcInNlbGVjdGVkU2Vjb25kWVwiXSA9IHRoaXMuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICAgICAgY29uZmlnW1wic2VsZWN0ZWRNdWx0aXBsZXNcIl0gPSB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICAgICAgY29uZmlnW1wic2VsZWN0VGhlbWVcIl0gPSB0aGlzLnNlbGVjdFRoZW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJuZXdjaGFydFwiKSB7XHJcbiAgICAgICAgICBjb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyA9IHtcclxuICAgICAgICAgICAgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzLFxyXG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25maWcuc2VsZWN0ZWRNdWx0aXBsZXMgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZE11bHRpcGxlcztcclxuICAgICAgY29uZmlnLnNlbGVjdGVkSW52ZXN0b3IgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZEludmVzdG9yO1xyXG4gICAgICBjb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlID0gdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlO1xyXG4gICAgICBjb25zdCBwb3J0bGV0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wb3J0bGV0KTtcclxuICAgICAgcG9ydGxldC5jb25maWcgPSBKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICAvLyDmlrDlop5EYXRhVGFibGXnsbvlnovvvIwg57yW6L6RUG9ybGV0XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc2V0RGF0YU1hbmFnZXIoXHJcbiAgICAgICAgW3RoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKV0sXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5lZGl0UG9ydGxldCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW3BvcnRsZXRUeXBlXSxcclxuICAgICAgICB0aGlzLmRhc2hib2FyZC5pZCxcclxuICAgICAgICBwb3J0bGV0XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZy5maWVsZHMubWFwKChlbCkgPT4ge1xyXG4gICAgICAgIGVsLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSAmJlxyXG4gICAgICAgICh0aGlzLnNlbGVjdGVkWS5sZW5ndGggPiAwIHx8IHRoaXMuc2VsZWN0ZWRTZWNvbmRZLmxlbmd0aCA+IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRYXCJdID0gdGhpcy5zZWxlY3RlZFg7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFlcIl0gPSB0aGlzLnNlbGVjdGVkWTtcclxuICAgICAgICB0aGlzLmNvbmZpZ1tcInNlbGVjdGVkU2Vjb25kWVwiXSA9IHRoaXMuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRNdWx0aXBsZXNcIl0gPSB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0VGhlbWVcIl0gPSB0aGlzLnNlbGVjdFRoZW1lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwibmV3Y2hhcnRcIikge1xyXG4gICAgICAgIHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcgPSB7XHJcbiAgICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCk7XHJcbiAgICAgIGNvbnN0IHBvcnRsZXRkYXRhID0ge1xyXG4gICAgICAgIGlkOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxyXG4gICAgICAgIG5ld0lkOiBcInBvcnRsZXRfXCIgKyB0aGlzLnBiZi5HdWlkKCksXHJcbiAgICAgICAgZGFzaGJvYXJkRGF0YVRhYmxlSWQ6IHRoaXMuZ2V0U2VsZWN0RGF0YW1hcnRJZCgpLFxyXG4gICAgICAgIGZpZ3VyZUNvZGU6IHRoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKSxcclxuICAgICAgICBjb2w6IDAsXHJcbiAgICAgICAgcm93OiAwLFxyXG4gICAgICAgIHNpemVYOiAyLFxyXG4gICAgICAgIHNpemVZOiAxLFxyXG4gICAgICAgIHBvc1g6IDAsXHJcbiAgICAgICAgcG9zWTogMCxcclxuICAgICAgICBoZWlnaHQ6IDEsXHJcbiAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyksXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQocG9ydGxldGRhdGEpO1xyXG4gICAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQpID0+IHtcclxuICAgICAgICBwb3J0bGV0LnJvdyArPSAxO1xyXG4gICAgICB9KTtcclxuICAgICAgLy8g5paw5aKeRGF0YVRhYmxl57G75Z6L77yMIOaWsOWinlBvcmxldFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNldERhdGFNYW5hZ2VyKFxyXG4gICAgICAgIFt0aGlzLmdldFRydWVTZWxlY3RlZERhdGFtYXJ0KCldLFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuYWRkT3JkZWxQb3J0bGV0Lm5leHQodGhpcy5kYXNoYm9hcmQuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBbcG9ydGxldFR5cGVdLFxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgIHBvcnRsZXRkYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgZWRpdFBvcnRsZXQoKSB7XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIGNvbnN0IHBvcnRsZXRUeXBlID1cclxuICAgICAgICB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgID8gdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlXHJcbiAgICAgICAgICA6IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgICBpZiAoW1widGFibGVcIiwgXCJ0cmFuc3Bvc2VcIiwgXCJmaW5hbmNpYWxUYWJsZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZy5maWx0ZXJTZXR0aW5ncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICBlbC52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucG9ydGxldHMuZmluZEluZGV4KFxyXG4gICAgICAgICh4KSA9PiB4Lm5ld0lkID09PSB0aGlzLnBvcnRsZXQubmV3SWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLnBvcnRsZXRzW2luZGV4XS5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcblxyXG4gICAgICAgIGlmIChbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkpIHtcclxuICAgICAgICAgIHRoaXMucG9ydGxldHNbaW5kZXhdLmZpZ3VyZUNvZGUgPSB0aGlzLmdldFRydWVTZWxlY3RlZERhdGFtYXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwb3J0bGV0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wb3J0bGV0KTtcclxuICAgICAgICBwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICBwb3J0bGV0LmRhc2hib2FyZERhdGFUYWJsZUlkID0gdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQb3JsZXQuZW1pdChwb3J0bGV0KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZCA9IHRoaXMucG9ydGxldC5pZCB8fCB0aGlzLnBvcnRsZXQubmV3SWQ7XHJcbiAgICAgIHRoaXMuY2hhcnRVcGRhdGUuZW1pdChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hUYWIodHlwZSkge1xyXG4gICAgdGhpcy5jdXJyZW50VGFiID0gdHlwZTtcclxuICAgIHRoaXMub25Ub2dnbGVUYWJhY3RpdmUuZW1pdCghdGhpcy50YWJhY3RpdmUpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnBvcnRsZXRFZGl0Lm5leHQodGhpcy5kYXNoYm9hcmRJZCk7XHJcbiAgfVxyXG5cclxuICBnYWRnZXRUaXRsZUNoYW5nZShuZXdPYmopIHtcclxuICAgIGlmICghdGhpcy5wb3J0bGV0IHx8ICF0aGlzLnBvcnRsZXQuY29uZmlnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuICAgIHRoaXMuY29uZmlnLmdhZGdldFRpdGxlID0gbmV3T2JqO1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnBvcnRsZXRzLmZpbmRJbmRleChcclxuICAgICAgKHgpID0+IHgubmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZFxyXG4gICAgKTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB0aGlzLnBvcnRsZXRzW2luZGV4XS5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnBvcnRsZXRUaXRsZS5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YWJpbmQoKSB7XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YU1hcnRUYWJsZXMgPSB7fSB9ID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZTtcclxuICAgICAgbGV0IGZpZ3VyZUNvZGUgPSB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZTtcclxuICAgICAgZGF0YU1hcnRUYWJsZXNbdGhpcy5kYXNoYm9hcmQuaWRdLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5kYXRhbWFydENvZGUgPT09IGZpZ3VyZUNvZGUgJiYgaXRlbS5wcmVmaXgpIHtcclxuICAgICAgICAgIGZpZ3VyZUNvZGUgPSBpdGVtLnByZWZpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdCAmJlxyXG4gICAgICAgIHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QubGVuZ3RoICYmXHJcbiAgICAgICAgIXRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZmluZCgoaXRlbSkgPT4gaXRlbS5kYXRhbWFydENvZGUgPT09IGZpZ3VyZUNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEucHJlZml4ID09PSBmaWd1cmVDb2RlKSB7XHJcbiAgICAgICAgICAgIGZpZ3VyZUNvZGUgPSBkYXRhLmRhdGFtYXJ0Q29kZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0ID0gZmlndXJlQ29kZTtcclxuICAgICAgdGhpcy5jb25maWcgPSB7fTtcclxuICAgICAgaWYgKHRoaXMucG9ydGxldC5jb25maWcpIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgdGhpcy5oYXNNYXJrZXIgPSB0aGlzLmNvbmZpZy5oYXNNYXJrZXI7XHJcbiAgICAgIHRoaXMubWFya2VyRm9ybWF0ID0gdGhpcy5jb25maWcubWFya2VyRm9ybWF0IHx8IFwiXCI7XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuY29uZmlnLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlc3RvciA9IHRoaXMuY29uZmlnLnNlbGVjdGVkSW52ZXN0b3I7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0VHlwZSA9IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBvcnRsZXRUeXBlID1cclxuICAgICAgICB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgID8gdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlXHJcbiAgICAgICAgICA6IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgICBpZiAoW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFggPSB0aGlzLl9zZWxlY3RlZFg7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFkgPSB0aGlzLl9zZWxlY3RlZFk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkgPSB0aGlzLl9zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuX3NlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VGhlbWUgPSB0aGlzLl9zZWxlY3RUaGVtZTtcclxuICAgICAgICB0aGlzLnBvcnRsZXRUeXBlID0gdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKHRoaXMucG9ydGxldC5maWd1cmVDb2RlLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJuZXdjaGFydFwiKSB7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0VHlwZSA9IFwibmV3Y2hhcnRcIjtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZykge1xyXG4gICAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5wYWxldHRlcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHBhbGV0dGVzIH0gPSB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3M7XHJcbiAgICAgICAgICAgIGlmIChwYWxldHRlcyAmJiBwYWxldHRlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRoZW1lID0gdGhpcy50aGVtZURhdGEuZmluZChcclxuICAgICAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAvLyDnlKjkuo7liKTmlq3kuKTkuKpcclxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXRlbS52YWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KHBhbGV0dGVzKVxyXG4gICAgICAgICAgICAgICkuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyA9IHtcclxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbjogdGhpcy5kaXNwbGF5T3B0aW9uLFxyXG4gICAgICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0ID0gXCJcIjtcclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmdldENvbmZpZyhbXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRDb25maWcoZmllbGRzKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YWJJZDogdGhpcy5hY3RpdmVUYWJJZCxcclxuICAgICAgdGFiTGFiZWw6IHRoaXMuYWN0aXZlVGFiTGFiZWwsXHJcbiAgICAgIHBvcnRsZXRUeXBlOiBcIlwiLFxyXG4gICAgICBnYWRnZXRUaXRsZTogXCJcIixcclxuICAgICAgaXNVcFRvRGF0ZTogZmFsc2UsXHJcbiAgICAgIHBlcmlvZDogMyxcclxuICAgICAgcGFnZWJyZWFrOiBmYWxzZSxcclxuICAgICAgdGltZU1lYXN1cmU6IFwiTVREXCIsXHJcbiAgICAgIHNlcmllczogW10sXHJcbiAgICAgIHNTZXJpZXM6IFtdLFxyXG4gICAgICB0cmVuZHNPcmRlcjogMSxcclxuICAgICAgc2hvd1RyZW5kczogdHJ1ZSxcclxuICAgICAgbnVtYmVyRm9ybWF0OiBcIiMsIyMwXCIsXHJcbiAgICAgIHNob3dDdXJyZW50RGF0YTogZmFsc2UsXHJcbiAgICAgIGZpZWxkczogZmllbGRzLFxyXG4gICAgICBhbGxGaWVsZHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9URVhUX0ZJRUxEU1wiLFxyXG4gICAgICAgICAgbGFuZ1ZhbHVlOiBcIkFsbCB0ZXh0IGZpZWxkc1wiLFxyXG4gICAgICAgICAgZGF0YVR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9EQVRFX0ZJRUxEU1wiLFxyXG4gICAgICAgICAgbGFuZ1ZhbHVlOiBcIkFsbCBkYXRlIGZpZWxkc1wiLFxyXG4gICAgICAgICAgZGF0YVR5cGU6IFwiZGF0ZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sTmFtZTogXCJBTExfTlVNQkVSX0ZJRUxEU1wiLFxyXG4gICAgICAgICAgbGFuZ1ZhbHVlOiBcIkFsbCBudW1iZXIgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJudW1iZXJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX0lOVEVHRVJfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIGludGVnZXIgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJpbnRlZ2VyXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9QRVJDRU5UQUdFX0ZJRUxEU1wiLFxyXG4gICAgICAgICAgbGFuZ1ZhbHVlOiBcIkFsbCBwZXJjZW50YWdlIGZpZWxkc1wiLFxyXG4gICAgICAgICAgZGF0YVR5cGU6IFwicGVyY2VudFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sTmFtZTogXCJBTExfTVVMVElQTEVfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIG11bHRpcGxlIGZpZWxkc1wiLFxyXG4gICAgICAgICAgZGF0YVR5cGU6IFwibXVsdGlwbGVcIixcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWx0ZXJzOiBbXSxcclxuICAgICAgZmlsdGVyU2V0dGluZ3M6IFtdLFxyXG4gICAgICBjb2x1bW5Hcm91cDogW10sXHJcbiAgICAgIGxpc3RPZkludmVzdGVlSWQ6IFtdLFxyXG4gICAgICBpbnZlc3RlZUlkOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxyXG4gICAgICBncm91cEJ5OiBcIlwiLFxyXG4gICAgICBncm91cHM6IFtdLFxyXG4gICAgICBhc09mRGF0ZTogXCJcIixcclxuICAgICAgY3VycmVuY3lDb2RlOiBcIlwiLFxyXG4gICAgICBmdW5kSWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgIHhheGlzOiB7IGdyb3VwczogW10gfSxcclxuICAgICAgeWF4aXM6IHtcclxuICAgICAgICBzZXJpZXM6IFt7IHBvcnRsZXRUeXBlOiBcIlwiLCBjb2xOYW1lOiBcIlwiLCBjYWxNZXRob2Q6IFwiXCIgfV0sXHJcbiAgICAgIH0sXHJcbiAgICAgIGNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzOiBbXSxcclxuICAgICAgY29sdW1uc1dpZHRoOiBbXSxcclxuICAgICAgc29ydFNldHRpbmdzOiBbXSxcclxuICAgICAgZ3JvdXBTZXR0aW5nczogW10sXHJcbiAgICAgIHZhbHVlU29ydFNldHRpbmdzOiB7fSxcclxuICAgICAgc2hvd0dyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93Um93R3JhbmRUb3RhbHM6IHRydWUsXHJcbiAgICAgIHNob3dDb2x1bW5HcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgICAgc2hvd1N1YlRvdGFsczogdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1N1YlRvdGFsczogdHJ1ZSxcclxuICAgICAgc2hvd0NvbHVtblN1YlRvdGFsczogdHJ1ZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWRJbnZlc3RvciA9IG51bGw7XHJcbiAgcHVibGljIGludmVzdG9yTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFZpc3VhbFR5cGUgPSBudWxsO1xyXG4gIHB1YmxpYyB2aXN1YWxUeXBlTGlzdCA9IFtdO1xyXG5cclxuICAvLyBoaXN0b3JpY2FsIElSUiBmcmVxdWVuY3kg5LiN6ZyA6KaBIERhaWx5XHJcbiAgZ2V0IGZyZXF1ZW5jeU9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tdWx0aXBsZXNMaXN0LmZpbHRlcigoaSkgPT4gaS5sYW5nQ29kZSAhPT0gXCJEQUlMWVwiKTtcclxuICB9XHJcblxyXG4gIGluaXRIaXN0b3JpY2FsSVJST3B0aW9ucygpIHtcclxuICAgIGNvbnN0IGNoYXJ0VGV4dCA9IHRoaXMudHJhbnNsYXRpb24uQ09NUEFOWV9DSEFSVCB8fCBcIi5DT01QQU5ZX0NIQVJUXCI7XHJcbiAgICB0aGlzLmludmVzdG9yTGlzdCA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwiQWxsXCIsXHJcbiAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGlvbi5BTEwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjb2RlOiBcIkV4Y2x1ZGVHUCZTTFBcIixcclxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0aW9uW1wiRVhDTFVERV9HUCZTTFBcIl0gfHwgXCIuRXhjbHVkZSBHUCZTTFBcIixcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnZpc3VhbFR5cGVMaXN0ID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgY29kZTogXCJuZXdsaW5lXCIsXHJcbiAgICAgICAgdGV4dDogYCR7dGhpcy50cmFuc2xhdGlvbi5MSU5FIHx8IFwiLkxJTkVcIn0gJHtjaGFydFRleHR9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwibmV3Y29sdW1uXCIsXHJcbiAgICAgICAgdGV4dDogYCR7dGhpcy50cmFuc2xhdGlvbi5DT0xVTU59ICR7Y2hhcnRUZXh0fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjb2RlOiBcInRhYmxlXCIsXHJcbiAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGlvbi5UQUJMRSB8fCBcIi5UQUJMRVwiLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRIaXN0b3JpY2FsSVJSUG9ydGxldCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbnZlc3RvciA9IFwiQWxsXCI7XHJcbiAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gXCJRVUFSVEVSTFlcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRWaXN1YWxUeXBlID0gXCJuZXdsaW5lXCI7XHJcbiAgICB0aGlzLnNldEhpc3RvcmljYWxJUlJDaGFydChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRIaXN0b3JpY2FsSVJSQ2hhcnQob3BlbmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAob3BlbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgIT09IFwidGFibGVcIiAmJlxyXG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGUgPT09IFwidGFibGVcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaGFzTWFya2VyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlID0gdGhpcy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcbiAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZEludmVzdG9yID0gdGhpcy5zZWxlY3RlZEludmVzdG9yO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRWaXN1YWxUeXBlICE9PSBcInRhYmxlXCIpIHtcclxuICAgICAgLy8g6L+Z6YeM56Gu5a6aIHjjgIF5IOi9tOWtl+auteWQjeensFxyXG4gICAgICB0aGlzLnNlbGVjdGVkWCA9IFwiRGF0ZVwiO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWSA9IFtcIklSUlwiXTtcclxuICAgICAgcmV0dXJuIHRoaXMueHlDaGFuZ2UoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWRNdWx0aXBsZXMgPSB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICB0aGlzLkFkZE9yRWRpdFBvcnRsZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkWDogYW55ID0gbnVsbDtcclxuICBzZWxlY3RlZFk6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkU2Vjb25kWTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRNdWx0aXBsZXM6IGFueSA9IG51bGw7XHJcbiAgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuICBtYXJrZXJGb3JtYXRMaXN0ID0gW1xyXG4gICAge1xyXG4gICAgICB2YWx1ZTogXCJcIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uTk9ORSB8fCBcIi5Ob25lXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB2YWx1ZTogXCJLXCIsXHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0aW9uLlRIT1VTQU5EUyB8fCBcIi5UaG91c2FuZHNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIk1cIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uTUlMTElPTlMgfHwgXCIuTWlsbGlvbnNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcImJuXCIsXHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0aW9uLkJJTExJT05TIHx8IFwiLkJpbGxpb25zXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB2YWx1ZTogXCJUXCIsXHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0aW9uLlRSSUxMSU9OUyB8fCBcIi5UcmlsbGlvbnNcIixcclxuICAgIH0sXHJcbiAgXTtcclxuICBoYXNNYXJrZXIgPSBmYWxzZTtcclxuXHJcbiAgbGFiZWxDb25maWdDaGFuZ2UoZSkge1xyXG4gICAgdGhpcy5jb25maWcuaGFzTWFya2VyID0gZTtcclxuICAgIHRoaXMudXBkYXRlUG9ybGV0Q29uZmlnLmVtaXQoe1xyXG4gICAgICBuZXdJZDogdGhpcy5wb3J0bGV0Lm5ld0lkLFxyXG4gICAgICBjb25maWc6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnKSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnN3aXRjaExhYmVsQ29uZmlnLm5leHQoe1xyXG4gICAgICBjaGVja2VkOiBlLFxyXG4gICAgICBpZDogdGhpcy5wb3J0bGV0Lm5ld0lkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB4eUNoYW5nZShlKSB7XHJcbiAgICBpZiAoZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVGhlbWUuZW1pdCh7XHJcbiAgICAgICAgc2VsZWN0ZWRYOiB0aGlzLnNlbGVjdGVkWCxcclxuICAgICAgICBzZWxlY3RlZFk6IHRoaXMuc2VsZWN0ZWRZLFxyXG4gICAgICAgIHNlbGVjdGVkTXVsdGlwbGVzOiB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzLFxyXG4gICAgICAgIHNlbGVjdGVkU2Vjb25kWTogdGhpcy5zZWxlY3RlZFNlY29uZFksXHJcbiAgICAgICAgc2VsZWN0VGhlbWU6IHRoaXMuc2VsZWN0VGhlbWUsXHJcbiAgICAgICAgaGFzTWFya2VyOiB0aGlzLmhhc01hcmtlcixcclxuICAgICAgICBtYXJrZXJGb3JtYXQ6IHRoaXMubWFya2VyRm9ybWF0LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY29uZmlnW1wibWFya2VyRm9ybWF0XCJdID0gdGhpcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wiaGFzTWFya2VyXCJdID0gdGhpcy5oYXNNYXJrZXI7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRYXCJdID0gdGhpcy5zZWxlY3RlZFg7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRZXCJdID0gdGhpcy5zZWxlY3RlZFk7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRTZWNvbmRZXCJdID0gdGhpcy5zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRNdWx0aXBsZXNcIl0gPSB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICB0aGlzLmNvbmZpZ1tcInNlbGVjdFRoZW1lXCJdID0gdGhpcy5zZWxlY3RUaGVtZTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlUG9ybGV0Q29uZmlnLmVtaXQoe1xyXG4gICAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgICAgY29uZmlnOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZyksXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaG93RWRpdCgpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHNob3dFZGl0KCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnBvcnRsZXRUeXBlID09IFwibmV3Y29sdW1ubGluZVwiICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRZLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldFR5cGUgIT0gXCJuZXdjb2x1bW5saW5lXCIgJiYgdGhpcy5zZWxlY3RlZFkubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLkFkZE9yRWRpdFBvcnRsZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG11bHRpcGxlc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGdldG11bHRpcGxlc0xpc3QoKSB7XHJcbiAgICBjb25zdCB1cmwgPVxyXG4gICAgICB0aGlzLmFwcENvZGUgPT09IFwiUE1TXCJcclxuICAgICAgICA/IHRoaXMuYXBpLnVybExpc3QuTFBHZXRQcm9wZXJ0eUxpc3RcclxuICAgICAgICA6IHRoaXMuYXBpLnVybExpc3QuR2V0UHJvcGVydHlMaXN0O1xyXG4gICAgdGhpcy5odHRwLnBvc3QodXJsLCB7IHNjb3BlOiBcIkRBU0hCT0FSRF9GUkVRVUVOQ1lcIiwgbGFuZ0lkeDogMiB9LCAocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVzTGlzdCA9IHJlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FwaXRhbGl6ZShzdHIpIHtcclxuICAgIC8vIOWwhuWtl+espuS4sui9rOaNouS4uuWwj+WGme+8jOW5tuS9v+eUqOato+WImeihqOi+vuW8j+Wwhuavj+S4quWNleivjeeahOesrOS4gOS4quWtl+espui9rOaNouS4uuWkp+WGmVxyXG4gICAgaWYgKCFzdHIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0ci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcYlxcdy9nLCBmdW5jdGlvbiAoY2hhcikge1xyXG4gICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhbWFydElkKCkge1xyXG4gICAgLy8g6I635Y+W55yf5q2j55qERGF0YW1hcnRJRFxyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKTtcclxuICAgIGxldCBkYXRhTWFydFRhYmxlcyA9IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZGF0YU1hcnRUYWJsZXNbXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmlkXHJcbiAgICBdLmZpbHRlcigoZWwpID0+IGNvZGUgPT0gZWwuZGF0YW1hcnRDb2RlKTtcclxuICAgIGlmIChkYXRhTWFydFRhYmxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiBkYXRhTWFydFRhYmxlc1swXS5pZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRydWVTZWxlY3RlZERhdGFtYXJ0KCkge1xyXG4gICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICA/IHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAvLyDojrflj5bnnJ/mraPnmoREYXRhbWFydENvZGVcclxuICAgIGlmIChbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0RGF0YW1hcnRDb2RlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGFtYXJ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0RGF0YW1hcnRDb2RlKCkge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZGF0YU1hcnRUYWJsZXNbXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmlkXHJcbiAgICBdLmZpbHRlcigoZSkgPT4ge1xyXG4gICAgICByZXR1cm4gZVtcImRhdGFtYXJ0Q29kZVwiXSA9PSB0aGlzLnNlbGVjdGVkRGF0YW1hcnQ7XHJcbiAgICB9KTtcclxuICAgIGlmIChpdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGl0ZW1bMF1bXCJwcmVmaXhcIl0pIHtcclxuICAgICAgICByZXR1cm4gYCR7aXRlbVswXVtcInByZWZpeFwiXX0ke1xyXG4gICAgICAgICAgdGhpcy5jYXBpdGFsaXplKHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMpIHx8IFwiXCJcclxuICAgICAgICB9YDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gaXRlbVswXVtcImRhdGFtYXJ0Q29kZVwiXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaGVtZTogYW55ID0gXCJ0aGVtZTFcIjtcclxuICBjaGFuZ2VUaGVtZShlLCB0eXBlKSB7XHJcbiAgICB0aGlzLnNlbGVjdFRoZW1lID0gZS52YWx1ZTtcclxuICAgIHRoaXMuY29uZmlnW1wic2VsZWN0VGhlbWVcIl0gPSB0aGlzLnNlbGVjdFRoZW1lO1xyXG4gICAgdGhpcy51cGRhdGVUaGVtZS5lbWl0KHtcclxuICAgICAgc2VsZWN0ZWRYOiB0aGlzLnNlbGVjdGVkWCxcclxuICAgICAgc2VsZWN0ZWRZOiB0aGlzLnNlbGVjdGVkWSxcclxuICAgICAgc2VsZWN0ZWRNdWx0aXBsZXM6IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMsXHJcbiAgICAgIHNlbGVjdGVkU2Vjb25kWTogdGhpcy5zZWxlY3RlZFNlY29uZFksXHJcbiAgICAgIHNlbGVjdFRoZW1lOiB0aGlzLnNlbGVjdFRoZW1lLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNob3dFZGl0KCk7XHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YU1hcnRUYWJsZXMoZGF0YSkge1xyXG4gICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhbmdWYWx1ZUEgPSBhLmxhbmdWYWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBsYW5nVmFsdWVCID0gYi5sYW5nVmFsdWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgIGlmIChsYW5nVmFsdWVBIDwgbGFuZ1ZhbHVlQikge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobGFuZ1ZhbHVlQSA+IGxhbmdWYWx1ZUIpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VGb3JtYXQoKSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UubWFya2VyRm9ybWF0Lm5leHQoe1xyXG4gICAgICBuZXdJZDogdGhpcy5wb3J0bGV0Lm5ld0lkLFxyXG4gICAgICBtYXJrZXJGb3JtYXQ6IHRoaXMubWFya2VyRm9ybWF0LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Component, Inject } from "@angular/core";
|
|
7
7
|
import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog";
|
|
8
|
+
import { getTranslation } from "../../utils/utils";
|
|
8
9
|
/**
|
|
9
10
|
* @record
|
|
10
11
|
*/
|
|
@@ -57,7 +58,7 @@ var CommonDeleteComponent = /** @class */ (function () {
|
|
|
57
58
|
* @return {?}
|
|
58
59
|
*/
|
|
59
60
|
function () {
|
|
60
|
-
this.translation =
|
|
61
|
+
this.translation = getTranslation();
|
|
61
62
|
this.title =
|
|
62
63
|
this.data.title || this.translation["DELETE_RECORD"] || ".DELETE_RECORD";
|
|
63
64
|
this.saveBtnLabel =
|
|
@@ -112,4 +113,4 @@ if (false) {
|
|
|
112
113
|
/** @type {?} */
|
|
113
114
|
CommonDeleteComponent.prototype.dialogRef;
|
|
114
115
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRlbGV0ZS1kaWFsb2cvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFbkQsa0NBZUM7OztJQWRDLDZCQUFlOztJQUNmLG1DQUFnQzs7SUFDaEMsb0NBQXNCOztJQUN0QixzQ0FBd0I7O0lBQ3hCLHVDQUF5Qjs7SUFDekIscUNBQXdCOztJQUN4QixxQ0FBd0I7O0lBQ3hCLDRCQUFjOztJQUNkLG1DQUFzQjs7SUFDdEIsb0NBQXVCOztJQUN2QixzQ0FBeUI7O0lBQ3pCLG1DQUFzQjs7SUFFdEIsc0NBQThDOztBQUVoRDtJQWdCRSwrQkFFUyxJQUFrQixFQUNsQixTQUE4QztRQUQ5QyxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBWnZELFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFNakIsQ0FBQzs7OztJQUVKLHdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO1FBQzNFLElBQUksQ0FBQyxZQUFZO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGlDQUFpQztnQkFDbEQsd0ZBQXdGLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDOztnQkF0Q0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLDZoQ0FBcUM7O2lCQUV0Qzs7OztnREFhSSxNQUFNLFNBQUMsZUFBZTtnQkFwQ0QsWUFBWTs7SUEwRHRDLDRCQUFDO0NBQUEsQUF2Q0QsSUF1Q0M7U0FsQ1kscUJBQXFCOzs7SUFDaEMsNENBQVk7O0lBQ1osc0NBQVc7O0lBQ1gsNkNBQWtCOztJQUNsQiwrQ0FBb0I7O0lBQ3BCLGdEQUFxQjs7SUFDckIsNENBQWlCOztJQUNqQixxQ0FBZTs7SUFDZiw0Q0FBb0I7O0lBQ3BCLDRDQUFvQjs7SUFHbEIscUNBQ3lCOztJQUN6QiwwQ0FBcUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0NvbmZpZyB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBzYXZlQnRuTGFiZWw/OiBzdHJpbmc7XHJcbiAgY2FuY2VsQnRuTGFiZWw/OiBzdHJpbmc7XHJcbiAgZGlzY2FyZEJ0bkxhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dFcnJvckljb24/OiBib29sZWFuO1xyXG4gIGhpZGVDbG9zZUljb24/OiBib29sZWFuO1xyXG4gIHNpemU/OiBzdHJpbmc7XHJcbiAgaGlkZVNhdmVCdG4/OiBib29sZWFuO1xyXG4gIGhpZGVDbG9zZUJ0bj86IGJvb2xlYW47XHJcbiAgaGlkZURpc2NhcmRCdG4/OiBib29sZWFuO1xyXG4gIHNob3dab29tQnRuPzogYm9vbGVhbjtcclxuXHJcbiAgb25DbG9zZVJlcXVlc3Q/OiAoZTogYW55KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWNvbW1vbi1kZWxldGUtZGlhbG9nXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkRlbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdHJhbnNsYXRpb247XHJcbiAgdGl0bGUgPSBcIlwiO1xyXG4gIHNhdmVCdG5MYWJlbCA9IFwiXCI7XHJcbiAgY2FuY2VsQnRuTGFiZWwgPSBcIlwiO1xyXG4gIGRpc2NhcmRCdG5MYWJlbCA9IFwiXCI7XHJcbiAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gIHNpemUgPSBcInNtYWxsXCI7XHJcbiAgc2hvd1pvb21CdG4gPSBmYWxzZTtcclxuICBpc011bHRpTGluZSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxyXG4gICAgcHVibGljIGRhdGE6IERpYWxvZ0NvbmZpZyxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb21tb25EZWxldGVDb21wb25lbnQ+XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBnZXRUcmFuc2xhdGlvbigpO1xyXG4gICAgdGhpcy50aXRsZSA9XHJcbiAgICAgIHRoaXMuZGF0YS50aXRsZSB8fCB0aGlzLnRyYW5zbGF0aW9uW1wiREVMRVRFX1JFQ09SRFwiXSB8fCBcIi5ERUxFVEVfUkVDT1JEXCI7XHJcbiAgICB0aGlzLnNhdmVCdG5MYWJlbCA9XHJcbiAgICAgIHRoaXMuZGF0YS5zYXZlQnRuTGFiZWwgfHwgdGhpcy50cmFuc2xhdGlvbi5ERUxFVEUgfHwgXCIuREVMRVRFXCI7XHJcbiAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsID1cclxuICAgICAgdGhpcy5kYXRhLmNhbmNlbEJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uQ0FOQ0VMIHx8IFwiLkNBTkNFTFwiO1xyXG4gICAgdGhpcy5kaXNjYXJkQnRuTGFiZWwgPSB0aGlzLmRhdGEuZGlzY2FyZEJ0bkxhYmVsO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9XHJcbiAgICAgIHRoaXMuZGF0YS5kZXNjcmlwdGlvbiB8fFxyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uLklGX1lPVV9ERUxFVEVfVEhJU19SRUNPUkRfV0FSTklORyB8fFxyXG4gICAgICBcIi5JZiB5b3UgZGVsZXRlIHRoaXMgcmVjb3JkLCB5b3Ugd29uJ3QgYmUgYWJsZSB0byByZWNvdmVyIGl0LiBEbyB5b3Ugd2FudCB0byBkZWxldGUgaXQ/XCI7XHJcbiAgICB0aGlzLnNpemUgPSB0aGlzLmRhdGEuc2l6ZSB8fCBcInNtYWxsXCI7XHJcbiAgICB0aGlzLnNob3dab29tQnRuID0gdGhpcy5kYXRhLnNob3dab29tQnRuIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5pc011bHRpTGluZSA9IEFycmF5LmlzQXJyYXkodGhpcy5kZXNjcmlwdGlvbik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Component, Input, ContentChild, Output, EventEmitter, } from "@angular/core";
|
|
7
7
|
import { MatDialogRef } from "@angular/material/dialog";
|
|
8
|
+
import { getTranslation } from "../../utils/utils";
|
|
8
9
|
var CommonDialogComponent = /** @class */ (function () {
|
|
9
10
|
function CommonDialogComponent(dialogRef) {
|
|
10
11
|
this.dialogRef = dialogRef;
|
|
@@ -118,7 +119,7 @@ var CommonDialogComponent = /** @class */ (function () {
|
|
|
118
119
|
* @return {?}
|
|
119
120
|
*/
|
|
120
121
|
function () {
|
|
121
|
-
this.translation =
|
|
122
|
+
this.translation = getTranslation();
|
|
122
123
|
this.saveBtnLabel = this.saveBtnLabel || this.translation.SAVE || ".SAVE";
|
|
123
124
|
this.cancelBtnLabel =
|
|
124
125
|
this.cancelBtnLabel || this.translation.CANCEL || ".CANCEL";
|
|
@@ -210,4 +211,4 @@ if (false) {
|
|
|
210
211
|
/** @type {?} */
|
|
211
212
|
CommonDialogComponent.prototype.dialogRef;
|
|
212
213
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5EO0lBa0NFLCtCQUFtQixTQUE4QztRQUE5QyxjQUFTLEdBQVQsU0FBUyxDQUFxQzs7UUF6QnhELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixvQkFBZSxHQUFHLEtBQUssQ0FBQzs7UUFNeEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFVBQUssR0FBRyxRQUFRLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNoRSxjQUFTLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFFM0UsZ0JBQVcsR0FB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QywrQ0FBa0M7O0lBR2xDLDRDQUEwQjs7SUFDMUIscUNBQW1COztJQUNuQixzQ0FBMEI7O0lBQzFCLHdDQUF5Qjs7SUFDekIseUNBQTBFOztJQUMxRSwwQ0FBMkU7O0lBRTNFLDRDQUF5Qjs7SUFJekIsOENBQWtFOztJQUNsRSw2Q0FBOEI7O0lBSmxCLDBDQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWRpYWxvZ1wiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHJcbiAgLy8g6ZqQ6JeP5YWD57Sg55u45YWz5bGe5oCnXHJcbiAgQElucHV0KCkgaGlkZUhlYWRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVDbG9zZUljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlQ2xvc2VCdG4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlU2F2ZUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVEaXNjYXJkQnRuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzYXZlQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGNhbmNlbEJ0bkxhYmVsID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNjYXJkQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dFcnJvckljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Wm9vbUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVNhdmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21QYWdlVGl0bGUgPSBmYWxzZTtcclxuXHJcbiAgLy8g5YWz6Zet5YmN55qE5Zue6LCD5Ye95pWwXHJcbiAgQElucHV0KCkgb25DbG9zZVJlcXVlc3Q6IEZ1bmN0aW9uO1xyXG5cclxuICAvLyDmmL7npLrnm7jlhbPlsZ7mgKdcclxuICBASW5wdXQoKSBkaWFsb2dTdHlsZSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNpemUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHRpdGxlID0gXCJEaWFsb2dcIjtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNhdmVFbWl0OiBFdmVudEVtaXR0ZXI8RnVuY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2VFbWl0OiBFdmVudEVtaXR0ZXI8RnVuY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4oKTtcclxuXHJcbiAgZGVmYXVsdFNpemU6IHN0cmluZyA9IFwiXCI7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbW1vbkRpYWxvZ0NvbXBvbmVudD4pIHsgfVxyXG5cclxuICAvLyDmjqfliLblupXpg6jmj5Lmp73mnInlhoXlrrnml7bpmpDol4/pu5jorqTmjInpkq5cclxuICBAQ29udGVudENoaWxkKFwiZm9vdGVyU2xvdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9vdGVyQ29udGVudDogYW55O1xyXG4gIGN1c3RvbUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMuY3VzdG9tRm9vdGVyID0gISF0aGlzLmZvb3RlckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLm9uQ2xvc2VSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMub25DbG9zZVJlcXVlc3QoKS50aGVuKChjb25maXJtZWQpID0+IHtcclxuICAgICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImNsb3NlXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImNsb3NlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25ab29tKCkge1xyXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gXCJsYXJnZXN0XCIpIHtcclxuICAgICAgdGhpcy5zaXplID0gdGhpcy5kZWZhdWx0U2l6ZTsgLy8g5oGi5aSN5Yiw5Y6f5aeL5aSn5bCPXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNpemUgPSBcImxhcmdlc3RcIjsgLy8g6K6+572u5Li65pyA5aSn5YyWXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TYXZlKSB7XHJcbiAgICAgIHRoaXMuc2F2ZUVtaXQuZW1pdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJzYXZlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EaXNjYXJkKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJkaXNjYXJkXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IGdldFRyYW5zbGF0aW9uKCk7XHJcbiAgICB0aGlzLnNhdmVCdG5MYWJlbCA9IHRoaXMuc2F2ZUJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uU0FWRSB8fCBcIi5TQVZFXCI7XHJcbiAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsID1cclxuICAgICAgdGhpcy5jYW5jZWxCdG5MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uLkNBTkNFTCB8fCBcIi5DQU5DRUxcIjtcclxuICAgIHRoaXMuZGVmYXVsdFNpemUgPSB0aGlzLnNpemU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|