@microsoft/windows-admin-center-sdk 4.87.0 → 4.123.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular/esm2020/src/controls/actions/containers/action-bar/action-bar.component.mjs +2 -2
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +2 -1
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/core/assets/strings/cs-CZ/strings.json +1 -1
- package/core/assets/strings/es-ES/strings.json +1 -1
- package/core/assets/strings/fr-FR/strings.json +1 -1
- package/core/assets/strings/hu-HU/strings.json +1 -1
- package/core/assets/strings/id-ID/strings.json +1 -1
- package/core/assets/strings/it-IT/strings.json +1 -1
- package/core/assets/strings/ja-JP/strings.json +1 -1
- package/core/assets/strings/ko-KR/strings.json +1 -1
- package/core/assets/strings/pl-PL/strings.json +1 -1
- package/core/assets/strings/pt-BR/strings.json +1 -1
- package/core/assets/strings/pt-PT/strings.json +1 -1
- package/core/assets/strings/ru-RU/strings.json +1 -1
- package/core/assets/strings/sv-SE/strings.json +1 -1
- package/core/assets/strings/tr-TR/strings.json +1 -1
- package/core/assets/strings/zh-CN/strings.json +1 -1
- package/core/assets/strings/zh-TW/strings.json +1 -1
- package/core/azure/azure-constants.d.ts +1 -0
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +1 -0
- package/core/azure/azure-constants.js.map +1 -1
- package/core/base/utilities.d.ts +3 -3
- package/core/base/utilities.d.ts.map +1 -1
- package/core/base/utilities.js +2 -2
- package/core/base/utilities.js.map +1 -1
- package/core/data/active-directory/active-directory.d.ts.map +1 -1
- package/core/data/active-directory/active-directory.js +1 -1
- package/core/data/active-directory/active-directory.js.map +1 -1
- package/core/data/cookie.d.ts.map +1 -1
- package/core/data/cookie.js +7 -0
- package/core/data/cookie.js.map +1 -1
- package/core/data/gateway-urls.d.ts +6 -0
- package/core/data/gateway-urls.d.ts.map +1 -1
- package/core/data/gateway-urls.js +8 -0
- package/core/data/gateway-urls.js.map +1 -1
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +1 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +8 -8
- package/core/security/tool-condition-validator.d.ts.map +1 -1
- package/core/security/tool-condition-validator.js +5 -5
- package/core/security/tool-condition-validator.js.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
- package/core/shared/server-inventory/server-inventory.d.ts +4 -4
- package/core/shared/server-inventory/server-inventory.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory.js +2 -2
- package/core/shared/server-inventory/server-inventory.js.map +1 -1
- package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
- package/package.json +4 -4
- package/styles/css/main-v2.css +1 -1
- package/tools/module-template/build/pipelines/ci-build.yml +2 -2
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts +2 -7
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +8 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js.map +1 -1
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts +4 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +13 -9
- package/tools/wac-cli/src/angular15/configs/package-json-config.js.map +1 -1
- package/tools/wac-cli/src/angular15/main.d.ts +1 -1
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +3 -1
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/templates/wac-template/package.json +3 -0
|
@@ -137,7 +137,7 @@ export class ActionBarComponent extends ActionContainerComponent {
|
|
|
137
137
|
*/
|
|
138
138
|
ngOnDestroy() {
|
|
139
139
|
super.ngOnDestroy();
|
|
140
|
-
this.layoutSubscription
|
|
140
|
+
this.layoutSubscription?.unsubscribe();
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* On layout changed event handler, occurs every time the layout has been changed.
|
|
@@ -460,4 +460,4 @@ __decorate([
|
|
|
460
460
|
type: HostListener,
|
|
461
461
|
args: ['window:resize']
|
|
462
462
|
}] }); })();
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FjdGlvbnMvY29udGFpbmVycy9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDekJ2RSxtREFHNEQ7SUFGMUQsZ05BQWUsZUFBQSw0QkFBcUIsQ0FBQSxJQUFDO0lBRXFCLGlCQUEwQjs7OztJQUFwRix5RUFBeUQ7SUFIa0IsOEJBQWE7OztBRDJCNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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O1lBV3RDLFFBQVE7a0JBRFAsWUFBWTttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWWllbGQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy95aWVsZC5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2FjY2Vzc2liaWxpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2l0ZW1zL2FjdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lck9yaWVudGF0aW9uIH0gZnJvbSAnLi4vYWN0aW9uLWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgQWN0aW9ucyBAaWQgc21lLWFjdGlvbnN9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRGVmaW5lZCBhY3Rpb25zIGZyb20gY29tcG9uZW50IEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1jb21wb25lbnR9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20tY29tcG9uZW50LmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERlZmluZWQgYWN0aW9ucyBmcm9tIGh0bWwgQGlkIGRlZmluZWQtYWN0aW9ucy1mcm9tLWh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20taHRtbC5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBEZWZpbmVkIGFjdGlvbnMgZnJvbSBib3RoIEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1ib3RofVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RlZmluZWQtYWN0aW9ucy1mcm9tLWJvdGguY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbnMtZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQWxsIGJ1dHRvbnMgZGlzYWJsZWQgQGlkIGFsbC1idXR0b25zLWRpc2FibGVkfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FsbC1idXR0b25zLWRpc2FibGVkLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIE1vZGVsIGRyaXZlbiBhY3Rpb24gYmFyIEBpZCBtb2RlbC1kcml2ZW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbW9kZWwtZHJpdmVuLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIENvbnRhaW5lciBlbWJlZGRlZCBhY3Rpb24gYmFyIEBpZCBjb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhcn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWFjdGlvbi1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CYXJDb21wb25lbnQgZXh0ZW5kcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIGxvZ1NvdXJjZU5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgdGhhdCB3aGVuIHNldCB3aWxsIGRpc3BsYXkgbWluaW1hbCBVSSBmb3IgdGhlIGFjdGlvbiBiYXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRyaWJ1dGUgdGhhdCBzZXRzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gd2hlcmUgdmVydGljYWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIHRvcCB0byBib3R0b20gb2YgcGFnZVxyXG4gICAgICogYW5kIGhvcml6b250YWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKTogQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb24ge1xyXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBBY3Rpb25JdGVtIG9iamVjdHMgdGhhdCB3ZSB3YW50IHRvIHBlcmZvcm0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNwbGF5ZWRBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgQWN0aW9uSXRlbSBvYmplY3RzIHRoYXQgYXJlIGNvbGxhcHNlZCBpbnRvIGRyb3Bkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJheUFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCBkaXNwbGF5ZWQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQWN0aW9uc0Rpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIG9uIGFjdGlvbiBtZW51IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWN0aW9uc0FyaWFMYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBtYWtlIHN1cmUgaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAqIHRoZW4gdGhlIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhlaWdodE92ZXJmbG93OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnV0dG9uIGVsZW1lbnQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6ZWQgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcbiAgICBwcml2YXRlIGlzQ29tcGFjdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBob3ZlcmVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgYXR0YWNoZWRUbzogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNob3VsZFNob3cgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gbGlzdCBvZiBBY3Rpb25JdGVtcyBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25zVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGlzQXR0YWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRUbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uQmFyRWxlbWVudCcpIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BEb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wRG93bkJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEcm9wZG93bkNvbXBvbmVudCBlbGVtZW50IGZvciBhY3Rpb24gdHJheS5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd24nKSBwdWJsaWMgZHJvcERvd246IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGl0ZXJhYmxlRGlmZmVycywgaW5qZWN0b3IpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtcG9zaXRpb24tc3RyZXRjaC1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWN0aW9uLWJhcicpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1zdGFjay1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hcnJhbmdlLXdzLW5vd3JhcCcpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1zaG93Jyk7XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc0FyaWFMYWJlbCA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uYWN0aW9ucztcclxuXHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dFN1YnNjcmlwdGlvbiA9IGxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBBY3Rpb25JdGVtIG9iamVjdHMgdG8gYmUgaGlkZGVuLlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIEFjdGlvbkl0ZW0gb2JqZWN0cyB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIExpc3Qgb2YgdW5oaWRkZW4gQWN0aW9uSXRlbSBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZGVuRmlsdGVyKGl0ZW1zOiBBY3Rpb25JdGVtW10pOiBBY3Rpb25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRkZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB0cmlnZ2VyZWQgYWZ0ZXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIGxheW91dCBjaGFuZ2VkIGV2ZW50IGhhbmRsZXIsIG9jY3VycyBldmVyeSB0aW1lIHRoZSBsYXlvdXQgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVycyBmb3IgZm9jdXMgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkZvY3VzRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gZm9jdXMgaW4vb3V0IGNoYW5nZSBmb2N1c2VkIHN0YXRlXHJcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nIHx8ICh0aGlzLmZvY3VzZWQgJiYgZXZlbnQudHlwZSAhPT0gJ2ZvY3Vzb3V0Jyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvc3QgbGlzdGVuZXJzIGZvciBrZXlib2FyZCBldmVudHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uVG9nZ2xlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFjY2Vzc2liaWxpdHksIHRha2UgZm9jdXMgdG8gdGhlIG1vcmUgYnV0dG9uIGFmdGVyIGEgc2VsZWN0aW9uIGluIGRyb3Bkb3duIGVsZW1lbnRzLlxyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRW50ZXI6IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyb3BEb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9yZUJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5kcm9wRG93bi5pc09wZW4gJiYgdGhpcy5kcm9wRG93bi5jb250ZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vcmVCdXR0b25FbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wRG93bi5vblRvZ2dsZWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3BlbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsdXIvZm9jdXMgdG8gcmVmcmVzaCBmb2N1cyAtIHRoaXMgd2lsbCBtYWtlIHRoZSB0b29sdGlwIGRpc2FwcGVhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWxlIG1lbnUgaXMgb3BlbiAoYi9jIHRvb2x0aXAgd2lsbCBibG9jayB2aWV3KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25CdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25CdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vcmVCdXR0b25FbGVtZW50ID0gPEhUTUxFbGVtZW50PmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIG1vdXNlIGV2ZW50cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbk1vdXNlRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gbW91c2UgZW50ZXIvbGVhdmUgY2hhbmdlIGhvdmVyZWQgc3RhdGVcclxuICAgICAgICB0aGlzLmhvdmVyZWQgPSBldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgfHwgKHRoaXMuaG92ZXJlZCAmJiBldmVudC50eXBlICE9PSAnbW91c2VsZWF2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVyIGZvciBwYWdlIHJlc2l6ZSBldmVudC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgICBvblJlc2l6ZSgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIGNoaWxkIEFjdGlvbkl0ZW0gY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQWN0aW9uSXRlbUNoYW5nZWQoKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVIZWlnaHQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1Zpc2libGUgJiYgKHRoaXMuc2hvdWxkU2hvdyB8fCB0aGlzLmZvY3VzZWQgfHwgdGhpcy5ob3ZlcmVkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtb3V0LXhzJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hbmltYXRpb24tZmFkZS1pbi14cycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtb3V0LXhzJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gc2V0IHZpc2liaWxpdHkgZm9yIEFjdGlvbkJhckNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBpc1Zpc2libGUgVHJ1ZSBmb3IgdmlzaWJsZSwgZmFsc2UgZm9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFZpc2liaWxpdHkoaXNWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc1Zpc2libGU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byBzZXQgdmlzaWJpbGl0eSBmb3IgQWN0aW9uQmFyQ29tcG9uZW50LlxyXG4gICAgICogQHBhcmFtIHNob3VsZFNob3cgVHJ1ZSBmb3Igc2hvd2luZywgZmFsc2UgZm9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3dIaWRlKHNob3VsZFNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3VsZFNob3cgPSBzaG91bGRTaG93O1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvc2l0aW9ucyBnaXZlbiBIVE1MRWxlbWVudCB0byBiZSByZWxhdGl2ZSB0byBpdHMgc2libGluZyBlbGVtZW50LlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byByZXBvc2l0aW9uLlxyXG4gICAgICogQHBhcmFtIGNvbXBhY3QgQm9vbGVhbiBmbGFnIHRvIHNldCB3aGV0aGVyIG9yIG5vdCBBY3Rpb25CYXJDb21wb25lbnQgc2hvdWxkIGJlIGNvbXBhY3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXBvc2l0aW9uUmVsYXRpdmVUbyhlbGVtZW50OiBIVE1MRWxlbWVudCwgY29tcGFjdDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKGVsZW1lbnQub2Zmc2V0UGFyZW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaXNTaWJsaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3MuaXRlbShpKTtcclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgPT09IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaXNTaWJsaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNTaWJsaW5nKSB7XHJcbiAgICAgICAgICAgIExvZ2dpbmcubG9nRXJyb3IoJ0FjdGlvbkJhci5yZXBvc2l0aW9uUmVsYXRpdmVUbycsICdBY3Rpb25CYXIgY2FuIG9ubHkgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byBhIHNpYmxpbmcgZWxlbWVudC4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB3YXNBdHRhY2hlZCA9IHRoaXMuaXNBdHRhY2hlZDtcclxuICAgICAgICB0aGlzLmF0dGFjaGVkVG8gPSBlbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoIXdhc0F0dGFjaGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0hpZGUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gd2hlbiBwb3NpdGlvbmluZyBvbiBhbiBlbGVtZW50LCB1c2UgY29tcGFjdCBzZXR0aW5ncyBpZiBkZXNpcmVkXHJcbiAgICAgICAgdGhpcy5pc0NvbXBhY3QgPSBjb21wYWN0O1xyXG5cclxuICAgICAgICAvLyBjaGFuZ2UgY2xhc3NlcyB0byBhY2NvdW50IGZvciBkaWZmZXJlbnQgcG9zaXRpb25pbmcgbWVjaGFuaXNtXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLXBvc2l0aW9uLXN0cmV0Y2gtaCcpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWxheW91dC1hYnNvbHV0ZScpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWJhY2tncm91bmQtY29sb3ItYmFzZScpO1xyXG5cclxuICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHBvc2l0aW9uXHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICAgICAgICBjb25zdCBtYXJnaW4gPSB7XHJcbiAgICAgICAgICAgIHRvcDogcGFyc2VJbnQoc3R5bGUubWFyZ2luVG9wLCAxMCksXHJcbiAgICAgICAgICAgIGJvdHRvbTogcGFyc2VJbnQoc3R5bGUubWFyZ2luQm90dG9tLCAxMCksXHJcbiAgICAgICAgICAgIGxlZnQ6IHBhcnNlSW50KHN0eWxlLm1hcmdpbkxlZnQsIDEwKSxcclxuICAgICAgICAgICAgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLm1hcmdpblJpZ2h0LCAxMClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGJvcmRlciA9IHtcclxuICAgICAgICAgICAgdG9wOiBwYXJzZUludChzdHlsZS5ib3JkZXJUb3AsIDEwKSxcclxuICAgICAgICAgICAgYm90dG9tOiBwYXJzZUludChzdHlsZS5ib3JkZXJCb3R0b20sIDEwKSxcclxuICAgICAgICAgICAgbGVmdDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyTGVmdCwgMTApLFxyXG4gICAgICAgICAgICByaWdodDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyUmlnaHQsIDEwKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoIC0gYm9yZGVyLmxlZnQgLSBib3JkZXIucmlnaHQgLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodDtcclxuICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAtIGJvcmRlci5ib3R0b20gLSBtYXJnaW4uYm90dG9tO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5taW4oTWF0aC5tYXgoYXZhaWxhYmxlV2lkdGggLyAyLCAzMDApLCBhdmFpbGFibGVXaWR0aCk7XHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBlbGVtZW50Lm9mZnNldFBhcmVudC5jbGllbnRXaWR0aCAtIChlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoKTtcclxuICAgICAgICBjb25zdCB0b3AgPSBlbGVtZW50Lm9mZnNldFRvcCArIGJvcmRlci50b3AgKyBtYXJnaW4udG9wO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3JpZ2h0JywgYCR7cmlnaHR9cHhgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3RvcH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgdW5zZXRgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ21heC13aWR0aCcsIGAke3dpZHRofXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdqdXN0aWZ5LWNvbnRlbnQnLCBgZmxleC1lbmRgKTtcclxuXHJcbiAgICAgICAgLy8gaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAgICAvLyB0aGVuIG1ha2Ugc3VyZSBkaXNwbGF5ZWQgaXRlbXMgYXJlIGFkanVzdGVkIGFjY29yZGluZ2x5XHJcbiAgICAgICAgdGhpcy5oZWlnaHRPdmVyZmxvdyA9IHBhcnNlSW50KHN0eWxlLmhlaWdodCwgMTApID4gYXZhaWxhYmxlSGVpZ2h0O1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25CYXIoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byB1cGRhdGUgaG93IEFjdGlvbkJhckNvbXBvbmVudCBpcyBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVBY3Rpb25CYXIoKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRGaWxsID0gMDtcclxuXHJcbiAgICAgICAgLy8gU2V0IHVwIHRoZSBmb2xsb3dpbmcgc3R5bGVzIGR1cmluZyB0aGUgVUkgY2FsY3VsYXRpb24gdG8gbWFrZSBzdXJlIHRoZSBodG1sIGVsZW1lbnQgZmxpY2tlcmluZyB3b24ndCBleGNlZWRcclxuICAgICAgICAvLyB0aGUgYWN0aW9uIGJhciBjb250YWluZXIuXHJcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpbmxpbmUgc3R5bGVzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciB0aGUgVUkgY2FsY3VsYXRpb24gaXMgZG9uZS5cclxuICAgICAgICBjb25zdCBob3N0RWxlbWVudCA9IDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob3N0RWxlbWVudCwgJ292ZXJmbG93JywgYGhpZGRlbmApO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbGVtZW50LCAncG9zaXRpb24nLCBgcmVsYXRpdmVgKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRyYXlBY3Rpb25zID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShob3N0RWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgcGFkZGluZyA9IHBhcnNlSW50KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpLCAxMCkgKyBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXJpZ2h0JyksIDEwKTtcclxuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9ICh0aGlzLmlzQXR0YWNoZWQgPyBwYXJzZUludChzdHlsZS5tYXhXaWR0aCwgMTApIDogaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gcGFkZGluZztcclxuXHJcbiAgICAgICAgLy8gRmlyc3RseSwgd2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIHRvdGFsIHdpZHRoIG9mIGFsbCBidXR0b25zIHdpdGhvdXQgXCJtb3JlXCIgYnV0dG9uLlxyXG4gICAgICAgIGxldCBidXR0b25zVG90YWxXaWR0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFjdGlvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zW2ldO1xyXG4gICAgICAgICAgICAvLyBhc3N1bWUgaGlkZGVuIGFjdGlvbnMgaGF2ZSBhIDAgd2lkdGguIFdoZW4gdGhleSBhcmUgdW4taGlkZGVuLCB0aGVyZSB3aWR0aCB3aWxsIGNoYW5nZSBhbmQgdHJpZ2dlciBhbm90aGVyIHVwZGF0ZS5cclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uV2lkdGggPSBhY3Rpb24uaGlkZGVuID8gMCA6IGFjdGlvbi53aWR0aCB8fCAwO1xyXG4gICAgICAgICAgICBidXR0b25zVG90YWxXaWR0aCArPSBhY3Rpb25XaWR0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidXR0b25zVG90YWxXaWR0aCA8PSBjb250YWluZXJXaWR0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zLnB1c2godGhpcy5hY3Rpb25zW2luZGV4XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgYnV0dG9ucyB0b3RhbCB3aWR0aCBleGNlZWRzIHRoZSBjb250YWluZXIgd2lkdGgsIHRoZW4gd2UgY2FsY3VsYXRlIHdoaWNoIGJ1dHRvbiBzaG91bGQgYmVcclxuICAgICAgICAgICAgLy8gZGlzcGxheWVkIGFuZCB3aGljaCBidXR0b24gc2hvdWxkIGJlIHB1dCBpbnRvIFwibW9yZVwiIGRyb3AtZG93bi5cclxuICAgICAgICAgICAgLy8gTm90ZTogdGhlIGF2YWlsYWJsZSBjb250YWluZXIgd2lkdGggc2hvdWxkIGJlIHRoZSBjb250YWluZXIgd2lkdGggLSBcIm1vcmVcIiBidXR0b24ncyB3aWR0aC5cclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJ1dHRvbkNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggLSB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIGFzc3VtZSBoaWRkZW4gYWN0aW9ucyBoYXZlIGEgMCB3aWR0aC4gV2hlbiB0aGV5IGFyZSB1bi1oaWRkZW4sIHRoZXJlIHdpZHRoIHdpbGwgY2hhbmdlIGFuZCB0cmlnZ2VyIGFub3RoZXIgdXBkYXRlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uV2lkdGggPSBhY3Rpb24uaGlkZGVuID8gMCA6IGFjdGlvbi53aWR0aCB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxsICsgYWN0aW9uV2lkdGggPiB2aXNpYmxlQnV0dG9uQ29udGFpbmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXlBY3Rpb25zLnB1c2goYWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zLnB1c2goYWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSBhY3Rpb25XaWR0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQWN0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5tb3JlQWN0aW9uc0Rpc3BsYXkgPSB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLmFjdGlvbnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tb3JlQWN0aW9uc0Rpc3BsYXkgPSB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLm1vcmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBhbnkgYWN0aW9uIGJhciB3aWR0aCBpcyBOYU4sIHRoYXQgbWVhbnMgbm90IGFsbCB0aGUgYWN0aW9uLWJ1dHRvbnMgZmluaXNoZWQgcmVuZGVyaW5nIG9uIHRoZSBVSS5cclxuICAgICAgICAvLyBUaHVzIFwiY3VycmVudEZpbGxcIiBpcyBzdGlsbCBOYU4uIE90aGVyd2lzZSwgd2UgY29uc2lkZXIgYWxsIHRoZSBhY3Rpb24tYnV0dG9ucyBmaW5pc2ggcmVuZGVyaW5nLlxyXG4gICAgICAgIC8vIFRoZW4gaXQncyB0aW1lIHRvIHJlbW92ZSB0aGUgdGVtcG9yYXJ5IGlubGluZSBzdHlsZXMuXHJcbiAgICAgICAgaWYgKCEhY3VycmVudEZpbGwpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQXR0YWNoZWQgJiYgKHRoaXMuc2hvdWxkU2hvdyB8fCB0aGlzLmhvdmVyZWQgfHwgdGhpcy5mb2N1c2VkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWxlbWVudCwgJ292ZXJmbG93Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzb21lIGFjdGlvbiBpdGVtIHN0YXRlcyBkZXBlbmQgb24gd2hhdCBjb250YWluZXIgdGhleSByZXNpZGUgaW4uXHJcbiAgICAgICAgLy8gVHJheUFjdGlvbnMgd2lsbCBiZSB1cGRhdGVkIGJlY2F1c2UgdGhleSB3ZXJlIG1vdmVkIGludG8gdGhlIGFjdGlvbk1lbnUsXHJcbiAgICAgICAgLy8gaG93ZXZlciBkaXNwbGF5ZWQgYWN0aW9ucyBzaG91bGQgYmUgcmVzZXQgYXMgdGhleSBtYXkgaGF2ZSBtb3ZlZC5cclxuICAgICAgICBpZiAodGhpcy5kaXNwbGF5ZWRBY3Rpb25zICYmIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiBhY3Rpb24uc2V0QWN0aW9uU3RhdGUodGhpcy50YXJnZXQsIHRoaXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWN0aW9uc1VwZGF0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgcm9sZT1cIm1lbnViYXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFjdGlvbnNBcmlhTGFiZWxcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2staFwiICNhY3Rpb25CYXJFbGVtZW50PlxyXG4gIDxzbWUtZHluYW1pYy1hY3Rpb24taXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaWRkZW5GaWx0ZXIoZGlzcGxheWVkQWN0aW9ucylcIiBbaXRlbV09XCJpdGVtXCJcclxuICAgIChpdGVtQ2hhbmdlZCk9XCJvbkFjdGlvbkl0ZW1DaGFuZ2VkKClcIlxyXG4gICAgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oIHNtZS1hcnJhbmdlLXN0YWNrLWNlbnRlcmVkIHNtZS1hcnJhbmdlLXN0YWNrLWlubGluZVwiXHJcbiAgICBbY2xhc3Muc21lLWFjdGlvbi1iYXItaXRlbS1uby1wYWRkaW5nLXZdPVwiaGVpZ2h0T3ZlcmZsb3dcIj48L3NtZS1keW5hbWljLWFjdGlvbi1pdGVtPlxyXG5cclxuICA8c21lLWRyb3Bkb3duICNkcm9wRG93biByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCJcclxuICAgIFtjbGFzcy5zbWUtbGF5b3V0LWhpZGRlbl09XCIhY29tcGFjdCAmJiB0cmF5QWN0aW9ucy5sZW5ndGggPT09IDBcIlxyXG4gICAgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCJjb21wYWN0ICYmIHRyYXlBY3Rpb25zLmxlbmd0aCA9PT0gMFwiIFt0aXRsZV09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIiBbc21lVG9vbHRpcFNob3ddPVwiIXRoaXMuZHJvcERvd24uaXNPcGVuXCI+XHJcbiAgICA8YnV0dG9uICNkcm9wRG93bkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIiByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi1hdXRvLXdpZHRoIHNtZS1kcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICBbY2xhc3Muc21lLXRvZ2dsZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJkcm9wRG93bi5pc09wZW5cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgIGRhdGEtdXRhLWlkPVwiYWN0aW9uLWJhci1tb3JlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tbW9yZVwiIFt0aXRsZV09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBtb3JlQWN0aW9uc0Rpc3BsYXkgfX08L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxzbWUtYWN0aW9uLW1lbnUgW2FjdGlvbnNdPVwidHJheUFjdGlvbnNcIiByb2xlPVwibWVudVwiIGNsYXNzPVwic21lLWRyb3Bkb3duLWNvbnRlbnRcIiBbKHRhcmdldCldPVwidGFyZ2V0XCJcclxuICAgICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiIChleGVjdXRlZCk9XCJleGVjdXRlZC5lbWl0KCRldmVudClcIj48L3NtZS1hY3Rpb24tbWVudT5cclxuICA8L3NtZS1kcm9wZG93bj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FjdGlvbnMvY29udGFpbmVycy9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDekJ2RSxtREFHNEQ7SUFGMUQsZ05BQWUsZUFBQSw0QkFBcUIsQ0FBQSxJQUFDO0lBRXFCLGlCQUEwQjs7OztJQUFwRix5RUFBeUQ7SUFIa0IsOEJBQWE7OztBRDJCNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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O1lBV3RDLFFBQVE7a0JBRFAsWUFBWTttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWWllbGQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy95aWVsZC5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2FjY2Vzc2liaWxpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2l0ZW1zL2FjdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lck9yaWVudGF0aW9uIH0gZnJvbSAnLi4vYWN0aW9uLWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgQWN0aW9ucyBAaWQgc21lLWFjdGlvbnN9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRGVmaW5lZCBhY3Rpb25zIGZyb20gY29tcG9uZW50IEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1jb21wb25lbnR9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20tY29tcG9uZW50LmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERlZmluZWQgYWN0aW9ucyBmcm9tIGh0bWwgQGlkIGRlZmluZWQtYWN0aW9ucy1mcm9tLWh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20taHRtbC5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBEZWZpbmVkIGFjdGlvbnMgZnJvbSBib3RoIEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1ib3RofVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RlZmluZWQtYWN0aW9ucy1mcm9tLWJvdGguY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbnMtZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQWxsIGJ1dHRvbnMgZGlzYWJsZWQgQGlkIGFsbC1idXR0b25zLWRpc2FibGVkfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FsbC1idXR0b25zLWRpc2FibGVkLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIE1vZGVsIGRyaXZlbiBhY3Rpb24gYmFyIEBpZCBtb2RlbC1kcml2ZW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbW9kZWwtZHJpdmVuLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIENvbnRhaW5lciBlbWJlZGRlZCBhY3Rpb24gYmFyIEBpZCBjb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhcn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWFjdGlvbi1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CYXJDb21wb25lbnQgZXh0ZW5kcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIGxvZ1NvdXJjZU5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgdGhhdCB3aGVuIHNldCB3aWxsIGRpc3BsYXkgbWluaW1hbCBVSSBmb3IgdGhlIGFjdGlvbiBiYXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRyaWJ1dGUgdGhhdCBzZXRzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gd2hlcmUgdmVydGljYWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIHRvcCB0byBib3R0b20gb2YgcGFnZVxyXG4gICAgICogYW5kIGhvcml6b250YWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKTogQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb24ge1xyXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBBY3Rpb25JdGVtIG9iamVjdHMgdGhhdCB3ZSB3YW50IHRvIHBlcmZvcm0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNwbGF5ZWRBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgQWN0aW9uSXRlbSBvYmplY3RzIHRoYXQgYXJlIGNvbGxhcHNlZCBpbnRvIGRyb3Bkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJheUFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCBkaXNwbGF5ZWQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQWN0aW9uc0Rpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIG9uIGFjdGlvbiBtZW51IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWN0aW9uc0FyaWFMYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBtYWtlIHN1cmUgaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAqIHRoZW4gdGhlIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhlaWdodE92ZXJmbG93OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnV0dG9uIGVsZW1lbnQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6ZWQgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcbiAgICBwcml2YXRlIGlzQ29tcGFjdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBob3ZlcmVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgYXR0YWNoZWRUbzogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNob3VsZFNob3cgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gbGlzdCBvZiBBY3Rpb25JdGVtcyBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25zVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGlzQXR0YWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRUbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uQmFyRWxlbWVudCcpIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BEb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wRG93bkJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEcm9wZG93bkNvbXBvbmVudCBlbGVtZW50IGZvciBhY3Rpb24gdHJheS5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd24nKSBwdWJsaWMgZHJvcERvd246IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGl0ZXJhYmxlRGlmZmVycywgaW5qZWN0b3IpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtcG9zaXRpb24tc3RyZXRjaC1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWN0aW9uLWJhcicpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1zdGFjay1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hcnJhbmdlLXdzLW5vd3JhcCcpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1zaG93Jyk7XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc0FyaWFMYWJlbCA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uYWN0aW9ucztcclxuXHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dFN1YnNjcmlwdGlvbiA9IGxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBBY3Rpb25JdGVtIG9iamVjdHMgdG8gYmUgaGlkZGVuLlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIEFjdGlvbkl0ZW0gb2JqZWN0cyB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIExpc3Qgb2YgdW5oaWRkZW4gQWN0aW9uSXRlbSBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZGVuRmlsdGVyKGl0ZW1zOiBBY3Rpb25JdGVtW10pOiBBY3Rpb25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRkZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB0cmlnZ2VyZWQgYWZ0ZXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiBsYXlvdXQgY2hhbmdlZCBldmVudCBoYW5kbGVyLCBvY2N1cnMgZXZlcnkgdGltZSB0aGUgbGF5b3V0IGhhcyBiZWVuIGNoYW5nZWQuXHJcbiAgICAgKi9cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwcml2YXRlIG9uTGF5b3V0Q2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIGZvY3VzIGV2ZW50cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25Gb2N1c0V2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG9uIGZvY3VzIGluL291dCBjaGFuZ2UgZm9jdXNlZCBzdGF0ZVxyXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGV2ZW50LnR5cGUgPT09ICdmb2N1c2luJyB8fCAodGhpcy5mb2N1c2VkICYmIGV2ZW50LnR5cGUgIT09ICdmb2N1c291dCcpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVycyBmb3Iga2V5Ym9hcmQgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvblRvZ2dsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICAvLyBhY2Nlc3NpYmlsaXR5LCB0YWtlIGZvY3VzIHRvIHRoZSBtb3JlIGJ1dHRvbiBhZnRlciBhIHNlbGVjdGlvbiBpbiBkcm9wZG93biBlbGVtZW50cy5cclxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcclxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVudGVyOiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wRG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vcmVCdXR0b25FbGVtZW50ICYmIHRoaXMuZHJvcERvd24uaXNPcGVuICYmIHRoaXMuZHJvcERvd24uY29udGVudEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3JlQnV0dG9uRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd24ub25Ub2dnbGVkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9wZW4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBibHVyL2ZvY3VzIHRvIHJlZnJlc2ggZm9jdXMgLSB0aGlzIHdpbGwgbWFrZSB0aGUgdG9vbHRpcCBkaXNhcHBlYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGlsZSBtZW51IGlzIG9wZW4gKGIvYyB0b29sdGlwIHdpbGwgYmxvY2sgdmlldylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3JlQnV0dG9uRWxlbWVudCA9IDxIVE1MRWxlbWVudD5kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvc3QgbGlzdGVuZXJzIGZvciBtb3VzZSBldmVudHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25Nb3VzZUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG9uIG1vdXNlIGVudGVyL2xlYXZlIGNoYW5nZSBob3ZlcmVkIHN0YXRlXHJcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInIHx8ICh0aGlzLmhvdmVyZWQgJiYgZXZlbnQudHlwZSAhPT0gJ21vdXNlbGVhdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lciBmb3IgcGFnZSByZXNpemUgZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gICAgb25SZXNpemUoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25CYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIHRyaWdnZXJlZCBhZnRlciBjaGlsZCBBY3Rpb25JdGVtIGNoYW5nZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkFjdGlvbkl0ZW1DaGFuZ2VkKCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlSGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXR0YWNoZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlICYmICh0aGlzLnNob3VsZFNob3cgfHwgdGhpcy5mb2N1c2VkIHx8IHRoaXMuaG92ZXJlZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3ZlcmZsb3cnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWFuaW1hdGlvbi1mYWRlLW91dC14cycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtaW4teHMnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycsICdoaWRkZW4nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWFuaW1hdGlvbi1mYWRlLW91dC14cycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRvIHNldCB2aXNpYmlsaXR5IGZvciBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKiBAcGFyYW0gaXNWaXNpYmxlIFRydWUgZm9yIHZpc2libGUsIGZhbHNlIGZvciBub3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRWaXNpYmlsaXR5KGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gc2V0IHZpc2liaWxpdHkgZm9yIEFjdGlvbkJhckNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBzaG91bGRTaG93IFRydWUgZm9yIHNob3dpbmcsIGZhbHNlIGZvciBub3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93SGlkZShzaG91bGRTaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG91bGRTaG93ID0gc2hvdWxkU2hvdztcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVwb3NpdGlvbnMgZ2l2ZW4gSFRNTEVsZW1lbnQgdG8gYmUgcmVsYXRpdmUgdG8gaXRzIHNpYmxpbmcgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gcmVwb3NpdGlvbi5cclxuICAgICAqIEBwYXJhbSBjb21wYWN0IEJvb2xlYW4gZmxhZyB0byBzZXQgd2hldGhlciBvciBub3QgQWN0aW9uQmFyQ29tcG9uZW50IHNob3VsZCBiZSBjb21wYWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVwb3NpdGlvblJlbGF0aXZlVG8oZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbXBhY3Q6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPclVuZGVmaW5lZChlbGVtZW50Lm9mZnNldFBhcmVudCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzU2libGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gZWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2libGluZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzLml0ZW0oaSk7XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nID09PSB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlzU2libGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzU2libGluZykge1xyXG4gICAgICAgICAgICBMb2dnaW5nLmxvZ0Vycm9yKCdBY3Rpb25CYXIucmVwb3NpdGlvblJlbGF0aXZlVG8nLCAnQWN0aW9uQmFyIGNhbiBvbmx5IGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gYSBzaWJsaW5nIGVsZW1lbnQuJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd2FzQXR0YWNoZWQgPSB0aGlzLmlzQXR0YWNoZWQ7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hlZFRvID0gZWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKCF3YXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dIaWRlKGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdoZW4gcG9zaXRpb25pbmcgb24gYW4gZWxlbWVudCwgdXNlIGNvbXBhY3Qgc2V0dGluZ3MgaWYgZGVzaXJlZFxyXG4gICAgICAgIHRoaXMuaXNDb21wYWN0ID0gY29tcGFjdDtcclxuXHJcbiAgICAgICAgLy8gY2hhbmdlIGNsYXNzZXMgdG8gYWNjb3VudCBmb3IgZGlmZmVyZW50IHBvc2l0aW9uaW5nIG1lY2hhbmlzbVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1wb3NpdGlvbi1zdHJldGNoLWgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWJzb2x1dGUnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1iYWNrZ3JvdW5kLWNvbG9yLWJhc2UnKTtcclxuXHJcbiAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBwb3NpdGlvblxyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbWFyZ2luID0ge1xyXG4gICAgICAgICAgICB0b3A6IHBhcnNlSW50KHN0eWxlLm1hcmdpblRvcCwgMTApLFxyXG4gICAgICAgICAgICBib3R0b206IHBhcnNlSW50KHN0eWxlLm1hcmdpbkJvdHRvbSwgMTApLFxyXG4gICAgICAgICAgICBsZWZ0OiBwYXJzZUludChzdHlsZS5tYXJnaW5MZWZ0LCAxMCksXHJcbiAgICAgICAgICAgIHJpZ2h0OiBwYXJzZUludChzdHlsZS5tYXJnaW5SaWdodCwgMTApXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBib3JkZXIgPSB7XHJcbiAgICAgICAgICAgIHRvcDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyVG9wLCAxMCksXHJcbiAgICAgICAgICAgIGJvdHRvbTogcGFyc2VJbnQoc3R5bGUuYm9yZGVyQm90dG9tLCAxMCksXHJcbiAgICAgICAgICAgIGxlZnQ6IHBhcnNlSW50KHN0eWxlLmJvcmRlckxlZnQsIDEwKSxcclxuICAgICAgICAgICAgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLmJvcmRlclJpZ2h0LCAxMClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAtIGJvcmRlci5sZWZ0IC0gYm9yZGVyLnJpZ2h0IC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XHJcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgLSBib3JkZXIuYm90dG9tIC0gbWFyZ2luLmJvdHRvbTtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWluKE1hdGgubWF4KGF2YWlsYWJsZVdpZHRoIC8gMiwgMzAwKSwgYXZhaWxhYmxlV2lkdGgpO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggLSAoZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCk7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZWxlbWVudC5vZmZzZXRUb3AgKyBib3JkZXIudG9wICsgbWFyZ2luLnRvcDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYHVuc2V0YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCBgJHt3aWR0aH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke2F2YWlsYWJsZUhlaWdodH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnanVzdGlmeS1jb250ZW50JywgYGZsZXgtZW5kYCk7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSBoZWlnaHQgb2YgdGhlIGJhciBpcyBjdXJyZW50bHkgZ3JlYXRlciB0aGFuIHRoZSBhdmFpbGFibGUgaGVpZ2h0IG9mIHRoZSB0YXJnZXQsXHJcbiAgICAgICAgLy8gdGhlbiBtYWtlIHN1cmUgZGlzcGxheWVkIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseVxyXG4gICAgICAgIHRoaXMuaGVpZ2h0T3ZlcmZsb3cgPSBwYXJzZUludChzdHlsZS5oZWlnaHQsIDEwKSA+IGF2YWlsYWJsZUhlaWdodDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGhvdyBBY3Rpb25CYXJDb21wb25lbnQgaXMgZGlzcGxheWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQWN0aW9uQmFyKCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50RmlsbCA9IDA7XHJcblxyXG4gICAgICAgIC8vIFNldCB1cCB0aGUgZm9sbG93aW5nIHN0eWxlcyBkdXJpbmcgdGhlIFVJIGNhbGN1bGF0aW9uIHRvIG1ha2Ugc3VyZSB0aGUgaHRtbCBlbGVtZW50IGZsaWNrZXJpbmcgd29uJ3QgZXhjZWVkXHJcbiAgICAgICAgLy8gdGhlIGFjdGlvbiBiYXIgY29udGFpbmVyLlxyXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaW5saW5lIHN0eWxlcyB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIFVJIGNhbGN1bGF0aW9uIGlzIGRvbmUuXHJcbiAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsZW1lbnQsICdvdmVyZmxvdycsIGBoaWRkZW5gKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQXR0YWNoZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob3N0RWxlbWVudCwgJ3Bvc2l0aW9uJywgYHJlbGF0aXZlYCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy50cmF5QWN0aW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoaG9zdEVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKSwgMTApICsgcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpLCAxMCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAodGhpcy5pc0F0dGFjaGVkID8gcGFyc2VJbnQoc3R5bGUubWF4V2lkdGgsIDEwKSA6IGhvc3RFbGVtZW50Lm9mZnNldFdpZHRoKSAtIHBhZGRpbmc7XHJcblxyXG4gICAgICAgIC8vIEZpcnN0bHksIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSB0b3RhbCB3aWR0aCBvZiBhbGwgYnV0dG9ucyB3aXRob3V0IFwibW9yZVwiIGJ1dHRvbi5cclxuICAgICAgICBsZXQgYnV0dG9uc1RvdGFsV2lkdGggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uc1tpXTtcclxuICAgICAgICAgICAgLy8gYXNzdW1lIGhpZGRlbiBhY3Rpb25zIGhhdmUgYSAwIHdpZHRoLiBXaGVuIHRoZXkgYXJlIHVuLWhpZGRlbiwgdGhlcmUgd2lkdGggd2lsbCBjaGFuZ2UgYW5kIHRyaWdnZXIgYW5vdGhlciB1cGRhdGUuXHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbldpZHRoID0gYWN0aW9uLmhpZGRlbiA/IDAgOiBhY3Rpb24ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgYnV0dG9uc1RvdGFsV2lkdGggKz0gYWN0aW9uV2lkdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uc1RvdGFsV2lkdGggPD0gY29udGFpbmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5wdXNoKHRoaXMuYWN0aW9uc1tpbmRleF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gSWYgdGhlIGJ1dHRvbnMgdG90YWwgd2lkdGggZXhjZWVkcyB0aGUgY29udGFpbmVyIHdpZHRoLCB0aGVuIHdlIGNhbGN1bGF0ZSB3aGljaCBidXR0b24gc2hvdWxkIGJlXHJcbiAgICAgICAgICAgIC8vIGRpc3BsYXllZCBhbmQgd2hpY2ggYnV0dG9uIHNob3VsZCBiZSBwdXQgaW50byBcIm1vcmVcIiBkcm9wLWRvd24uXHJcbiAgICAgICAgICAgIC8vIE5vdGU6IHRoZSBhdmFpbGFibGUgY29udGFpbmVyIHdpZHRoIHNob3VsZCBiZSB0aGUgY29udGFpbmVyIHdpZHRoIC0gXCJtb3JlXCIgYnV0dG9uJ3Mgd2lkdGguXHJcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVCdXR0b25Db250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gdGhpcy5kcm9wRG93bkJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgaGlkZGVuIGFjdGlvbnMgaGF2ZSBhIDAgd2lkdGguIFdoZW4gdGhleSBhcmUgdW4taGlkZGVuLCB0aGVyZSB3aWR0aCB3aWxsIGNoYW5nZSBhbmQgdHJpZ2dlciBhbm90aGVyIHVwZGF0ZS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbldpZHRoID0gYWN0aW9uLmhpZGRlbiA/IDAgOiBhY3Rpb24ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RmlsbCArIGFjdGlvbldpZHRoID4gdmlzaWJsZUJ1dHRvbkNvbnRhaW5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5QWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbGwgKz0gYWN0aW9uV2lkdGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXllZEFjdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5hY3Rpb25zO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgYW55IGFjdGlvbiBiYXIgd2lkdGggaXMgTmFOLCB0aGF0IG1lYW5zIG5vdCBhbGwgdGhlIGFjdGlvbi1idXR0b25zIGZpbmlzaGVkIHJlbmRlcmluZyBvbiB0aGUgVUkuXHJcbiAgICAgICAgLy8gVGh1cyBcImN1cnJlbnRGaWxsXCIgaXMgc3RpbGwgTmFOLiBPdGhlcndpc2UsIHdlIGNvbnNpZGVyIGFsbCB0aGUgYWN0aW9uLWJ1dHRvbnMgZmluaXNoIHJlbmRlcmluZy5cclxuICAgICAgICAvLyBUaGVuIGl0J3MgdGltZSB0byByZW1vdmUgdGhlIHRlbXBvcmFyeSBpbmxpbmUgc3R5bGVzLlxyXG4gICAgICAgIGlmICghIWN1cnJlbnRGaWxsKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0F0dGFjaGVkICYmICh0aGlzLnNob3VsZFNob3cgfHwgdGhpcy5ob3ZlcmVkIHx8IHRoaXMuZm9jdXNlZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsZW1lbnQsICdwb3NpdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc29tZSBhY3Rpb24gaXRlbSBzdGF0ZXMgZGVwZW5kIG9uIHdoYXQgY29udGFpbmVyIHRoZXkgcmVzaWRlIGluLlxyXG4gICAgICAgIC8vIFRyYXlBY3Rpb25zIHdpbGwgYmUgdXBkYXRlZCBiZWNhdXNlIHRoZXkgd2VyZSBtb3ZlZCBpbnRvIHRoZSBhY3Rpb25NZW51LFxyXG4gICAgICAgIC8vIGhvd2V2ZXIgZGlzcGxheWVkIGFjdGlvbnMgc2hvdWxkIGJlIHJlc2V0IGFzIHRoZXkgbWF5IGhhdmUgbW92ZWQuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQWN0aW9ucyAmJiB0aGlzLmRpc3BsYXllZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4gYWN0aW9uLnNldEFjdGlvblN0YXRlKHRoaXMudGFyZ2V0LCB0aGlzKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFjdGlvbnNVcGRhdGVkLmVtaXQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IHJvbGU9XCJtZW51YmFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb25zQXJpYUxhYmVsXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1hcnJhbmdlLXN0YWNrLWhcIiAjYWN0aW9uQmFyRWxlbWVudD5cclxuICA8c21lLWR5bmFtaWMtYWN0aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaGlkZGVuRmlsdGVyKGRpc3BsYXllZEFjdGlvbnMpXCIgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAoaXRlbUNoYW5nZWQpPVwib25BY3Rpb25JdGVtQ2hhbmdlZCgpXCJcclxuICAgIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staCBzbWUtYXJyYW5nZS1zdGFjay1jZW50ZXJlZCBzbWUtYXJyYW5nZS1zdGFjay1pbmxpbmVcIlxyXG4gICAgW2NsYXNzLnNtZS1hY3Rpb24tYmFyLWl0ZW0tbm8tcGFkZGluZy12XT1cImhlaWdodE92ZXJmbG93XCI+PC9zbWUtZHluYW1pYy1hY3Rpb24taXRlbT5cclxuXHJcbiAgPHNtZS1kcm9wZG93biAjZHJvcERvd24gcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZVwiXHJcbiAgICBbY2xhc3Muc21lLWxheW91dC1oaWRkZW5dPVwiIWNvbXBhY3QgJiYgdHJheUFjdGlvbnMubGVuZ3RoID09PSAwXCJcclxuICAgIFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiY29tcGFjdCAmJiB0cmF5QWN0aW9ucy5sZW5ndGggPT09IDBcIiBbdGl0bGVdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCIgW3NtZVRvb2x0aXBTaG93XT1cIiF0aGlzLmRyb3BEb3duLmlzT3BlblwiPlxyXG4gICAgPGJ1dHRvbiAjZHJvcERvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCIgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImRyb3BEb3duLmlzT3BlblwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICBkYXRhLXV0YS1pZD1cImFjdGlvbi1iYXItbW9yZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLW1vcmVcIiBbdGl0bGVdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgbW9yZUFjdGlvbnNEaXNwbGF5IH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8c21lLWFjdGlvbi1tZW51IFthY3Rpb25zXT1cInRyYXlBY3Rpb25zXCIgcm9sZT1cIm1lbnVcIiBjbGFzcz1cInNtZS1kcm9wZG93bi1jb250ZW50XCIgWyh0YXJnZXQpXT1cInRhcmdldFwiXHJcbiAgICAgIChlcnJvcik9XCJlcnJvci5lbWl0KCRldmVudClcIiAoZXhlY3V0ZWQpPVwiZXhlY3V0ZWQuZW1pdCgkZXZlbnQpXCI+PC9zbWUtYWN0aW9uLW1lbnU+XHJcbiAgPC9zbWUtZHJvcGRvd24+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -6971,8 +6971,9 @@ class ActionBarComponent extends ActionContainerComponent {
|
|
|
6971
6971
|
* Callback triggered after component is destroyed.
|
|
6972
6972
|
*/
|
|
6973
6973
|
ngOnDestroy() {
|
|
6974
|
+
var _a;
|
|
6974
6975
|
super.ngOnDestroy();
|
|
6975
|
-
this.layoutSubscription.unsubscribe();
|
|
6976
|
+
(_a = this.layoutSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
6976
6977
|
}
|
|
6977
6978
|
/**
|
|
6978
6979
|
* On layout changed event handler, occurs every time the layout has been changed.
|