@wavemaker/app-ng-runtime 11.14.1-1.6289 → 11.14.1-10.6348
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/components/base/bundles/index.umd.js +86 -17
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +67 -7
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +7 -3
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
- package/components/base/fesm2022/index.mjs +87 -18
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +9 -1
- package/components/basic/label/esm2022/label.directive.mjs +10 -2
- package/components/basic/label/fesm2022/index.mjs +9 -1
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +4 -0
- package/components/data/pagination/esm2022/pagination.component.mjs +5 -1
- package/components/data/pagination/fesm2022/index.mjs +4 -0
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +371 -15
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table.component.mjs +219 -12
- package/components/data/table/fesm2022/index.mjs +371 -15
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +3 -2
- package/components/data/table/table-column/table-column.directive.d.ts +3 -2
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
- package/components/data/table/table-cud.directive.d.ts +3 -1
- package/components/data/table/table-filter.directive.d.ts +3 -1
- package/components/data/table/table-row/table-row.directive.d.ts +3 -2
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
- package/components/data/table/table.component.d.ts +6 -2
- package/components/navigation/menu/bundles/index.umd.js +5 -0
- package/components/navigation/menu/esm2022/menu.component.mjs +6 -1
- package/components/navigation/menu/fesm2022/index.mjs +5 -0
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +6 -0
- package/core/bundles/index.umd.js +411 -82
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/utils/utils.mjs +6 -2
- package/core/esm2022/utils/watcher.mjs +402 -81
- package/core/fesm2022/index.mjs +410 -84
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/utils/utils.d.ts +1 -0
- package/core/utils/watcher.d.ts +28 -5
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +22 -2
- package/runtime/base/esm2022/components/app-component/app.component.mjs +4 -2
- package/runtime/base/esm2022/components/base-page.component.mjs +6 -2
- package/runtime/base/esm2022/components/base-partial.component.mjs +7 -2
- package/runtime/base/esm2022/components/base-prefab.component.mjs +7 -2
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +6 -2
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +23 -3
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +101 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ViewChild, Directive, inject } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
|
-
import { $invokeWatchers, AbstractI18nService, App, noop, Viewport, ScriptLoaderService, UtilsService, registerFnByExpr } from '@wm/core';
|
|
3
|
+
import { $invokeWatchers, $unwatchAllByScope, AbstractI18nService, App, noop, Viewport, ScriptLoaderService, UtilsService, registerFnByExpr } from '@wm/core';
|
|
4
4
|
import { PartialDirective, WidgetRef } from '@wm/components/base';
|
|
5
5
|
import { PageDirective, SpaPageDirective } from '@wm/components/page';
|
|
6
6
|
import { VariablesService } from '@wm/variables';
|
|
@@ -169,6 +169,11 @@ export class BasePartialComponent extends FragmentMonitor {
|
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
ngOnDestroy() {
|
|
172
|
+
// MEMORY LEAK FIX: Unwatch all Partial-scoped watchers for THIS specific partial when partial is destroyed
|
|
173
|
+
// Only unwatch watchers for this partial, not all partials (other partials may still be on the page)
|
|
174
|
+
if (this.partialName) {
|
|
175
|
+
$unwatchAllByScope('Partial', this.partialName);
|
|
176
|
+
}
|
|
172
177
|
this.destroy$.complete();
|
|
173
178
|
}
|
|
174
179
|
ngOnAttach(refreshData) {
|
|
@@ -195,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
195
200
|
type: ViewChild,
|
|
196
201
|
args: [PartialDirective]
|
|
197
202
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYXJ0aWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhcnRpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBRW5CLEdBQUcsRUFDSCxJQUFJLEVBQ0osUUFBUSxFQUNSLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ25CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUUvQixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFHdkMsTUFBTSxPQUFnQixvQkFBcUIsU0FBUSxlQUFlO0lBRGxFOztRQXNCSSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd2QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQWtON0I7SUExTUcsMEJBQTBCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FB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QUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFPO0lBQ2YsQ0FBQzsrR0ExT2lCLG9CQUFvQjttR0FBcEIsb0JBQW9CLDRFQWdCM0IsZ0JBQWdCOzs0RkFoQlQsb0JBQW9CO2tCQUR6QyxTQUFTOzhCQWlCdUIsZ0JBQWdCO3NCQUE1QyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQXBwLFxuICAgIG5vb3AsXG4gICAgVmlld3BvcnQsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwclxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBQYXJ0aWFsRGlyZWN0aXZlLCBXaWRnZXRSZWZ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgUGFnZURpcmVjdGl2ZSwgU3BhUGFnZURpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHtQcmVmYWJEaXJlY3RpdmV9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5cbmltcG9ydCB7IEZyYWdtZW50TW9uaXRvciB9IGZyb20gJy4uL3V0aWwvZnJhZ21lbnQtbW9uaXRvcic7XG5pbXBvcnQgeyBBcHBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtlYWNofSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjb25zdCBjb21tb25QYXJ0aWFsV2lkZ2V0cyA9IHt9O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUGFydGlhbENvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgV2lkZ2V0czogYW55O1xuICAgIFZhcmlhYmxlczogYW55O1xuICAgIEFjdGlvbnM6IGFueTtcbiAgICBBcHA6IEFwcDtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgcGFydGlhbE5hbWU6IHN0cmluZztcbiAgICBhY3RpdmVQYWdlTmFtZTogc3RyaW5nO1xuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgICBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZTtcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZTtcbiAgICByb3V0ZXI6IFJvdXRlcjtcbiAgICBwYWdlUGFyYW1zOiBhbnk7XG4gICAgY29udGFpbmVyV2lkZ2V0OiBhbnk7XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgQFZpZXdDaGlsZChQYXJ0aWFsRGlyZWN0aXZlKSBwYXJ0aWFsRGlyZWN0aXZlO1xuICAgIHBhZ2VEaXJlY3RpdmU6IFBhZ2VEaXJlY3RpdmUgfCBTcGFQYWdlRGlyZWN0aXZlO1xuICAgIFByZWZhYjogUHJlZmFiRGlyZWN0aXZlO1xuICAgIHNjcmlwdExvYWRlclNlcnZpY2U6IFNjcmlwdExvYWRlclNlcnZpY2U7XG4gICAgVmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIGNvbXBpbGVDb250ZW50ID0gZmFsc2U7XG4gICAgc3BhOiBib29sZWFuO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHZpZXdJbml0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSB2aWV3UGFyZW50OiBhbnk7XG5cbiAgICBhYnN0cmFjdCBldmFsVXNlclNjcmlwdChwcmVmYWJDb250ZXh0OiBhbnksIGFwcENvbnRleHQ6IGFueSwgdXRpbHM6IGFueSk7XG5cbiAgICBhYnN0cmFjdCBnZXRWYXJpYWJsZXMoKTtcbiAgICBhYnN0cmFjdCBnZXRFeHByZXNzaW9ucygpO1xuXG4gICAgZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmogfHwgdGhpcy5jb250YWluZXJXaWRnZXQuaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcblxuICAgICAgICB0aGlzLkFwcCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBcHApIDogaW5qZWN0KEFwcCk7XG4gICAgICAgIC8vbWFraW5nIHRoZSBjb2RlIGNvbXBhdGlibGUgaW4gYm90aCB0aGUgSklUIGFuZCBBT1QgbW9kZXNcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoV2lkZ2V0UmVmKSA6IGluamVjdChXaWRnZXRSZWYpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU2NyaXB0TG9hZGVyU2VydmljZSkgOiBpbmplY3QoU2NyaXB0TG9hZGVyU2VydmljZSk7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcbiAgICAgICAgLy8gdGhpcy52aWV3Q29udGFpbmVyUmVmID0gdGhpcy5nZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgLy8gUmVwbGFjaW5nIHRoaXMuZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKS52aWV3LmNvbXBvbmVudCBhcyB2aWV3UGFyZW50XG4gICAgICAgIC8vIHRoaXMudmlld1BhcmVudCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuaW5pdFVzZXJTY3JpcHQoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0cygpO1xuICAgICAgICB0aGlzLmluaXRWYXJpYWJsZXMoKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7IC8vIFRvZG86IHJlbW92ZSB0aGlzXG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdlUGFyYW1zKCk7XG5cbiAgICAgICAgdGhpcy5kZWZpbmVJMThuUHJvcHMoKTtcblxuICAgICAgICB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYWdlUGFyYW1zID0gdGhpcy5jb250YWluZXJXaWRnZXQucGFydGlhbFBhcmFtcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYodGhpcy5zcGEpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTcGFQYWdlRGlyZWN0aXZlKSA6IGluamVjdChTcGFQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFnZURpcmVjdGl2ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChQYWdlRGlyZWN0aXZlKSA6IGluamVjdChQYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYWdlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2F0dGFjaCcsIGRhdGEgPT4gdGhpcy5uZ09uQXR0YWNoKGRhdGEucmVmcmVzaERhdGEpKSk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHRoaXMucGFnZURpcmVjdGl2ZS5zdWJzY3JpYmUoJ2RldGFjaCcsICgpID0+IHRoaXMubmdPbkRldGFjaCgpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5pbml0KCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJXaWRnZXRzKCkge1xuICAgICAgICBpZiAodGhpcy5wYXJ0aWFsTmFtZSA9PT0gJ0NvbW1vbicpIHtcbiAgICAgICAgICAgIHRoaXMuV2lkZ2V0cyA9IGNvbW1vblBhcnRpYWxXaWRnZXRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZShjb21tb25QYXJ0aWFsV2lkZ2V0cyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5XaWRnZXRzID0gdGhpcy5XaWRnZXRzO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBpbml0VXNlclNjcmlwdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHBhcnRpYWxzIGluc2lkZSBwcmVmYWIgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIFByZWZhYiBwcm9wZXJ0aWVzIGFuZCBldmVudHNcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucHJlZmFiTmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIGZvciBwYXJ0aWFsIHdpdGhpbiBwYXJ0aWFsIHdpdGhpbiBwcmVmYWJzLCBqdXN0IGFzc2lnbiB0aGUgcGFyZW50IHBhcnRpYWwncyBwcmVmYWIgb2JqZWN0XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5QcmVmYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5QcmVmYWIgPSB0aGlzLnZpZXdQYXJlbnQuUHJlZmFiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUHJlZmFiID0gdGhpcy52aWV3UGFyZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXZhbFVzZXJTY3JpcHQodGhpcywgdGhpcy5BcHAsIHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpIDogaW5qZWN0KFV0aWxzU2VydmljZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmFsdWF0aW5nIHBhcnRpYWwgKCR7dGhpcy5wYXJ0aWFsTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFZhcmlhYmxlcygpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKSA6IGluamVjdChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLnBhcnRpYWxOYW1lLCB0aGlzLmdldFZhcmlhYmxlcygpLCB0aGlzKTtcblxuICAgICAgICAvLyBjcmVhdGUgbmFtZXNwYWNlIGZvciBWYXJpYWJsZXMgbmFkIEFjdGlvbnMgb24gcGFnZS9wYXJ0aWFsLCB3aGljaCBpbmhlcml0cyB0aGUgVmFyaWFibGVzIGFuZCBBY3Rpb25zIGZyb20gQXBwIGluc3RhbmNlXG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5WYXJpYWJsZXMpO1xuICAgICAgICB0aGlzLkFjdGlvbnMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLkFjdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LlZhcmlhYmxlcyA9IHRoaXMuVmFyaWFibGVzO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5BY3Rpb25zID0gdGhpcy5BY3Rpb25zO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBURU1QOiB0cmlnZ2VyaW5nIHdhdGNoZXJzIHNvIHZhcmlhYmxlcyB3YXRjaGluZyBvdmVyIHBhcmFtcyBhcmUgdXBkYXRlZFxuICAgICAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmNhdGNoKG5vb3ApO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZnVuY3Rpb24gdG8gcmVnaXN0ZXIgYmluZCBleHByZXNzaW9ucyBnZW5lcmF0ZWQgaW4gdGhpcyBwYXJ0aWFsIGluc3RhbmNlXG4gICAgICogZ2V0RXhwcmVzc2lvbnMgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGUgZ2VuZXJhdGVkIHBhZ2UuY29tcC50cyBmaWxlXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb25zLCBtYXAgb2YgYmluZCBleHByZXNzaW9uIHZzIGdlbmVyYXRlZCBmdW5jdGlvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXhwcmVzc2lvbnMoKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5nZXRFeHByZXNzaW9ucygpO1xuICAgICAgICBlYWNoKGV4cHJlc3Npb25zLCAoZm4sIGV4cHIpID0+IHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm5CeUV4cHIoZXhwciwgZm5bMF0sIGZuWzFdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQYWdlUGFyYW1zKCkge1xuICAgICAgICB0aGlzLnBhZ2VQYXJhbXMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5wYXJ0aWFsUGFyYW1zO1xuICAgIH1cblxuICAgIGRlZmluZUkxOG5Qcm9wcygpIHtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlLmdldEFwcExvY2FsZSgpO1xuICAgIH1cblxuICAgIGludm9rZU9uUmVhZHkoKSB7XG4gICAgICAgIGxldCBwYXJhbXM7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lcldpZGdldC51c2VyQ29tcG9uZW50UGFyYW1zKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB0aGlzLmNvbnRhaW5lcldpZGdldC51c2VyQ29tcG9uZW50UGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25SZWFkeShwYXJhbXMpO1xuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JpcHRzUmVxdWlyZWQgPSB0aGlzLnBhcnRpYWxEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKCkge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICAvLyBuZ09uSW5pdCgpIHtcbiAgICAvLyAgICAgdGhpcy5pbml0KCk7XG4gICAgLy8gfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0luaXQkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHRoaXMuaW52b2tlT25SZWFkeSgpKTtcblxuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmIChyZWZyZXNoRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcmVmcmVzaCA9IHYgPT4geyB2ICYmIHYuc3RhcnRVcGRhdGUgJiYgdi5pbnZva2UgJiYgdi5pbnZva2UoKTsgfTtcbiAgICAgICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHJlZnJlc2gpO1xuICAgICAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHJlZnJlc2gpO1xuICAgICAgICB9XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uQXR0YWNoICYmIHcubmdPbkF0dGFjaCgpKTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLm11dGUoKTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25EZXRhY2ggJiYgdy5uZ09uRGV0YWNoKCkpO1xuICAgIH1cblxuICAgIG9uUmVhZHkocGFyYW1zPykge1xuICAgIH1cbn1cbiJdfQ==
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYXJ0aWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9iYXNlLXBhcnRpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBR3ZDLE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsZUFBZTtJQURsRTs7UUFzQkksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7S0F1TjdCO0lBL01HLDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLElBQUks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UUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBVztRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFPO0lBQ2YsQ0FBQzsrR0EvT2lCLG9CQUFvQjttR0FBcEIsb0JBQW9CLDRFQWdCM0IsZ0JBQWdCOzs0RkFoQlQsb0JBQW9CO2tCQUR6QyxTQUFTOzhCQWlCdUIsZ0JBQWdCO3NCQUE1QyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkdW53YXRjaEFsbEJ5U2NvcGUsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBub29wLFxuICAgIFZpZXdwb3J0LFxuICAgIFNjcmlwdExvYWRlclNlcnZpY2UsXG4gICAgVXRpbHNTZXJ2aWNlLFxuICAgIHJlZ2lzdGVyRm5CeUV4cHJcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgUGFydGlhbERpcmVjdGl2ZSwgV2lkZ2V0UmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IFBhZ2VEaXJlY3RpdmUsIFNwYVBhZ2VEaXJlY3RpdmUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7UHJlZmFiRGlyZWN0aXZlfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuaW1wb3J0IHsgVmFyaWFibGVzU2VydmljZSB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuXG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7ZWFjaH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5leHBvcnQgY29uc3QgY29tbW9uUGFydGlhbFdpZGdldHMgPSB7fTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVBhcnRpYWxDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIHBhcnRpYWxOYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gICAgYXBwTWFuYWdlcjogQXBwTWFuYWdlclNlcnZpY2U7XG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2U7XG4gICAgcm91dGVyOiBSb3V0ZXI7XG4gICAgcGFnZVBhcmFtczogYW55O1xuICAgIGNvbnRhaW5lcldpZGdldDogYW55O1xuICAgIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlO1xuICAgIGFwcExvY2FsZTogYW55O1xuICAgIEBWaWV3Q2hpbGQoUGFydGlhbERpcmVjdGl2ZSkgcGFydGlhbERpcmVjdGl2ZTtcbiAgICBwYWdlRGlyZWN0aXZlOiBQYWdlRGlyZWN0aXZlIHwgU3BhUGFnZURpcmVjdGl2ZTtcbiAgICBQcmVmYWI6IFByZWZhYkRpcmVjdGl2ZTtcbiAgICBzY3JpcHRMb2FkZXJTZXJ2aWNlOiBTY3JpcHRMb2FkZXJTZXJ2aWNlO1xuICAgIFZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgICBjb21waWxlQ29udGVudCA9IGZhbHNlO1xuICAgIHNwYTogYm9vbGVhbjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICB2aWV3SW5pdCQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgdmlld1BhcmVudDogYW55O1xuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuXG4gICAgYWJzdHJhY3QgZ2V0VmFyaWFibGVzKCk7XG4gICAgYWJzdHJhY3QgZ2V0RXhwcmVzc2lvbnMoKTtcblxuICAgIGdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJXaWRnZXQuaW5qIHx8IHRoaXMuY29udGFpbmVyV2lkZ2V0LmluamVjdG9yO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5BcHAgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwKSA6IGluamVjdChBcHApO1xuICAgICAgICAvL21ha2luZyB0aGUgY29kZSBjb21wYXRpYmxlIGluIGJvdGggdGhlIEpJVCBhbmQgQU9UIG1vZGVzXG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFdpZGdldFJlZikgOiBpbmplY3QoV2lkZ2V0UmVmKTtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdEkxOG5TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLlZpZXdwb3J0ID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZpZXdwb3J0KSA6IGluamVjdChWaWV3cG9ydCk7XG4gICAgICAgIC8vIHRoaXMudmlld0NvbnRhaW5lclJlZiA9IHRoaXMuZ2V0Q29udGFpbmVyV2lkZ2V0SW5qZWN0b3IoKS5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIC8vIFJlcGxhY2luZyB0aGlzLmdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkudmlldy5jb21wb25lbnQgYXMgdmlld1BhcmVudFxuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSB0aGlzLmNvbnRhaW5lcldpZGdldC52aWV3UGFyZW50O1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyBmb3IgYmluZGluZyBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmluaXRVc2VyU2NyaXB0KCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVQYWdlTmFtZSA9IHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lOyAvLyBUb2RvOiByZW1vdmUgdGhpc1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnZVBhcmFtcygpO1xuXG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG5cbiAgICAgICAgdGhpcy52aWV3SW5pdCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFnZVBhcmFtcyA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnBhcnRpYWxQYXJhbXM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKHRoaXMuc3BhKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU3BhUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoU3BhUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFnZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdhdHRhY2gnLCBkYXRhID0+IHRoaXMubmdPbkF0dGFjaChkYXRhLnJlZnJlc2hEYXRhKSkpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdkZXRhY2gnLCAoKSA9PiB0aGlzLm5nT25EZXRhY2goKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyV2lkZ2V0cygpIHtcbiAgICAgICAgaWYgKHRoaXMucGFydGlhbE5hbWUgPT09ICdDb21tb24nKSB7XG4gICAgICAgICAgICB0aGlzLldpZGdldHMgPSBjb21tb25QYXJ0aWFsV2lkZ2V0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUoY29tbW9uUGFydGlhbFdpZGdldHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuV2lkZ2V0cyA9IHRoaXMuV2lkZ2V0cztcbiAgICB9XG5cbiAgICByZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgaW5pdFVzZXJTY3JpcHQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBwYXJ0aWFscyBpbnNpZGUgcHJlZmFiIHNob3VsZCBoYXZlIGFjY2VzcyB0byBQcmVmYWIgcHJvcGVydGllcyBhbmQgZXZlbnRzXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnByZWZhYk5hbWUpIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgcGFydGlhbCB3aXRoaW4gcGFydGlhbCB3aXRoaW4gcHJlZmFicywganVzdCBhc3NpZ24gdGhlIHBhcmVudCBwYXJ0aWFsJ3MgcHJlZmFiIG9iamVjdFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQuUHJlZmFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUHJlZmFiID0gdGhpcy52aWV3UGFyZW50LlByZWZhYjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlByZWZhYiA9IHRoaXMudmlld1BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV2YWxVc2VyU2NyaXB0KHRoaXMsIHRoaXMuQXBwLCB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSA6IGluamVjdChVdGlsc1NlcnZpY2UpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZhbHVhdGluZyBwYXJ0aWFsICgke3RoaXMucGFydGlhbE5hbWV9KSBzY3JpcHRcXG5gLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRWYXJpYWJsZXMoKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmFyaWFibGVzU2VydmljZSkgOiBpbmplY3QoVmFyaWFibGVzU2VydmljZSk7XG5cbiAgICAgICAgLy8gZ2V0IHZhcmlhYmxlcyBhbmQgYWN0aW9ucyBpbnN0YW5jZXMgZm9yIHRoZSBwYWdlXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlQ29sbGVjdGlvbiA9IHZhcmlhYmxlc1NlcnZpY2UucmVnaXN0ZXIodGhpcy5wYXJ0aWFsTmFtZSwgdGhpcy5nZXRWYXJpYWJsZXMoKSwgdGhpcyk7XG5cbiAgICAgICAgLy8gY3JlYXRlIG5hbWVzcGFjZSBmb3IgVmFyaWFibGVzIG5hZCBBY3Rpb25zIG9uIHBhZ2UvcGFydGlhbCwgd2hpY2ggaW5oZXJpdHMgdGhlIFZhcmlhYmxlcyBhbmQgQWN0aW9ucyBmcm9tIEFwcCBpbnN0YW5jZVxuICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuVmFyaWFibGVzKTtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0gT2JqZWN0LmNyZWF0ZSh0aGlzLkFwcC5BY3Rpb25zKTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5WYXJpYWJsZXMgPSB0aGlzLlZhcmlhYmxlcztcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuQWN0aW9ucyA9IHRoaXMuQWN0aW9ucztcblxuICAgICAgICAvLyBhc3NpZ24gYWxsIHRoZSBwYWdlIHZhcmlhYmxlcyB0byB0aGUgcGFnZUluc3RhbmNlXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmZvckVhY2goKFtuYW1lLCB2YXJpYWJsZV0pID0+IHRoaXMuVmFyaWFibGVzW25hbWVdID0gdmFyaWFibGUpO1xuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucykuZm9yRWFjaCgoW25hbWUsIGFjdGlvbl0pID0+IHRoaXMuQWN0aW9uc1tuYW1lXSA9IGFjdGlvbik7XG5cblxuICAgICAgICB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVEVNUDogdHJpZ2dlcmluZyB3YXRjaGVycyBzbyB2YXJpYWJsZXMgd2F0Y2hpbmcgb3ZlciBwYXJhbXMgYXJlIHVwZGF0ZWRcbiAgICAgICAgICAgICRpbnZva2VXYXRjaGVycyh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5jYXRjaChub29wKTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFydGlhbCBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyUGFnZVBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5wYWdlUGFyYW1zID0gdGhpcy5jb250YWluZXJXaWRnZXQucGFydGlhbFBhcmFtcztcbiAgICB9XG5cbiAgICBkZWZpbmVJMThuUHJvcHMoKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gdGhpcy5pMThuU2VydmljZS5nZXRBcHBMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICBsZXQgcGFyYW1zO1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXJXaWRnZXQudXNlckNvbXBvbmVudFBhcmFtcykge1xuICAgICAgICAgICAgcGFyYW1zID0gdGhpcy5jb250YWluZXJXaWRnZXQudXNlckNvbXBvbmVudFBhcmFtcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uUmVhZHkocGFyYW1zKTtcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZXNvbHZlRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudC5yZXNvbHZlRnJhZ21lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5wYXJ0aWFsRGlyZWN0aXZlLiRlbGVtZW50LmF0dHIoJ3NjcmlwdHMtdG8tbG9hZCcpO1xuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbXV0ZSgpIHtcbiAgICAgICAgY29uc3QgbSA9IG8gPT4geyBvICYmIG8ubXV0ZSAmJiBvLm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCBtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIG0pO1xuICAgIH1cblxuICAgIHVubXV0ZSgpIHtcbiAgICAgICAgY29uc3QgdW0gPSBvID0+IHsgbyAmJiBvLnVubXV0ZSAmJiBvLnVubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCB1bSk7XG4gICAgfVxuXG4gICAgLy8gbmdPbkluaXQoKSB7XG4gICAgLy8gICAgIHRoaXMuaW5pdCgpO1xuICAgIC8vIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkU2NyaXB0cygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21waWxlQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mcmFnbWVudHNMb2FkZWQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB0aGlzLmludm9rZU9uUmVhZHkoKSk7XG5cbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVud2F0Y2ggYWxsIFBhcnRpYWwtc2NvcGVkIHdhdGNoZXJzIGZvciBUSElTIHNwZWNpZmljIHBhcnRpYWwgd2hlbiBwYXJ0aWFsIGlzIGRlc3Ryb3llZFxuICAgICAgICAvLyBPbmx5IHVud2F0Y2ggd2F0Y2hlcnMgZm9yIHRoaXMgcGFydGlhbCwgbm90IGFsbCBwYXJ0aWFscyAob3RoZXIgcGFydGlhbHMgbWF5IHN0aWxsIGJlIG9uIHRoZSBwYWdlKVxuICAgICAgICBpZiAodGhpcy5wYXJ0aWFsTmFtZSkge1xuICAgICAgICAgICAgJHVud2F0Y2hBbGxCeVNjb3BlKCdQYXJ0aWFsJywgdGhpcy5wYXJ0aWFsTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25BdHRhY2gocmVmcmVzaERhdGEpIHtcbiAgICAgICAgdGhpcy51bm11dGUoKTtcbiAgICAgICAgaWYgKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG4gICAgb25SZWFkeShwYXJhbXM/KSB7XG4gICAgfVxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { inject, ViewChild, Directive } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
|
-
import { $watch, AbstractI18nService, App, isIE, noop, ScriptLoaderService, UtilsService, $invokeWatchers, Viewport, registerFnByExpr } from '@wm/core';
|
|
3
|
+
import { $watch, $unwatchAllByScope, AbstractI18nService, App, isIE, noop, ScriptLoaderService, UtilsService, $invokeWatchers, Viewport, registerFnByExpr } from '@wm/core';
|
|
4
4
|
import { WidgetRef } from '@wm/components/base';
|
|
5
5
|
import { PageDirective, SpaPageDirective } from '@wm/components/page';
|
|
6
6
|
import { PrefabContainerDirective } from '@wm/components/prefab';
|
|
@@ -210,6 +210,11 @@ export class BasePrefabComponent extends FragmentMonitor {
|
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
ngOnDestroy() {
|
|
213
|
+
// MEMORY LEAK FIX: Unwatch all Prefab-scoped watchers for THIS specific prefab when prefab is destroyed
|
|
214
|
+
// Only unwatch watchers for this prefab, not all prefabs (other prefabs may still be on the page)
|
|
215
|
+
if (this.prefabName) {
|
|
216
|
+
$unwatchAllByScope('Prefab', this.prefabName);
|
|
217
|
+
}
|
|
213
218
|
this.destroy$.complete();
|
|
214
219
|
}
|
|
215
220
|
// user overrides this
|
|
@@ -224,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
224
229
|
type: ViewChild,
|
|
225
230
|
args: [PrefabContainerDirective]
|
|
226
231
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcmVmYWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9jb21wb25lbnRzL2Jhc2UtcHJlZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLE1BQU0sRUFBYSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILE1BQU0sRUFDTixtQkFBbUIsRUFDbkIsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixlQUFlLEVBQ2YsUUFBUSxFQUNSLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUdqRCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGVBQWU7SUFEakU7O1FBZUksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFLdkIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7S0FrUDdC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RSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGdCQUFnQixLQUFJLENBQUM7SUFFckIsT0FBTyxLQUFJLENBQUM7K0dBcFFNLG1CQUFtQjttR0FBbkIsbUJBQW1CLG9GQVkxQix3QkFBd0I7OzRGQVpqQixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBYStCLHdCQUF3QjtzQkFBNUQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBJbmplY3RvciwgaW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJHdhdGNoLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQXBwLFxuICAgIGlzSUUsXG4gICAgbm9vcCxcbiAgICBTY3JpcHRMb2FkZXJTZXJ2aWNlLFxuICAgIFV0aWxzU2VydmljZSxcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgVmlld3BvcnQsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwclxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXaWRnZXRSZWZ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgUGFnZURpcmVjdGl2ZSwgU3BhUGFnZURpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgUHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgUHJlZmFiTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVmYWItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZyYWdtZW50TW9uaXRvciB9IGZyb20gJy4uL3V0aWwvZnJhZ21lbnQtbW9uaXRvcic7XG5pbXBvcnQge2VhY2gsIHN0YXJ0c1dpdGgsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVByZWZhYkNvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgV2lkZ2V0czogYW55O1xuICAgIFZhcmlhYmxlczogYW55O1xuICAgIEFjdGlvbnM6IGFueTtcbiAgICBBcHA6IEFwcDtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgY29udGFpbmVyV2lkZ2V0OiBhbnk7XG4gICAgcHJlZmFiTW5ncjogUHJlZmFiTWFuYWdlclNlcnZpY2U7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwcmVmYWJOYW1lOiBzdHJpbmc7XG4gICAgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2U7XG4gICAgYXBwTG9jYWxlOiBhbnk7XG4gICAgQFZpZXdDaGlsZChQcmVmYWJDb250YWluZXJEaXJlY3RpdmUpIHByZWZhYkNvbnRhaW5lckRpcmVjdGl2ZTtcbiAgICBzY3JpcHRMb2FkZXJTZXJ2aWNlOiBTY3JpcHRMb2FkZXJTZXJ2aWNlO1xuICAgIGNvbXBpbGVDb250ZW50ID0gZmFsc2U7XG4gICAgcGFnZURpcmVjdGl2ZTogUGFnZURpcmVjdGl2ZSB8IFNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgVmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIHNwYTogYm9vbGVhbjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICB2aWV3SW5pdCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSB2aWV3UGFyZW50OiBhbnk7XG5cbiAgICBhYnN0cmFjdCBldmFsVXNlclNjcmlwdChwcmVmYWJDb250ZXh0OiBhbnksIGFwcENvbnRleHQ6IGFueSwgdXRpbHM6IGFueSk7XG4gICAgYWJzdHJhY3QgZ2V0VmFyaWFibGVzKCk7XG4gICAgYWJzdHJhY3QgZ2V0RXhwcmVzc2lvbnMoKTtcblxuICAgIGdldENvbnRhaW5lcldpZGdldEluamVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJXaWRnZXQuaW5qIHx8IHRoaXMuY29udGFpbmVyV2lkZ2V0LmluamVjdG9yO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwKTtcbiAgICAgICAgLy9tYWtpbmcgdGhlIGNvZGUgY29tcGF0aWJsZSBpbiBib3RoIHRoZSBKSVQgYW5kIEFPVCBtb2Rlc1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChXaWRnZXRSZWYpIDogaW5qZWN0KFdpZGdldFJlZik7XG5cbiAgICAgICAgdGhpcy5wcmVmYWJNbmdyID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFByZWZhYk1hbmFnZXJTZXJ2aWNlKSA6IGluamVjdChQcmVmYWJNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgIHRoaXMuaTE4blNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQWJzdHJhY3RJMThuU2VydmljZSkgOiBpbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChTY3JpcHRMb2FkZXJTZXJ2aWNlKSA6IGluamVjdChTY3JpcHRMb2FkZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5WaWV3cG9ydCA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChWaWV3cG9ydCkgOiBpbmplY3QoVmlld3BvcnQpO1xuXG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IHRoaXMuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC5yZWdpc3RlckZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BhKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU3BhUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoU3BhUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoUGFnZURpcmVjdGl2ZSkgOiBpbmplY3QoUGFnZURpcmVjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFnZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdhdHRhY2gnLCBkYXRhID0+IHRoaXMubmdPbkF0dGFjaChkYXRhLnJlZnJlc2hEYXRhKSkpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnBhZ2VEaXJlY3RpdmUuc3Vic2NyaWJlKCdkZXRhY2gnLCAoKSA9PiB0aGlzLm5nT25EZXRhY2goKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIGZvciBiaW5kaW5nIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuaW5pdFVzZXJTY3JpcHQoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0cygpO1xuICAgICAgICB0aGlzLmluaXRWYXJpYWJsZXMoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclByb3BzKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IHt9O1xuICAgICAgICB0aGlzLldpZGdldHMgPSB7fTt0aGlzLmNvbnRhaW5lcldpZGdldC5XaWRnZXRzID0gdGhpcy5XaWRnZXRzO1xuICAgIH1cblxuICAgIGluaXRVc2VyU2NyaXB0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5ldmFsVXNlclNjcmlwdCh0aGlzLCB0aGlzLkFwcCwgdGhpcy5pbmplY3Rvci5nZXQoVXRpbHNTZXJ2aWNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGluIGV2YWx1YXRpbmcgcHJlZmFiICgke3RoaXMucHJlZmFiTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDaGFuZ2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LnJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uUHJvcGVydHlDaGFuZ2UpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5yZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIodGhpcy5vblByb3BlcnR5Q2hhbmdlKTtcbiAgICB9XG5cbiAgICByZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgZGVmaW5lSTE4blByb3BzKCkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UuZ2V0UHJlZmFiTG9jYWxlQnVuZGxlKHRoaXMucHJlZmFiTmFtZSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQcm9wcygpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJNbmdyLmdldENvbmZpZyh0aGlzLnByZWZhYk5hbWUpXG4gICAgICAgICAgICAudGhlbihjb25maWcgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gY29uZmlnLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcygoY29uZmlnLnByb3BlcnRpZXMgfHwge30pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0cmltKHByb3AudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy5jb250YWluZXJXaWRnZXRba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBudiA9PiB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXRba2V5XSA9IG52XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1tUb2RvLUNTUF06IGV4cHIgd2lsbCBiZSBnZW5lcmF0ZWQgd2l0aCBwcmVmYWIuY29tcC5leHByLnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2F0Y2goZXhwciwgdGhpcywge30sIG52ID0+IHRoaXMuY29udGFpbmVyV2lkZ2V0LndpZGdldFtrZXldID0gbnYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoKGNvbmZpZy5ldmVudHMgfHwge30pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKFtrZXksIHByb3BdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnROYW1lID0ga2V5LnN1YnN0cigyKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5pbnZva2VFdmVudENhbGxiYWNrKGV2ZW50TmFtZSwgeyRldmVudDogYXJnc1swXSwgJGRhdGE6IGFyZ3NbMV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoKGNvbmZpZy5tZXRob2RzIHx8IHt9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChba2V5LCBwcm9wXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0W2tleV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2tleV0uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgaW4gZXhlY3V0aW5nIHByZWZhYi0ke3RoaXMucHJlZmFiTmFtZX0gbWV0aG9kLSR7a2V5fWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5zZXRQcm9wcyhjb25maWcpO1xuICAgICAgICAgICAgICAgIC8vIFJlYXNzaWduaW5nIHRoZSBwcm94eSBoYW5kbGVyIGZvciBwcmVmYWIgaW5ib3VuZCBwcm9wZXJ0aWVzIGFzIHdlXG4gICAgICAgICAgICAgICAgLy8gd2lsbCBnZXQgdGhlbSBvbmx5IGFmdGVyIHRoZSBwcmVmYWIgY29uZmlnIGNhbGwuXG4gICAgICAgICAgICAgICAgaWYgKGlzSUUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXQgPSB0aGlzLmNvbnRhaW5lcldpZGdldC5jcmVhdGVQcm94eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRWYXJpYWJsZXMoKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChWYXJpYWJsZXNTZXJ2aWNlKTtcblxuICAgICAgICAvLyBnZXQgdmFyaWFibGVzIGFuZCBhY3Rpb25zIGluc3RhbmNlcyBmb3IgdGhlIHBhZ2VcbiAgICAgICAgY29uc3QgdmFyaWFibGVDb2xsZWN0aW9uID0gdmFyaWFibGVzU2VydmljZS5yZWdpc3Rlcih0aGlzLnByZWZhYk5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSB7fTtcbiAgICAgICAgdGhpcy5BY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0LlZhcmlhYmxlcyA9IHRoaXMuVmFyaWFibGVzO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5BY3Rpb25zID0gdGhpcy5BY3Rpb25zO1xuXG4gICAgICAgIC8vIGFzc2lnbiBhbGwgdGhlIHBhZ2UgdmFyaWFibGVzIHRvIHRoZSBwYWdlSW5zdGFuY2VcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuZm9yRWFjaCgoW25hbWUsIHZhcmlhYmxlXSkgPT4gdGhpcy5WYXJpYWJsZXNbbmFtZV0gPSB2YXJpYWJsZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKS5mb3JFYWNoKChbbmFtZSwgYWN0aW9uXSkgPT4gdGhpcy5BY3Rpb25zW25hbWVdID0gYWN0aW9uKTtcblxuXG4gICAgICAgIHRoaXMudmlld0luaXQkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLlZhcmlhYmxlcykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmdW5jdGlvbiB0byByZWdpc3RlciBiaW5kIGV4cHJlc3Npb25zIGdlbmVyYXRlZCBpbiB0aGlzIHBhZ2UgaW5zdGFuY2VcbiAgICAgKiBnZXRFeHByZXNzaW9ucyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBnZW5lcmF0ZWQgcGFnZS5jb21wLnRzIGZpbGVcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMsIG1hcCBvZiBiaW5kIGV4cHJlc3Npb24gdnMgZ2VuZXJhdGVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcmVnaXN0ZXJFeHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKCk7XG4gICAgICAgIGVhY2goZXhwcmVzc2lvbnMsIChmbiwgZXhwcikgPT4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGbkJ5RXhwcihleHByLCBmblswXSwgZm5bMV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIHdhdGNoZXJzIHNvIHZhcmlhYmxlcyBhbmQgcHJvcGVydGllcnMgd2F0Y2hpbmcgb3ZlciBhbiBleHByZXNzaW9uIGFyZSB1cGRhdGVkXG4gICAgICAgICRpbnZva2VXYXRjaGVycyh0cnVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vblJlYWR5KCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQucmVzb2x2ZUZyYWdtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuaW52b2tlRXZlbnRDYWxsYmFjaygnbG9hZCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5wcmVmYWJDb250YWluZXJEaXJlY3RpdmUuJGVsZW1lbnQuYXR0cignc2NyaXB0cy10by1sb2FkJyk7XG4gICAgICAgICAgICBpZiAoc2NyaXB0c1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkKC4uLnNjcmlwdHNSZXF1aXJlZC5zcGxpdCgnLCcpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKCkge1xuICAgICAgICBjb25zdCB1bSA9IG8gPT4geyBvICYmIG8udW5tdXRlICYmIG8udW5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHVtKTtcbiAgICB9XG5cbiAgICBuZ09uQXR0YWNoKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIGlmKHJlZnJlc2hEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgfVxuXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFNjcmlwdHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGlsZUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckNoYW5nZUxpc3RlbmVycygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciB2aWV3SW5pdCQuY29tcGxldGUgYWZ0ZXIgYSB0aW1lb3V0IHNvIHRoYXQgdGhlIHdpZGdldCBsaXN0ZW5lcnMgYXJlIHJlYWR5IGJlZm9yZSBWYXJpYWJsZSB4aHIgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzTG9hZGVkJC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4gdGhpcy5pbnZva2VPblJlYWR5KCkpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvLyB1c2VyIG92ZXJyaWRlcyB0aGlzXG4gICAgb25Qcm9wZXJ0eUNoYW5nZSgpIHt9XG5cbiAgICBvblJlYWR5KCkge31cblxufVxuIl19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcmVmYWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9jb21wb25lbnRzL2Jhc2UtcHJlZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLE1BQU0sRUFBYSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLEdBQUcsRUFDSCxJQUFJLEVBQ0osSUFBSSxFQUNKLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFFBQVEsRUFDUixnQkFBZ0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHakQsTUFBTSxPQUFnQixtQkFBb0IsU0FBUSxlQUFlO0lBRGpFOztRQWVJLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFB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QUFDLENBQUM7WUFDNUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLHdHQUF3RztRQUN4RyxrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGdCQUFnQixLQUFJLENBQUM7SUFFckIsT0FBTyxLQUFJLENBQUM7K0dBelFNLG1CQUFtQjttR0FBbkIsbUJBQW1CLG9GQVkxQix3QkFBd0I7OzRGQVpqQixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBYStCLHdCQUF3QjtzQkFBNUQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBJbmplY3RvciwgaW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJHdhdGNoLFxuICAgICR1bndhdGNoQWxsQnlTY29wZSxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBpc0lFLFxuICAgIG5vb3AsXG4gICAgU2NyaXB0TG9hZGVyU2VydmljZSxcbiAgICBVdGlsc1NlcnZpY2UsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgIFZpZXdwb3J0LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHJcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0UmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IFBhZ2VEaXJlY3RpdmUsIFNwYVBhZ2VEaXJlY3RpdmUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IFByZWZhYkNvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5cbmltcG9ydCB7IFByZWZhYk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlZmFiLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHtlYWNoLCBzdGFydHNXaXRoLCB0cmltfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcmVmYWJDb21wb25lbnQgZXh0ZW5kcyBGcmFnbWVudE1vbml0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIGNvbnRhaW5lcldpZGdldDogYW55O1xuICAgIHByZWZhYk1uZ3I6IFByZWZhYk1hbmFnZXJTZXJ2aWNlO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcHJlZmFiTmFtZTogc3RyaW5nO1xuICAgIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlO1xuICAgIGFwcExvY2FsZTogYW55O1xuICAgIEBWaWV3Q2hpbGQoUHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlKSBwcmVmYWJDb250YWluZXJEaXJlY3RpdmU7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBjb21waWxlQ29udGVudCA9IGZhbHNlO1xuICAgIHBhZ2VEaXJlY3RpdmU6IFBhZ2VEaXJlY3RpdmUgfCBTcGFQYWdlRGlyZWN0aXZlO1xuICAgIFZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgICBzcGE6IGJvb2xlYW47XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgdmlld1BhcmVudDogYW55O1xuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBnZXRDb250YWluZXJXaWRnZXRJbmplY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkZ2V0LmluaiB8fCB0aGlzLmNvbnRhaW5lcldpZGdldC5pbmplY3RvcjtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICB0aGlzLkFwcCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCk7XG4gICAgICAgIC8vbWFraW5nIHRoZSBjb2RlIGNvbXBhdGlibGUgaW4gYm90aCB0aGUgSklUIGFuZCBBT1QgbW9kZXNcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoV2lkZ2V0UmVmKSA6IGluamVjdChXaWRnZXRSZWYpO1xuXG4gICAgICAgIHRoaXMucHJlZmFiTW5nciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChQcmVmYWJNYW5hZ2VyU2VydmljZSkgOiBpbmplY3QoUHJlZmFiTWFuYWdlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNjcmlwdExvYWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoU2NyaXB0TG9hZGVyU2VydmljZSkgOiBpbmplY3QoU2NyaXB0TG9hZGVyU2VydmljZSk7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcblxuICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSB0aGlzLmNvbnRhaW5lcldpZGdldC52aWV3UGFyZW50O1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQucmVnaXN0ZXJGcmFnbWVudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LnJlZ2lzdGVyRnJhZ21lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNwYSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNwYVBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFNwYVBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlRGlyZWN0aXZlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFBhZ2VEaXJlY3RpdmUpIDogaW5qZWN0KFBhZ2VEaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnYXR0YWNoJywgZGF0YSA9PiB0aGlzLm5nT25BdHRhY2goZGF0YS5yZWZyZXNoRGF0YSkpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy5wYWdlRGlyZWN0aXZlLnN1YnNjcmliZSgnZGV0YWNoJywgKCkgPT4gdGhpcy5uZ09uRGV0YWNoKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyBmb3IgYmluZGluZyBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmluaXRVc2VyU2NyaXB0KCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQcm9wcygpO1xuICAgICAgICB0aGlzLmRlZmluZUkxOG5Qcm9wcygpO1xuICAgICAgICBzdXBlci5pbml0KCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJXaWRnZXRzKCkge1xuICAgICAgICB0aGlzLldpZGdldHMgPSB7fTtcbiAgICAgICAgdGhpcy5XaWRnZXRzID0ge307dGhpcy5jb250YWluZXJXaWRnZXQuV2lkZ2V0cyA9IHRoaXMuV2lkZ2V0cztcbiAgICB9XG5cbiAgICBpbml0VXNlclNjcmlwdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbFVzZXJTY3JpcHQodGhpcywgdGhpcy5BcHAsIHRoaXMuaW5qZWN0b3IuZ2V0KFV0aWxzU2VydmljZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmFsdWF0aW5nIHByZWZhYiAoJHt0aGlzLnByZWZhYk5hbWV9KSBzY3JpcHRcXG5gLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5yZWdpc3RlclByb3BlcnR5Q2hhbmdlTGlzdGVuZXIodGhpcy5vblByb3BlcnR5Q2hhbmdlKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQucmVnaXN0ZXJTdHlsZUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIGRlZmluZUkxOG5Qcm9wcygpIHtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlLmdldFByZWZhYkxvY2FsZUJ1bmRsZSh0aGlzLnByZWZhYk5hbWUpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyUHJvcHMoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiTW5nci5nZXRDb25maWcodGhpcy5wcmVmYWJOYW1lKVxuICAgICAgICAgICAgLnRoZW4oY29uZmlnID0+IHtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGNvbmZpZy5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoKGNvbmZpZy5wcm9wZXJ0aWVzIHx8IHt9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChba2V5LCBwcm9wXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHByO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHJpbShwcm9wLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHZhbHVlLCAnYmluZDonKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByID0gdmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHRoaXMuY29udGFpbmVyV2lkZ2V0W2tleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogbnYgPT4gdGhpcy5jb250YWluZXJXaWRnZXQud2lkZ2V0W2tleV0gPSBudlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9bVG9kby1DU1BdOiBleHByIHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGggcHJlZmFiLmNvbXAuZXhwci50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdhdGNoKGV4cHIsIHRoaXMsIHt9LCBudiA9PiB0aGlzLmNvbnRhaW5lcldpZGdldC53aWRnZXRba2V5XSA9IG52KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKChjb25maWcuZXZlbnRzIHx8IHt9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChba2V5LCBwcm9wXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGtleS5zdWJzdHIoMikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuaW52b2tlRXZlbnRDYWxsYmFjayhldmVudE5hbWUsIHskZXZlbnQ6IGFyZ3NbMF0sICRkYXRhOiBhcmdzWzFdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKChjb25maWcubWV0aG9kcyB8fCB7fSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoW2tleSwgcHJvcF06IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldFtrZXldID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1trZXldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGluIGV4ZWN1dGluZyBwcmVmYWItJHt0aGlzLnByZWZhYk5hbWV9IG1ldGhvZC0ke2tleX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuc2V0UHJvcHMoY29uZmlnKTtcbiAgICAgICAgICAgICAgICAvLyBSZWFzc2lnbmluZyB0aGUgcHJveHkgaGFuZGxlciBmb3IgcHJlZmFiIGluYm91bmQgcHJvcGVydGllcyBhcyB3ZVxuICAgICAgICAgICAgICAgIC8vIHdpbGwgZ2V0IHRoZW0gb25seSBhZnRlciB0aGUgcHJlZmFiIGNvbmZpZyBjYWxsLlxuICAgICAgICAgICAgICAgIGlmIChpc0lFKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQud2lkZ2V0ID0gdGhpcy5jb250YWluZXJXaWRnZXQuY3JlYXRlUHJveHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVmFyaWFibGVzU2VydmljZSk7XG5cbiAgICAgICAgLy8gZ2V0IHZhcmlhYmxlcyBhbmQgYWN0aW9ucyBpbnN0YW5jZXMgZm9yIHRoZSBwYWdlXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlQ29sbGVjdGlvbiA9IHZhcmlhYmxlc1NlcnZpY2UucmVnaXN0ZXIodGhpcy5wcmVmYWJOYW1lLCB0aGlzLmdldFZhcmlhYmxlcygpLCB0aGlzKTtcblxuICAgICAgICAvLyBjcmVhdGUgbmFtZXNwYWNlIGZvciBWYXJpYWJsZXMgbmFkIEFjdGlvbnMgb24gcGFnZS9wYXJ0aWFsLCB3aGljaCBpbmhlcml0cyB0aGUgVmFyaWFibGVzIGFuZCBBY3Rpb25zIGZyb20gQXBwIGluc3RhbmNlXG4gICAgICAgIHRoaXMuVmFyaWFibGVzID0ge307XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZGdldC5WYXJpYWJsZXMgPSB0aGlzLlZhcmlhYmxlcztcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWRnZXQuQWN0aW9ucyA9IHRoaXMuQWN0aW9ucztcblxuICAgICAgICAvLyBhc3NpZ24gYWxsIHRoZSBwYWdlIHZhcmlhYmxlcyB0byB0aGUgcGFnZUluc3RhbmNlXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmZvckVhY2goKFtuYW1lLCB2YXJpYWJsZV0pID0+IHRoaXMuVmFyaWFibGVzW25hbWVdID0gdmFyaWFibGUpO1xuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucykuZm9yRWFjaCgoW25hbWUsIGFjdGlvbl0pID0+IHRoaXMuQWN0aW9uc1tuYW1lXSA9IGFjdGlvbik7XG5cblxuICAgICAgICB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpLmNhdGNoKG5vb3ApO1xuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5BY3Rpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZnVuY3Rpb24gdG8gcmVnaXN0ZXIgYmluZCBleHByZXNzaW9ucyBnZW5lcmF0ZWQgaW4gdGhpcyBwYWdlIGluc3RhbmNlXG4gICAgICogZ2V0RXhwcmVzc2lvbnMgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGUgZ2VuZXJhdGVkIHBhZ2UuY29tcC50cyBmaWxlXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb25zLCBtYXAgb2YgYmluZCBleHByZXNzaW9uIHZzIGdlbmVyYXRlZCBmdW5jdGlvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXhwcmVzc2lvbnMoKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5nZXRFeHByZXNzaW9ucygpO1xuICAgICAgICBlYWNoKGV4cHJlc3Npb25zLCAoZm4sIGV4cHIpID0+IHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm5CeUV4cHIoZXhwciwgZm5bMF0sIGZuWzFdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlT25SZWFkeSgpIHtcbiAgICAgICAgLy8gdHJpZ2dlcmluZyB3YXRjaGVycyBzbyB2YXJpYWJsZXMgYW5kIHByb3BlcnRpZXJzIHdhdGNoaW5nIG92ZXIgYW4gZXhwcmVzc2lvbiBhcmUgdXBkYXRlZFxuICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMub25SZWFkeSgpO1xuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LnJlc29sdmVGcmFnbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkZ2V0Lmludm9rZUV2ZW50Q2FsbGJhY2soJ2xvYWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdHNSZXF1aXJlZCA9IHRoaXMucHJlZmFiQ29udGFpbmVyRGlyZWN0aXZlLiRlbGVtZW50LmF0dHIoJ3NjcmlwdHMtdG8tbG9hZCcpO1xuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbXV0ZSgpIHtcbiAgICAgICAgY29uc3QgbSA9IG8gPT4geyBvICYmIG8ubXV0ZSAmJiBvLm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCBtKTtcbiAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIG0pO1xuICAgIH1cblxuICAgIHVubXV0ZSgpIHtcbiAgICAgICAgY29uc3QgdW0gPSBvID0+IHsgbyAmJiBvLnVubXV0ZSAmJiBvLnVubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCB1bSk7XG4gICAgfVxuXG4gICAgbmdPbkF0dGFjaChyZWZyZXNoRGF0YSkge1xuICAgICAgICB0aGlzLnVubXV0ZSgpO1xuICAgICAgICBpZihyZWZyZXNoRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcmVmcmVzaCA9IHYgPT4geyB2ICYmIHYuc3RhcnRVcGRhdGUgJiYgdi5pbnZva2UgJiYgdi5pbnZva2UoKTsgfTtcbiAgICAgICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIHJlZnJlc2gpO1xuICAgICAgICAgICAgZWFjaCh0aGlzLkFjdGlvbnMsIHJlZnJlc2gpO1xuICAgICAgICB9XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uQXR0YWNoICYmIHcubmdPbkF0dGFjaCgpKTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLm11dGUoKTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25EZXRhY2ggJiYgdy5uZ09uRGV0YWNoKCkpO1xuICAgIH1cblxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBpbGVDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdmlld0luaXQkLmNvbXBsZXRlIGFmdGVyIGEgdGltZW91dCBzbyB0aGF0IHRoZSB3aWRnZXQgbGlzdGVuZXJzIGFyZSByZWFkeSBiZWZvcmUgVmFyaWFibGUgeGhyIGNhbGwuXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3SW5pdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHRoaXMuaW52b2tlT25SZWFkeSgpKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVud2F0Y2ggYWxsIFByZWZhYi1zY29wZWQgd2F0Y2hlcnMgZm9yIFRISVMgc3BlY2lmaWMgcHJlZmFiIHdoZW4gcHJlZmFiIGlzIGRlc3Ryb3llZFxuICAgICAgICAvLyBPbmx5IHVud2F0Y2ggd2F0Y2hlcnMgZm9yIHRoaXMgcHJlZmFiLCBub3QgYWxsIHByZWZhYnMgKG90aGVyIHByZWZhYnMgbWF5IHN0aWxsIGJlIG9uIHRoZSBwYWdlKVxuICAgICAgICBpZiAodGhpcy5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICAkdW53YXRjaEFsbEJ5U2NvcGUoJ1ByZWZhYicsIHRoaXMucHJlZmFiTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8vIHVzZXIgb3ZlcnJpZGVzIHRoaXNcbiAgICBvblByb3BlcnR5Q2hhbmdlKCkge31cblxuICAgIG9uUmVhZHkoKSB7fVxuXG59XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router';
|
|
|
3
3
|
import { isAndroid, isIos, Viewport, ScriptLoaderService, registerFnByExpr } from '@wm/core';
|
|
4
4
|
import { LayoutDirective, SpaPageDirective } from '@wm/components/page';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
|
-
import { AbstractI18nService, AbstractNavigationService, App, muteWatchers, noop, unMuteWatchers, UtilsService } from '@wm/core';
|
|
6
|
+
import { $unwatchAllByScope, AbstractI18nService, AbstractNavigationService, App, muteWatchers, noop, unMuteWatchers, UtilsService } from '@wm/core';
|
|
7
7
|
import { commonPartialWidgets } from './base-partial.component';
|
|
8
8
|
import { VariablesService } from '@wm/variables';
|
|
9
9
|
import { AppManagerService } from '../services/app.manager.service';
|
|
@@ -256,6 +256,10 @@ export class BaseSpaPageComponent extends FragmentMonitor {
|
|
|
256
256
|
});
|
|
257
257
|
}
|
|
258
258
|
ngOnDestroy() {
|
|
259
|
+
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
260
|
+
if (this.pageName) {
|
|
261
|
+
$unwatchAllByScope('Page', this.pageName);
|
|
262
|
+
}
|
|
259
263
|
this.savePageSnapShot();
|
|
260
264
|
this.destroy$.complete();
|
|
261
265
|
}
|
|
@@ -329,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
329
333
|
type: HostListener,
|
|
330
334
|
args: ['window:beforeunload']
|
|
331
335
|
}] } });
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zcGEtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYmFzZS1zcGEtcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixZQUFZLEVBQXVCLFNBQVMsRUFBRSxTQUFTLEVBQW9CLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUV6QixHQUFHLEVBQ0gsWUFBWSxFQUNaLElBQUksRUFFSixjQUFjLEVBQ2QsWUFBWSxFQUNmLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUt2QyxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLGVBQWU7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QUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1IsSUFBRyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9DLG9CQUFvQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQzsrR0FwWGlCLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtJQW9CM0IsZ0JBQWdCOzs0RkFwQlQsb0JBQW9CO2tCQUR6QyxTQUFTOzhCQXFCdUIsZ0JBQWdCO3NCQUE1QyxTQUFTO3VCQUFDLGdCQUFnQjtnQkE4TzNCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRGlyZWN0aXZlLCBBZnRlckNvbnRlbnRJbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBpc0FuZHJvaWQsIGlzSW9zLCBWaWV3cG9ydCwgU2NyaXB0TG9hZGVyU2VydmljZSwgcmVnaXN0ZXJGbkJ5RXhwciB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IExheW91dERpcmVjdGl2ZSwgU3BhUGFnZURpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuXG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICBtdXRlV2F0Y2hlcnMsXG4gICAgbm9vcCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICBVdGlsc1NlcnZpY2Vcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgY29tbW9uUGFydGlhbFdpZGdldHMgfSBmcm9tICcuL2Jhc2UtcGFydGlhbC5jb21wb25lbnQnO1xuXG5cbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHsgQ0FDSEVfUEFHRSB9IGZyb20gJy4uL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuaW1wb3J0IHtlYWNoLCBleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU3BhUGFnZUNvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIHBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gICAgYXBwTWFuYWdlcjogQXBwTWFuYWdlclNlcnZpY2U7XG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2U7XG4gICAgcm91dGVyOiBSb3V0ZXI7XG4gICAgcGFnZVBhcmFtczogYW55O1xuICAgIHNob3dQYWdlQ29udGVudDogYm9vbGVhbjtcbiAgICBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZTtcbiAgICBhcHBMb2NhbGU6IGFueTtcbiAgICBzdGFydHVwVmFyaWFibGVzTG9hZGVkID0gZmFsc2U7XG4gICAgcGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgICBsYXlvdXREaXJlY3RpdmU6IExheW91dERpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKFNwYVBhZ2VEaXJlY3RpdmUpIHNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgJHBhZ2U7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJyd9O1xuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIG11dGVXYXRjaGVycygpO1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSkgOiBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWFuYWdlclNlcnZpY2UpIDogaW5qZWN0KEFwcE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpIDogaW5qZWN0KFJvdXRlcik7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcbiAgICAgICAgdGhpcy5sYXlvdXREaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoTGF5b3V0RGlyZWN0aXZlKSA6IGluamVjdChMYXlvdXREaXJlY3RpdmUpO1xuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyBmb3IgYmluZGluZyBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmluaXRVc2VyU2NyaXB0KCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG5cbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lOyAvLyBUb2RvOiByZW1vdmUgdGhpc1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdlUGFyYW1zKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIC8vIGNvbW1vbiBwYXJ0aWFsIHdpZGdldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBwYWdlXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUoY29tbW9uUGFydGlhbFdpZGdldHMpO1xuXG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICB9XG5cbiAgICBpbml0VXNlclNjcmlwdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbFVzZXJTY3JpcHQodGhpcywgdGhpcy5BcHAsIHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpIDogaW5qZWN0KFV0aWxzU2VydmljZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmFsdWF0aW5nIHBhZ2UgKCR7dGhpcy5wYWdlTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQYWdlUGFyYW1zKCkge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy5wYWdlUGFyYW1zID0gKHRoaXMuQXBwIGFzIGFueSkucGFnZVBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBkZWZpbmVJMThuUHJvcHMoKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gdGhpcy5pMThuU2VydmljZS5nZXRBcHBMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpIDogaW5qZWN0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucGFnZU5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYXBwTWFuYWdlci5pc0FwcFZhcmlhYmxlc0ZpcmVkKCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodGhpcy5BcHAuVmFyaWFibGVzKS5jYXRjaChub29wKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnYXBwLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh0aGlzLkFwcC5BY3Rpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuYXBwVmFyaWFibGVzUmVhZHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuaXNBcHBWYXJpYWJsZXNGaXJlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0dXBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBoaWRlIHRoZSBsb2FkZXIgb25seSBhZnRlciB0aGUgc29tZSBzZXRUaW1lb3V0IGZvciBzbW9vdGggcGFnZSBsb2FkLlxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucyk7XG5cbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUaW1lem9uZShsb2NhbGUpIHtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZS5zZXRUaW1lem9uZShsb2NhbGUsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFnZSBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJ1blBhZ2VUcmFuc2l0aW9uKHRyYW5zaXRpb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gfHwgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRQYWdlVHJhbnNpdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IEJhc2VTcGFQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3RcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAmJiAhdHJhbnNpdGlvbi5zdGFydHNXaXRoKCdub25lJylcbiAgICAgICAgICAgICAgICAmJiBsYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0ICR0YXJnZXQgPSBsYXN0UGFnZS5wYXJlbnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvblRyYW5zaXRpb25FbmQgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZSAmJiAhKGUgJiYgZS5wc2V1ZG9FbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5vZmYoJ2FuaW1hdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0LnJlbW92ZUNsYXNzKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLmZpcnN0KCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbiA9ICdwYWdlLXRyYW5zaXRpb24gcGFnZS10cmFuc2l0aW9uLScgKyB0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIGxhc3RQYWdlLmFkZENsYXNzKCdwYWdlLWV4aXQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5hZGRDbGFzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0Lm9uKCdhbmltYXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGEgbWF4aW11bSBvZiAxIHNlY29uZCBmb3IgdHJhbnNpdGlvbiB0byBlbmQuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChvblRyYW5zaXRpb25FbmQsIDEwMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSAmJiB0aGlzLiRwYWdlLnJlbW92ZUNsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICBpZiAobGFzdFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBsYXN0UGFnZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICB0aGlzLm9uUmVhZHkoKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnaGlnaGxpZ2h0QWN0aXZlTGluaycsIHsncGFnZU5hbWUnIDogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlUmVhZHknLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICAgICAgKHRoaXMuQXBwLm9uUGFnZVJlYWR5IHx8IG5vb3ApKHRoaXMucGFnZU5hbWUsIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5zcGFQYWdlRGlyZWN0aXZlICYmIHRoaXMuc3BhUGFnZURpcmVjdGl2ZS4kZWxlbWVudC5hdHRyKCdzY3JpcHRzLXRvLWxvYWQnKTtcblxuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpIHt9XG5cbiAgICBwcml2YXRlIHNhdmVQYWdlU25hcFNob3QoKSB7XG4gICAgICAgIGlmIChCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90KSB7XG4gICAgICAgICAgICBCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGZuID0gKCRlbCwga2V5LCByZWN1cnNpdmUgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAkdGFyZ2V0LnNjcm9sbExlZnQoKSxcbiAgICAgICAgICAgICAgICB5OiAkdGFyZ2V0LnNjcm9sbFRvcCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYoc2Nyb2xsRGF0YS54ID4gMCB8fCBzY3JvbGxEYXRhLnkgPiAwKSB7XG4gICAgICAgICAgICAgICAgJGVsLmF0dHIoa2V5LCBzY3JvbGxEYXRhLnggKyAnLCcgKyBzY3JvbGxEYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy4kcGFnZS5hdHRyKCdkYXRhLXdpbmRvdy1zY3JvbGwtcG9zaXRpb24nLCB3aW5kb3cuc2Nyb2xsWCArICcsJyArIHdpbmRvdy5zY3JvbGxZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgZm4gPSAoJGVsLCBrZXksIHJlY3Vyc2l2ZSAgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxEYXRhID0gKCRlbC5hdHRyKGtleSkgfHwgJycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBpZihzY3JvbGxEYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LnNjcm9sbExlZnQoc2Nyb2xsRGF0YVswXSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5zY3JvbGxUb3Aoc2Nyb2xsRGF0YVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZWwucmVtb3ZlQXR0cihrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtd2luZG93LXNjcm9sbC1wb3NpdGlvbicsIGZhbHNlLCAkKHdpbmRvdykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbkRlYWN0aXZhdGUgaXMgY2FsbGVkIGJlZm9yZSBhIHJvdXRlIGNoYW5nZS5cbiAgICAgKiBUaGlzIHdpbGwgaW50ZXJuYWxseSBjYWxsIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50XG4gICAgICogYXQgcGFnZSBsZXZlbCBhbmQgYXBwIGxldmVsIGluIHRoZSBhcHBsaWNhdGlvbiBhbmQgZGVjaWRlXG4gICAgICogd2hldGhlciB0byBjaGFuZ2Ugcm91dGUgb3Igbm90IGJhc2VkIG9uIHJldHVybiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZT86IHN0cmluZyl7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgcGFnZSBsZXZlbFxuICAgICAgICByZXRWYWwgPSB0aGlzLm9uQmVmb3JlUGFnZUxlYXZlKCk7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgYXBwIGxldmVsIG9ubHkgaWYgcGFnZSBsZXZlbCBtZXRob2QgcmV0dXJuIHRydWVcbiAgICAgICAgLy8gb3IgaWYgdGhlcmUgaXMgbm8gcGFnZSBsZXZlbCBtZXRob2RcbiAgICAgICAgaWYgKHJldFZhbCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICByZXRWYWwgPSAgKHRoaXMuQXBwLm9uQmVmb3JlUGFnZUxlYXZlIHx8IG5vb3ApKHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lLCB0aGlzLkFwcC5hY3RpdmVQYWdlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWwgPT09IHVuZGVmaW5lZCA/IHRydWUgOiByZXRWYWw7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbQ0FDSEVfUEFHRV0gPSB0aGlzLmNhblJldXNlKCk7XG4gICAgICAgIGlmICh0aGlzLmxheW91dERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSA9IHRoaXMubGF5b3V0RGlyZWN0aXZlLiRlbGVtZW50LnBhcmVudCgpO1xuICAgICAgICAgICAgaWYgKGlzSW9zKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdpb3MtcGFnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygnYW5kcm9pZC1wYWdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpO1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1blBhZ2VUcmFuc2l0aW9uKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkuY29tcGlsZVBhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZUNvbnRlbnRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPblJlYWR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5NdXRlV2F0Y2hlcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25QYWdlQ29udGVudFJlYWR5ID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvblJlYWR5KCkge31cblxuICAgIG9uQmVmb3JlUGFnZVJlYWR5KCkge31cblxuICAgIG9uQmVmb3JlUGFnZUxlYXZlKCkge31cblxuICAgIG9uUGFnZUNvbnRlbnRSZWFkeSgpIHt9XG5cbiAgICBjYW5SZXVzZSgpIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuc3BhUGFnZURpcmVjdGl2ZSAmJiB0aGlzLnNwYVBhZ2VEaXJlY3RpdmUuY2FjaGUpO1xuICAgIH1cblxuICAgIG11dGUoKSB7XG4gICAgICAgIGNvbnN0IG0gPSBvID0+IHsgbyAmJiBvLm11dGUgJiYgby5tdXRlKCk7IH07XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCBtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgbSk7XG4gICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCBtKTtcbiAgICB9XG5cbiAgICB1bm11dGUoYyA9IHRoaXMpIHtcbiAgICAgICAgY29uc3QgdW0gPSBvID0+IHsgbyAmJiBvLnVubXV0ZSAmJiBvLnVubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCB1bSk7XG4gICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCB1bSk7XG4gICAgfVxuXG4gICAgbmdPbkF0dGFjaCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhW0NBQ0hFX1BBR0VdID0gdGhpcy5jYW5SZXVzZSgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnZVBhcmFtcygpO1xuICAgICAgICB0aGlzLkFwcC5sYXN0QWN0aXZlUGFnZU5hbWUgPSB0aGlzLkFwcC5hY3RpdmVQYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLkFwcC5hY3RpdmVQYWdlID0gdGhpcztcbiAgICAgICAgdGhpcy5hY3RpdmVQYWdlTmFtZSA9IHRoaXMucGFnZU5hbWU7XG4gICAgICAgIHRoaXMucmVzdG9yZUxhc3RQYWdlU25hcHNob3QoKTtcbiAgICAgICAgdGhpcy51bm11dGUoKTtcbiAgICAgICAgLy8gZXhwb3NlIGN1cnJlbnQgcGFnZSB3aWRnZXRzIG9uIGFwcFxuICAgICAgICAodGhpcy5BcHAgYXMgYW55KS5XaWRnZXRzID0gT2JqZWN0LmNyZWF0ZSh0aGlzLldpZGdldHMpO1xuICAgICAgICBpZih0aGlzLnNwYVBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5zcGFQYWdlRGlyZWN0aXZlLnJlZnJlc2hkYXRhb25hdHRhY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2ggPSB2ID0+IHsgdiAmJiB2LnN0YXJ0VXBkYXRlICYmIHYuaW52b2tlICYmIHYuaW52b2tlKCk7IH07XG4gICAgICAgICAgICBlYWNoKHRoaXMuVmFyaWFibGVzLCByZWZyZXNoKTtcbiAgICAgICAgICAgIGVhY2godGhpcy5BY3Rpb25zLCByZWZyZXNoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJ1blBhZ2VUcmFuc2l0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzdG9yZVNjcm9sbFBvc2l0aW9uKCksIDEwMCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkF0dGFjaCAmJiB3Lm5nT25BdHRhY2goKSk7XG4gICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlQXR0YWNoJywgeyduYW1lJyA6IHRoaXMucGFnZU5hbWUsIGluc3RhbmNlOiB0aGlzfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdoaWdobGlnaHRBY3RpdmVMaW5rJywgeydwYWdlTmFtZSc6IHRoaXMucGFnZU5hbWV9KTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLnNhdmVTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVQYWdlU25hcFNob3QoKTtcbiAgICAgICAgdGhpcy5tdXRlKCk7XG4gICAgICAgIGVhY2godGhpcy5XaWRnZXRzLCB3ID0+IHcgJiYgdy5uZ09uRGV0YWNoICYmIHcubmdPbkRldGFjaCgpKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZURldGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vbkJlZm9yZVBhZ2VSZWFkeSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhcigpIHtcbiAgICAgICAgaWYoQmFzZVNwYVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdCkge1xuICAgICAgICAgICAgQmFzZVNwYVBhZ2VDb21wb25lbnQubGFzdFBhZ2VTbmFwU2hvdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIEJhc2VTcGFQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zcGEtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYmFzZS1zcGEtcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixZQUFZLEVBQXVCLFNBQVMsRUFBRSxTQUFTLEVBQW9CLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFFekIsR0FBRyxFQUNILFlBQVksRUFDWixJQUFJLEVBRUosY0FBYyxFQUNkLFlBQVksRUFDZixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFLdkMsTUFBTSxPQUFnQixvQkFB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QUFDLFlBQVksRUFBRSxFQUFDLE1BQU0sRUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixJQUFHLG9CQUFvQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdkMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0Msb0JBQW9CLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDOytHQXhYaUIsb0JBQW9CO21HQUFwQixvQkFBb0IsK0lBb0IzQixnQkFBZ0I7OzRGQXBCVCxvQkFBb0I7a0JBRHpDLFNBQVM7OEJBcUJ1QixnQkFBZ0I7c0JBQTVDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQThPM0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBEaXJlY3RpdmUsIEFmdGVyQ29udGVudEluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IGlzQW5kcm9pZCwgaXNJb3MsIFZpZXdwb3J0LCBTY3JpcHRMb2FkZXJTZXJ2aWNlLCByZWdpc3RlckZuQnlFeHByIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgTGF5b3V0RGlyZWN0aXZlLCBTcGFQYWdlRGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5cbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkdW53YXRjaEFsbEJ5U2NvcGUsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICBtdXRlV2F0Y2hlcnMsXG4gICAgbm9vcCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICBVdGlsc1NlcnZpY2Vcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgY29tbW9uUGFydGlhbFdpZGdldHMgfSBmcm9tICcuL2Jhc2UtcGFydGlhbC5jb21wb25lbnQnO1xuXG5cbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFnbWVudE1vbml0b3IgfSBmcm9tICcuLi91dGlsL2ZyYWdtZW50LW1vbml0b3InO1xuaW1wb3J0IHsgQ0FDSEVfUEFHRSB9IGZyb20gJy4uL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuaW1wb3J0IHtlYWNoLCBleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU3BhUGFnZUNvbXBvbmVudCBleHRlbmRzIEZyYWdtZW50TW9uaXRvciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGxhc3RQYWdlU25hcFNob3QgPSBudWxsO1xuICAgIFdpZGdldHM6IGFueTtcbiAgICBWYXJpYWJsZXM6IGFueTtcbiAgICBBY3Rpb25zOiBhbnk7XG4gICAgQXBwOiBBcHA7XG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIHBhZ2VOYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlUGFnZU5hbWU6IHN0cmluZztcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gICAgYXBwTWFuYWdlcjogQXBwTWFuYWdlclNlcnZpY2U7XG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2U7XG4gICAgcm91dGVyOiBSb3V0ZXI7XG4gICAgcGFnZVBhcmFtczogYW55O1xuICAgIHNob3dQYWdlQ29udGVudDogYm9vbGVhbjtcbiAgICBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZTtcbiAgICBhcHBMb2NhbGU6IGFueTtcbiAgICBzdGFydHVwVmFyaWFibGVzTG9hZGVkID0gZmFsc2U7XG4gICAgcGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgICBsYXlvdXREaXJlY3RpdmU6IExheW91dERpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKFNwYVBhZ2VEaXJlY3RpdmUpIHNwYVBhZ2VEaXJlY3RpdmU7XG4gICAgJHBhZ2U7XG4gICAgc2NyaXB0TG9hZGVyU2VydmljZTogU2NyaXB0TG9hZGVyU2VydmljZTtcbiAgICBWaWV3cG9ydDogVmlld3BvcnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdmlld0luaXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJyd9O1xuXG4gICAgYWJzdHJhY3QgZXZhbFVzZXJTY3JpcHQocHJlZmFiQ29udGV4dDogYW55LCBhcHBDb250ZXh0OiBhbnksIHV0aWxzOiBhbnkpO1xuICAgIGFic3RyYWN0IGdldFZhcmlhYmxlcygpO1xuICAgIGFic3RyYWN0IGdldEV4cHJlc3Npb25zKCk7XG5cbiAgICBpbml0KCkge1xuXG4gICAgICAgIG11dGVXYXRjaGVycygpO1xuXG4gICAgICAgIHRoaXMuQXBwID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSkgOiBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWFuYWdlclNlcnZpY2UpIDogaW5qZWN0KEFwcE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKSA6IGluamVjdChBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zY3JpcHRMb2FkZXJTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFNjcmlwdExvYWRlclNlcnZpY2UpIDogaW5qZWN0KFNjcmlwdExvYWRlclNlcnZpY2UpO1xuICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KEFic3RyYWN0STE4blNlcnZpY2UpIDogaW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpO1xuICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpIDogaW5qZWN0KFJvdXRlcik7XG4gICAgICAgIHRoaXMuVmlld3BvcnQgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoVmlld3BvcnQpIDogaW5qZWN0KFZpZXdwb3J0KTtcbiAgICAgICAgdGhpcy5sYXlvdXREaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yID8gdGhpcy5pbmplY3Rvci5nZXQoTGF5b3V0RGlyZWN0aXZlKSA6IGluamVjdChMYXlvdXREaXJlY3RpdmUpO1xuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyBmb3IgYmluZGluZyBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmluaXRVc2VyU2NyaXB0KCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldHMoKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKCk7XG5cbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lOyAvLyBUb2RvOiByZW1vdmUgdGhpc1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdlUGFyYW1zKCk7XG4gICAgICAgIHRoaXMuZGVmaW5lSTE4blByb3BzKCk7XG4gICAgICAgIHN1cGVyLmluaXQoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlcldpZGdldHMoKSB7XG4gICAgICAgIC8vIGNvbW1vbiBwYXJ0aWFsIHdpZGdldHMgc2hvdWxkIGJlIGFjY2Vzc2libGUgZnJvbSBwYWdlXG4gICAgICAgIHRoaXMuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUoY29tbW9uUGFydGlhbFdpZGdldHMpO1xuXG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICB9XG5cbiAgICBpbml0VXNlclNjcmlwdCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbFVzZXJTY3JpcHQodGhpcywgdGhpcy5BcHAsIHRoaXMuaW5qZWN0b3IgPyB0aGlzLmluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpIDogaW5qZWN0KFV0aWxzU2VydmljZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmFsdWF0aW5nIHBhZ2UgKCR7dGhpcy5wYWdlTmFtZX0pIHNjcmlwdFxcbmAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQYWdlUGFyYW1zKCkge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy5wYWdlUGFyYW1zID0gKHRoaXMuQXBwIGFzIGFueSkucGFnZVBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZShub29wLCBub29wLCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBkZWZpbmVJMThuUHJvcHMoKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gdGhpcy5pMThuU2VydmljZS5nZXRBcHBMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBpbml0VmFyaWFibGVzKCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXNTZXJ2aWNlID0gdGhpcy5pbmplY3RvciA/IHRoaXMuaW5qZWN0b3IuZ2V0KFZhcmlhYmxlc1NlcnZpY2UpIDogaW5qZWN0KFZhcmlhYmxlc1NlcnZpY2UpO1xuXG4gICAgICAgIC8vIGdldCB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW5zdGFuY2VzIGZvciB0aGUgcGFnZVxuICAgICAgICBjb25zdCB2YXJpYWJsZUNvbGxlY3Rpb24gPSB2YXJpYWJsZXNTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMucGFnZU5hbWUsIHRoaXMuZ2V0VmFyaWFibGVzKCksIHRoaXMpO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBuYW1lc3BhY2UgZm9yIFZhcmlhYmxlcyBuYWQgQWN0aW9ucyBvbiBwYWdlL3BhcnRpYWwsIHdoaWNoIGluaGVyaXRzIHRoZSBWYXJpYWJsZXMgYW5kIEFjdGlvbnMgZnJvbSBBcHAgaW5zdGFuY2VcbiAgICAgICAgdGhpcy5WYXJpYWJsZXMgPSBPYmplY3QuY3JlYXRlKHRoaXMuQXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIHRoaXMuQWN0aW9ucyA9IE9iamVjdC5jcmVhdGUodGhpcy5BcHAuQWN0aW9ucyk7XG5cbiAgICAgICAgLy8gYXNzaWduIGFsbCB0aGUgcGFnZSB2YXJpYWJsZXMgdG8gdGhlIHBhZ2VJbnN0YW5jZVxuICAgICAgICBPYmplY3QuZW50cmllcyh2YXJpYWJsZUNvbGxlY3Rpb24uVmFyaWFibGVzKS5mb3JFYWNoKChbbmFtZSwgdmFyaWFibGVdKSA9PiB0aGlzLlZhcmlhYmxlc1tuYW1lXSA9IHZhcmlhYmxlKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVDb2xsZWN0aW9uLkFjdGlvbnMpLmZvckVhY2goKFtuYW1lLCBhY3Rpb25dKSA9PiB0aGlzLkFjdGlvbnNbbmFtZV0gPSBhY3Rpb24pO1xuXG5cblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdJbml0JC5zdWJzY3JpYmUobm9vcCwgbm9vcCwgKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYXBwTWFuYWdlci5pc0FwcFZhcmlhYmxlc0ZpcmVkKCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUNvbGxlY3Rpb24uY2FsbGJhY2sodGhpcy5BcHAuVmFyaWFibGVzKS5jYXRjaChub29wKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnYXBwLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh0aGlzLkFwcC5BY3Rpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuYXBwVmFyaWFibGVzUmVhZHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIuaXNBcHBWYXJpYWJsZXNGaXJlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyaWFibGVDb2xsZWN0aW9uLmNhbGxiYWNrKHZhcmlhYmxlQ29sbGVjdGlvbi5WYXJpYWJsZXMpXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlLXZhcmlhYmxlcy1kYXRhLWxvYWRlZCcsIHtwYWdlTmFtZTogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0dXBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBoaWRlIHRoZSBsb2FkZXIgb25seSBhZnRlciB0aGUgc29tZSBzZXRUaW1lb3V0IGZvciBzbW9vdGggcGFnZSBsb2FkLlxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhcmlhYmxlQ29sbGVjdGlvbi5jYWxsYmFjayh2YXJpYWJsZUNvbGxlY3Rpb24uQWN0aW9ucyk7XG5cbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUaW1lem9uZShsb2NhbGUpIHtcbiAgICAgICAgdGhpcy5pMThuU2VydmljZS5zZXRUaW1lem9uZShsb2NhbGUsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJpbmQgZXhwcmVzc2lvbnMgZ2VuZXJhdGVkIGluIHRoaXMgcGFnZSBpbnN0YW5jZVxuICAgICAqIGdldEV4cHJlc3Npb25zIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBwYWdlLmNvbXAudHMgZmlsZVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucywgbWFwIG9mIGJpbmQgZXhwcmVzc2lvbiB2cyBnZW5lcmF0ZWQgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb25zKCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoKTtcbiAgICAgICAgZWFjaChleHByZXNzaW9ucywgKGZuLCBleHByKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RlckZuQnlFeHByKGV4cHIsIGZuWzBdLCBmblsxXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJ1blBhZ2VUcmFuc2l0aW9uKHRyYW5zaXRpb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gfHwgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRQYWdlVHJhbnNpdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IEJhc2VTcGFQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3RcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAmJiAhdHJhbnNpdGlvbi5zdGFydHNXaXRoKCdub25lJylcbiAgICAgICAgICAgICAgICAmJiBsYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0ICR0YXJnZXQgPSBsYXN0UGFnZS5wYXJlbnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvblRyYW5zaXRpb25FbmQgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZSAmJiAhKGUgJiYgZS5wc2V1ZG9FbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5vZmYoJ2FuaW1hdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0LnJlbW92ZUNsYXNzKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLmZpcnN0KCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbiA9ICdwYWdlLXRyYW5zaXRpb24gcGFnZS10cmFuc2l0aW9uLScgKyB0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIGxhc3RQYWdlLmFkZENsYXNzKCdwYWdlLWV4aXQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5hZGRDbGFzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0Lm9uKCdhbmltYXRpb25lbmQnLCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGEgbWF4aW11bSBvZiAxIHNlY29uZCBmb3IgdHJhbnNpdGlvbiB0byBlbmQuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChvblRyYW5zaXRpb25FbmQsIDEwMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSAmJiB0aGlzLiRwYWdlLnJlbW92ZUNsYXNzKCdwYWdlLWVudHJ5Jyk7XG4gICAgICAgICAgICBpZiAobGFzdFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBsYXN0UGFnZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFnZVRyYW5zaXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VPblJlYWR5KCkge1xuICAgICAgICB0aGlzLm9uUmVhZHkoKTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnaGlnaGxpZ2h0QWN0aXZlTGluaycsIHsncGFnZU5hbWUnIDogdGhpcy5wYWdlTmFtZX0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5KCdwYWdlUmVhZHknLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICAgICAgKHRoaXMuQXBwLm9uUGFnZVJlYWR5IHx8IG5vb3ApKHRoaXMucGFnZU5hbWUsIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0c1JlcXVpcmVkID0gdGhpcy5zcGFQYWdlRGlyZWN0aXZlICYmIHRoaXMuc3BhUGFnZURpcmVjdGl2ZS4kZWxlbWVudC5hdHRyKCdzY3JpcHRzLXRvLWxvYWQnKTtcblxuICAgICAgICAgICAgaWYgKHNjcmlwdHNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0TG9hZGVyU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAubG9hZCguLi5zY3JpcHRzUmVxdWlyZWQuc3BsaXQoJywnKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpIHt9XG5cbiAgICBwcml2YXRlIHNhdmVQYWdlU25hcFNob3QoKSB7XG4gICAgICAgIGlmIChCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90KSB7XG4gICAgICAgICAgICBCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGZuID0gKCRlbCwga2V5LCByZWN1cnNpdmUgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAkdGFyZ2V0LnNjcm9sbExlZnQoKSxcbiAgICAgICAgICAgICAgICB5OiAkdGFyZ2V0LnNjcm9sbFRvcCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYoc2Nyb2xsRGF0YS54ID4gMCB8fCBzY3JvbGxEYXRhLnkgPiAwKSB7XG4gICAgICAgICAgICAgICAgJGVsLmF0dHIoa2V5LCBzY3JvbGxEYXRhLnggKyAnLCcgKyBzY3JvbGxEYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy4kcGFnZS5hdHRyKCdkYXRhLXdpbmRvdy1zY3JvbGwtcG9zaXRpb24nLCB3aW5kb3cuc2Nyb2xsWCArICcsJyArIHdpbmRvdy5zY3JvbGxZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgZm4gPSAoJGVsLCBrZXksIHJlY3Vyc2l2ZSAgPSB0cnVlLCAkdGFyZ2V0ID0gJGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxEYXRhID0gKCRlbC5hdHRyKGtleSkgfHwgJycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBpZihzY3JvbGxEYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LnNjcm9sbExlZnQoc2Nyb2xsRGF0YVswXSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5zY3JvbGxUb3Aoc2Nyb2xsRGF0YVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZWwucmVtb3ZlQXR0cihrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICRlbC5jaGlsZHJlbigpLmVhY2goKGksIHYpID0+IGZuKCQodiksIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmbih0aGlzLiRwYWdlLCAnZGF0YS1zY3JvbGwtcG9zaXRpb24nKTtcbiAgICAgICAgZm4odGhpcy4kcGFnZSwgJ2RhdGEtd2luZG93LXNjcm9sbC1wb3NpdGlvbicsIGZhbHNlLCAkKHdpbmRvdykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbkRlYWN0aXZhdGUgaXMgY2FsbGVkIGJlZm9yZSBhIHJvdXRlIGNoYW5nZS5cbiAgICAgKiBUaGlzIHdpbGwgaW50ZXJuYWxseSBjYWxsIG9uQmVmb3JlUGFnZUxlYXZlIG1ldGhvZCBwcmVzZW50XG4gICAgICogYXQgcGFnZSBsZXZlbCBhbmQgYXBwIGxldmVsIGluIHRoZSBhcHBsaWNhdGlvbiBhbmQgZGVjaWRlXG4gICAgICogd2hldGhlciB0byBjaGFuZ2Ugcm91dGUgb3Igbm90IGJhc2VkIG9uIHJldHVybiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZT86IHN0cmluZyl7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgcGFnZSBsZXZlbFxuICAgICAgICByZXRWYWwgPSB0aGlzLm9uQmVmb3JlUGFnZUxlYXZlKCk7XG4gICAgICAgIC8vIENhbGxpbmcgb25CZWZvcmVQYWdlTGVhdmUgbWV0aG9kIHByZXNlbnQgYXQgYXBwIGxldmVsIG9ubHkgaWYgcGFnZSBsZXZlbCBtZXRob2QgcmV0dXJuIHRydWVcbiAgICAgICAgLy8gb3IgaWYgdGhlcmUgaXMgbm8gcGFnZSBsZXZlbCBtZXRob2RcbiAgICAgICAgaWYgKHJldFZhbCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICByZXRWYWwgPSAgKHRoaXMuQXBwLm9uQmVmb3JlUGFnZUxlYXZlIHx8IG5vb3ApKHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lLCB0aGlzLkFwcC5hY3RpdmVQYWdlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWwgPT09IHVuZGVmaW5lZCA/IHRydWUgOiByZXRWYWw7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbQ0FDSEVfUEFHRV0gPSB0aGlzLmNhblJldXNlKCk7XG4gICAgICAgIGlmICh0aGlzLmxheW91dERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy4kcGFnZSA9IHRoaXMubGF5b3V0RGlyZWN0aXZlLiRlbGVtZW50LnBhcmVudCgpO1xuICAgICAgICAgICAgaWYgKGlzSW9zKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRwYWdlLmFkZENsYXNzKCdpb3MtcGFnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGFnZS5hZGRDbGFzcygnYW5kcm9pZC1wYWdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFBhZ2VTbmFwc2hvdCgpO1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHRzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1blBhZ2VUcmFuc2l0aW9uKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkuY29tcGlsZVBhZ2VDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZUNvbnRlbnRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50c0xvYWRlZCQuc3Vic2NyaWJlKG5vb3AsIG5vb3AsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPblJlYWR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5NdXRlV2F0Y2hlcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25QYWdlQ29udGVudFJlYWR5ID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbndhdGNoIGFsbCBQYWdlLXNjb3BlZCB3YXRjaGVycyBmb3IgVEhJUyBzcGVjaWZpYyBwYWdlIHdoZW4gcGFnZSBpcyBkZXN0cm95ZWRcbiAgICAgICAgaWYgKHRoaXMucGFnZU5hbWUpIHtcbiAgICAgICAgICAgICR1bndhdGNoQWxsQnlTY29wZSgnUGFnZScsIHRoaXMucGFnZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2F2ZVBhZ2VTbmFwU2hvdCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25SZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VSZWFkeSgpIHt9XG5cbiAgICBvbkJlZm9yZVBhZ2VMZWF2ZSgpIHt9XG5cbiAgICBvblBhZ2VDb250ZW50UmVhZHkoKSB7fVxuXG4gICAgY2FuUmV1c2UoKSB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLnNwYVBhZ2VEaXJlY3RpdmUgJiYgdGhpcy5zcGFQYWdlRGlyZWN0aXZlLmNhY2hlKTtcbiAgICB9XG5cbiAgICBtdXRlKCkge1xuICAgICAgICBjb25zdCBtID0gbyA9PiB7IG8gJiYgby5tdXRlICYmIG8ubXV0ZSgpOyB9O1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgbSk7XG4gICAgICAgIGVhY2godGhpcy5WYXJpYWJsZXMsIG0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgbSk7XG4gICAgfVxuXG4gICAgdW5tdXRlKGMgPSB0aGlzKSB7XG4gICAgICAgIGNvbnN0IHVtID0gbyA9PiB7IG8gJiYgby51bm11dGUgJiYgby51bm11dGUoKTsgfTtcbiAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHVtKTtcbiAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgdW0pO1xuICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgdW0pO1xuICAgIH1cblxuICAgIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVtDQUNIRV9QQUdFXSA9IHRoaXMuY2FuUmV1c2UoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2VQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5BcHAubGFzdEFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5BcHAuYWN0aXZlUGFnZU5hbWU7XG4gICAgICAgIHRoaXMuQXBwLmFjdGl2ZVBhZ2VOYW1lID0gdGhpcy5wYWdlTmFtZTtcbiAgICAgICAgdGhpcy5BcHAuYWN0aXZlUGFnZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZU5hbWUgPSB0aGlzLnBhZ2VOYW1lO1xuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0UGFnZVNuYXBzaG90KCk7XG4gICAgICAgIHRoaXMudW5tdXRlKCk7XG4gICAgICAgIC8vIGV4cG9zZSBjdXJyZW50IHBhZ2Ugd2lkZ2V0cyBvbiBhcHBcbiAgICAgICAgKHRoaXMuQXBwIGFzIGFueSkuV2lkZ2V0cyA9IE9iamVjdC5jcmVhdGUodGhpcy5XaWRnZXRzKTtcbiAgICAgICAgaWYodGhpcy5zcGFQYWdlRGlyZWN0aXZlICYmIHRoaXMuc3BhUGFnZURpcmVjdGl2ZS5yZWZyZXNoZGF0YW9uYXR0YWNoKSB7XG4gICAgICAgICAgICBjb25zdCByZWZyZXNoID0gdiA9PiB7IHYgJiYgdi5zdGFydFVwZGF0ZSAmJiB2Lmludm9rZSAmJiB2Lmludm9rZSgpOyB9O1xuICAgICAgICAgICAgZWFjaCh0aGlzLlZhcmlhYmxlcywgcmVmcmVzaCk7XG4gICAgICAgICAgICBlYWNoKHRoaXMuQWN0aW9ucywgcmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5QYWdlVHJhbnNpdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCAxMDApO1xuICAgICAgICAgICAgZWFjaCh0aGlzLldpZGdldHMsIHcgPT4gdyAmJiB3Lm5nT25BdHRhY2ggJiYgdy5uZ09uQXR0YWNoKCkpO1xuICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgncGFnZUF0dGFjaCcsIHsnbmFtZScgOiB0aGlzLnBhZ2VOYW1lLCBpbnN0YW5jZTogdGhpc30pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeSgnaGlnaGxpZ2h0QWN0aXZlTGluaycsIHsncGFnZU5hbWUnOiB0aGlzLnBhZ2VOYW1lfSk7XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5zYXZlU2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5zYXZlUGFnZVNuYXBTaG90KCk7XG4gICAgICAgIHRoaXMubXV0ZSgpO1xuICAgICAgICBlYWNoKHRoaXMuV2lkZ2V0cywgdyA9PiB3ICYmIHcubmdPbkRldGFjaCAmJiB3Lm5nT25EZXRhY2goKSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5ub3RpZnkoJ3BhZ2VEZXRhY2gnLCB7J25hbWUnIDogdGhpcy5wYWdlTmFtZSwgaW5zdGFuY2U6IHRoaXN9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMub25CZWZvcmVQYWdlUmVhZHkoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2xlYXIoKSB7XG4gICAgICAgIGlmKEJhc2VTcGFQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QpIHtcbiAgICAgICAgICAgIEJhc2VTcGFQYWdlQ29tcG9uZW50Lmxhc3RQYWdlU25hcFNob3QucmVtb3ZlKCk7XG4gICAgICAgICAgICBCYXNlU3BhUGFnZUNvbXBvbmVudC5sYXN0UGFnZVNuYXBTaG90ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Compiler, Injectable, Injector, KeyValueDiffers } from '@angular/core';
|
|
2
2
|
import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LowerCasePipe, NgLocalization, PercentPipe, SlicePipe, TitleCasePipe, UpperCasePipe } from '@angular/common';
|
|
3
3
|
import { CustomPipe, FileExtensionFromMimePipe, FileIconClassPipe, FileSizePipe, FilterPipe, NumberToStringPipe, PrefixPipe, SanitizePipe, StateClassPipe, StringToNumberPipe, SuffixPipe, TemplateReplacePipe, TimeFromNowPipe, ToCurrencyPipe, ToDatePipe, ToNumberPipe, TrustAsPipe } from '@wm/components/base';
|
|
4
|
-
import { AbstractI18nService, CustomPipeManager, getSessionStorageItem } from '@wm/core';
|
|
4
|
+
import { AbstractI18nService, App, CustomPipeManager, getSessionStorageItem } from '@wm/core';
|
|
5
5
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/platform-browser";
|
|
@@ -34,7 +34,7 @@ export class PipeProvider {
|
|
|
34
34
|
this.preparePipeMeta(CurrencyPipe, 'currency', true, [this._locale]),
|
|
35
35
|
this.preparePipeMeta(DatePipe, 'date', true, [this._locale]),
|
|
36
36
|
this.preparePipeMeta(ToDatePipe, 'toDate', true, [
|
|
37
|
-
new DatePipe(this._locale), undefined, this.injector.get(CustomPipeManager)
|
|
37
|
+
new DatePipe(this._locale), undefined, this.injector.get(App), this.injector.get(CustomPipeManager)
|
|
38
38
|
]),
|
|
39
39
|
this.preparePipeMeta(ToNumberPipe, 'toNumber', true, [
|
|
40
40
|
new DecimalPipe(this._locale),
|
|
@@ -51,7 +51,7 @@ export class PipeProvider {
|
|
|
51
51
|
new DecimalPipe(this._locale)
|
|
52
52
|
]),
|
|
53
53
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
54
|
-
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
54
|
+
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(App), this.injector.get(CustomPipeManager)]),
|
|
55
55
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
56
56
|
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
57
57
|
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
121
121
|
providedIn: 'root'
|
|
122
122
|
}]
|
|
123
123
|
}], ctorParameters: () => [{ type: i0.Compiler }, { type: i0.Injector }, { type: i1.DomSanitizer }, { type: i2.AbstractI18nService }] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QixPQUFPLEVBQ0gsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLFlBQVk7SUFnQnJCLFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO2dCQUNyRCxjQUFjO2FBQ2pCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7Z0JBQ2xELGVBQWU7YUFDbEIsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQztZQUM5RCxJQUFJLENBQUMsZUFBZSxDQUNoQix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLElBQUksQ0FDUDtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztZQUNwRCxTQUFTO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7WUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7WUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQzdDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7YUFDOUUsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQ2pELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVO2FBQ2xCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO2dCQUNyRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVTthQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUU7Z0JBQzdELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDaEMsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1NBQ3JFLENBQUM7SUFDTixDQUFDO0lBR0QsV0FBVyxDQUFDLElBQUk7UUFDWixNQUFNLEtBQUssQ0FBQyxhQUFhLElBQUksc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsWUFBb0IsUUFBa0IsRUFBVSxRQUFrQixFQUFVLFlBQXlCLEVBQVUsVUFBK0I7UUFBMUgsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBMUU5SSxZQUFPLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFMUQsb0JBQWUsR0FBRyxDQUNkLFNBQWUsRUFDZixJQUFZLEVBQ1osSUFBYSxFQUNiLE1BQU0sR0FBRyxFQUFFLEVBQ2IsRUFBRSxDQUFDLENBQUM7WUFDRixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQzNCLElBQUk7WUFDSixJQUFJO1NBQ1AsQ0FBQyxDQUFDO1FBQ0gsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQStEWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUk7UUFDTCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQUk7UUFDWixNQUFNLEVBQ0YsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQ3pDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQztZQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzsrR0ExSFEsWUFBWTttSEFBWixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21waWxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIEtleVZhbHVlRGlmZmVycywgUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFzeW5jUGlwZSxcbiAgICBDdXJyZW5jeVBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgSTE4blBsdXJhbFBpcGUsXG4gICAgSTE4blNlbGVjdFBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgTmdMb2NhbGl6YXRpb24sXG4gICAgUGVyY2VudFBpcGUsXG4gICAgU2xpY2VQaXBlLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gICAgVXBwZXJDYXNlUGlwZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICAgIEN1c3RvbVBpcGUsXG4gICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgRmlsdGVyUGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgUHJlZml4UGlwZSxcbiAgICBTYW5pdGl6ZVBpcGUsXG4gICAgU3RhdGVDbGFzc1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgVGVtcGxhdGVSZXBsYWNlUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgVG9DdXJyZW5jeVBpcGUsXG4gICAgVG9EYXRlUGlwZSxcbiAgICBUb051bWJlclBpcGUsXG4gICAgVHJ1c3RBc1BpcGVcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Fic3RyYWN0STE4blNlcnZpY2UsIEN1c3RvbVBpcGVNYW5hZ2VyLCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW19IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVQcm92aWRlciB7XG4gICAgX3BpcGVNZXRhO1xuICAgIF9sb2NhbGUgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJztcbiAgICBmb3JtYXRzQnlMb2NhbGU7XG4gICAgcHJlcGFyZVBpcGVNZXRhID0gKFxuICAgICAgICByZWZlcmVuY2U6IFBpcGUsXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVyZTogYm9vbGVhbixcbiAgICAgICAgZGlEZXBzID0gW11cbiAgICApID0+ICh7XG4gICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlLCBkaURlcHMgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHVyZVxuICAgIH0pO1xuICAgIF9waXBlRGF0YSA9IFtdO1xuXG4gICAgc2V0UGlwZURhdGEoKSB7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhID0gW1xuICAgICAgICAgICAgLy8gVE9ETyB8IE5FRUQgVE8gQkUgVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShBc3luY1BpcGUsICdhc3luYycsIGZhbHNlLCBbQ2hhbmdlRGV0ZWN0b3JSZWZdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFNsaWNlUGlwZSwgJ3NsaWNlJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUGVyY2VudFBpcGUsICdwZXJjZW50JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blBsdXJhbFBpcGUsICdpMThuUGx1cmFsJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIE5nTG9jYWxpemF0aW9uXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEkxOG5TZWxlY3RQaXBlLCAnaTE4blNlbGVjdCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoS2V5VmFsdWVQaXBlLCAna2V5dmFsdWUnLCBmYWxzZSwgW1xuICAgICAgICAgICAgICAgIEtleVZhbHVlRGlmZmVyc1xuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlSWNvbkNsYXNzUGlwZSwgJ2ZpbGVJY29uQ2xhc3MnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFxuICAgICAgICAgICAgICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZScsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0YXRlQ2xhc3NQaXBlLCAnc3RhdGVDbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsZVNpemVQaXBlLCAnZmlsZXNpemUnLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFRFU1RFRFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsdGVyUGlwZSwgJ2ZpbHRlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVXBwZXJDYXNlUGlwZSwgJ3VwcGVyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoTG93ZXJDYXNlUGlwZSwgJ2xvd2VyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSnNvblBpcGUsICdqc29uJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGVjaW1hbFBpcGUsICdudW1iZXInLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUaXRsZUNhc2VQaXBlLCAndGl0bGVjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXJyZW5jeVBpcGUsICdjdXJyZW5jeScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKERhdGVQaXBlLCAnZGF0ZScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvRGF0ZVBpcGUsICd0b0RhdGUnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSksIHVuZGVmaW5lZCwgdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9tUGlwZU1hbmFnZXIpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvTnVtYmVyUGlwZSwgJ3RvTnVtYmVyJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuaTE4c2VydmljZVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUb0N1cnJlbmN5UGlwZSwgJ3RvQ3VycmVuY3knLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFByZWZpeFBpcGUsICdwcmVmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN1ZmZpeFBpcGUsICdzdWZmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpbWVGcm9tTm93UGlwZSwgJ3RpbWVGcm9tTm93JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShOdW1iZXJUb1N0cmluZ1BpcGUsICdudW1iZXJUb1N0cmluZycsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTdHJpbmdUb051bWJlclBpcGUsICdzdHJpbmdUb051bWJlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoQ3VzdG9tUGlwZSwgJ2N1c3RvbScsIHRydWUsIFt0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcildKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRydXN0QXNQaXBlLCAndHJ1c3RBcycsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2FuaXRpemVQaXBlLCAnc2FuaXRpemUnLCB0cnVlLCBbdGhpcy5kb21TYW5pdGl6ZXJdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRlbXBsYXRlUmVwbGFjZVBpcGUsICd0ZW1wbGF0ZVJlcGxhY2UnLCB0cnVlKSxcbiAgICAgICAgXTtcbiAgICB9XG5cblxuICAgIHVua25vd25QaXBlKG5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoZSBwaXBlICcke25hbWV9JyBjb3VsZCBub3QgYmUgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgZG9tU2FuaXRpemVyOkRvbVNhbml0aXplciwgcHJpdmF0ZSBpMThzZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnNldFBpcGVEYXRhKCk7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICB0aGlzLl9waXBlTWV0YS5zZXQodi5uYW1lLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybWF0c0J5TG9jYWxlID0gdGhpcy5pMThzZXJ2aWNlPyB0aGlzLmkxOHNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB7fTtcbiAgICB9XG5cbiAgICBtZXRhKG5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuX3BpcGVNZXRhLmdldChuYW1lKTtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cblxuICAgIGdldFBpcGVOYW1lVnNJc1B1cmVNYXAoKSB7XG4gICAgICAgIGNvbnN0IF9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIF9tYXAuc2V0KGssIHYucHVyZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX21hcDtcbiAgICB9XG5cbiAgICByZXNvbHZlRGVwKGRlcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZGVwLnRva2VuLmlkZW50aWZpZXIucmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICBnZXRJbnN0YW5jZShuYW1lKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlOiByZWYsIGRpRGVwczogZGVwcyB9XG4gICAgICAgIH0gPSB0aGlzLm1ldGEobmFtZSk7XG4gICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goZGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QixPQUFPLEVBQ0gsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENB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SUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFJO1FBQ1osTUFBTSxFQUNGLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUN6QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7K0dBMUhRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcGlsZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBLZXlWYWx1ZURpZmZlcnMsIFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBc3luY1BpcGUsXG4gICAgQ3VycmVuY3lQaXBlLFxuICAgIERhdGVQaXBlLFxuICAgIERlY2ltYWxQaXBlLFxuICAgIEkxOG5QbHVyYWxQaXBlLFxuICAgIEkxOG5TZWxlY3RQaXBlLFxuICAgIEpzb25QaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIE5nTG9jYWxpemF0aW9uLFxuICAgIFBlcmNlbnRQaXBlLFxuICAgIFNsaWNlUGlwZSxcbiAgICBUaXRsZUNhc2VQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgICBDdXN0b21QaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgRmlsZUljb25DbGFzc1BpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIFN0YXRlQ2xhc3NQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBTdWZmaXhQaXBlLFxuICAgIFRlbXBsYXRlUmVwbGFjZVBpcGUsXG4gICAgVGltZUZyb21Ob3dQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFRvRGF0ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRydXN0QXNQaXBlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHAsIEN1c3RvbVBpcGVNYW5hZ2VyLCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW19IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVQcm92aWRlciB7XG4gICAgX3BpcGVNZXRhO1xuICAgIF9sb2NhbGUgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJztcbiAgICBmb3JtYXRzQnlMb2NhbGU7XG4gICAgcHJlcGFyZVBpcGVNZXRhID0gKFxuICAgICAgICByZWZlcmVuY2U6IFBpcGUsXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVyZTogYm9vbGVhbixcbiAgICAgICAgZGlEZXBzID0gW11cbiAgICApID0+ICh7XG4gICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlLCBkaURlcHMgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHVyZVxuICAgIH0pO1xuICAgIF9waXBlRGF0YSA9IFtdO1xuXG4gICAgc2V0UGlwZURhdGEoKSB7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhID0gW1xuICAgICAgICAgICAgLy8gVE9ETyB8IE5FRUQgVE8gQkUgVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShBc3luY1BpcGUsICdhc3luYycsIGZhbHNlLCBbQ2hhbmdlRGV0ZWN0b3JSZWZdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFNsaWNlUGlwZSwgJ3NsaWNlJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUGVyY2VudFBpcGUsICdwZXJjZW50JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blBsdXJhbFBpcGUsICdpMThuUGx1cmFsJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIE5nTG9jYWxpemF0aW9uXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEkxOG5TZWxlY3RQaXBlLCAnaTE4blNlbGVjdCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoS2V5VmFsdWVQaXBlLCAna2V5dmFsdWUnLCBmYWxzZSwgW1xuICAgICAgICAgICAgICAgIEtleVZhbHVlRGlmZmVyc1xuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlSWNvbkNsYXNzUGlwZSwgJ2ZpbGVJY29uQ2xhc3MnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFxuICAgICAgICAgICAgICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZScsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0YXRlQ2xhc3NQaXBlLCAnc3RhdGVDbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsZVNpemVQaXBlLCAnZmlsZXNpemUnLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFRFU1RFRFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsdGVyUGlwZSwgJ2ZpbHRlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVXBwZXJDYXNlUGlwZSwgJ3VwcGVyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoTG93ZXJDYXNlUGlwZSwgJ2xvd2VyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSnNvblBpcGUsICdqc29uJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGVjaW1hbFBpcGUsICdudW1iZXInLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUaXRsZUNhc2VQaXBlLCAndGl0bGVjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXJyZW5jeVBpcGUsICdjdXJyZW5jeScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKERhdGVQaXBlLCAnZGF0ZScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvRGF0ZVBpcGUsICd0b0RhdGUnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSksIHVuZGVmaW5lZCwgdGhpcy5pbmplY3Rvci5nZXQoQXBwKSwgdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9tUGlwZU1hbmFnZXIpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvTnVtYmVyUGlwZSwgJ3RvTnVtYmVyJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuaTE4c2VydmljZVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUb0N1cnJlbmN5UGlwZSwgJ3RvQ3VycmVuY3knLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFByZWZpeFBpcGUsICdwcmVmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN1ZmZpeFBpcGUsICdzdWZmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpbWVGcm9tTm93UGlwZSwgJ3RpbWVGcm9tTm93JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShOdW1iZXJUb1N0cmluZ1BpcGUsICdudW1iZXJUb1N0cmluZycsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTdHJpbmdUb051bWJlclBpcGUsICdzdHJpbmdUb051bWJlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoQ3VzdG9tUGlwZSwgJ2N1c3RvbScsIHRydWUsIFt0aGlzLmluamVjdG9yLmdldChBcHApLCB0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcildKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRydXN0QXNQaXBlLCAndHJ1c3RBcycsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2FuaXRpemVQaXBlLCAnc2FuaXRpemUnLCB0cnVlLCBbdGhpcy5kb21TYW5pdGl6ZXJdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRlbXBsYXRlUmVwbGFjZVBpcGUsICd0ZW1wbGF0ZVJlcGxhY2UnLCB0cnVlKSxcbiAgICAgICAgXTtcbiAgICB9XG5cblxuICAgIHVua25vd25QaXBlKG5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoZSBwaXBlICcke25hbWV9JyBjb3VsZCBub3QgYmUgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgZG9tU2FuaXRpemVyOkRvbVNhbml0aXplciwgcHJpdmF0ZSBpMThzZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnNldFBpcGVEYXRhKCk7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICB0aGlzLl9waXBlTWV0YS5zZXQodi5uYW1lLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybWF0c0J5TG9jYWxlID0gdGhpcy5pMThzZXJ2aWNlPyB0aGlzLmkxOHNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB7fTtcbiAgICB9XG5cbiAgICBtZXRhKG5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuX3BpcGVNZXRhLmdldChuYW1lKTtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cblxuICAgIGdldFBpcGVOYW1lVnNJc1B1cmVNYXAoKSB7XG4gICAgICAgIGNvbnN0IF9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3BpcGVNZXRhLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIF9tYXAuc2V0KGssIHYucHVyZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX21hcDtcbiAgICB9XG5cbiAgICByZXNvbHZlRGVwKGRlcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZGVwLnRva2VuLmlkZW50aWZpZXIucmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICBnZXRJbnN0YW5jZShuYW1lKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlOiByZWYsIGRpRGVwczogZGVwcyB9XG4gICAgICAgIH0gPSB0aGlzLm1ldGEobmFtZSk7XG4gICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnVua25vd25QaXBlKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goZGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|