ontimize-web-ngx 15.0.0-beta.1 → 15.0.0-beta.2
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/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +2 -2
- package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +13 -15
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +6 -8
- package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +2 -2
- package/esm2020/lib/components/form-container/o-form-container.component.mjs +6 -8
- package/esm2020/lib/components/index.mjs +2 -3
- package/esm2020/lib/components/o-service-base-component.class.mjs +1 -1
- package/esm2020/lib/components/o-service-component.class.mjs +2 -1
- package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +6 -7
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +123 -129
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +46 -9
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +6 -7
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/o-table.component.mjs +12 -13
- package/esm2020/lib/components/user-info/index.mjs +5 -0
- package/esm2020/lib/components/user-info/o-user-info.module.mjs +3 -3
- package/esm2020/lib/interfaces/o-table-column.interface.mjs +1 -1
- package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +20 -22
- package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +7 -3
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +10 -4
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +8 -9
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +6 -8
- package/esm2020/lib/services/o-error-dialog-manager.service.mjs +8 -4
- package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
- package/esm2020/lib/util/util.mjs +5 -1
- package/fesm2015/ontimize-web-ngx.mjs +261 -227
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +261 -227
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.d.ts +1 -3
- package/lib/components/card-menu-item/o-card-menu-item.component.d.ts +2 -3
- package/lib/components/form-container/o-form-container.component.d.ts +1 -3
- package/lib/components/index.d.ts +1 -2
- package/lib/components/table/column/calculated/o-table-column-calculated.component.d.ts +2 -3
- package/lib/components/table/column/o-table-column.component.d.ts +3 -4
- package/lib/components/table/extensions/default-o-table.datasource.d.ts +1 -0
- package/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.d.ts +2 -3
- package/lib/components/table/o-table.component.d.ts +5 -6
- package/lib/components/user-info/index.d.ts +4 -0
- package/lib/components/user-info/o-user-info.module.d.ts +1 -1
- package/lib/interfaces/o-table-column.interface.d.ts +2 -2
- package/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.d.ts +4 -4
- package/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.d.ts +3 -1
- package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +2 -1
- package/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.d.ts +2 -3
- package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +2 -3
- package/lib/services/o-error-dialog-manager.service.d.ts +2 -2
- package/lib/services/translate/o-translate.service.d.ts +1 -0
- package/lib/util/util.d.ts +1 -0
- package/package.json +1 -1
- package/theme.scss +12 -16
- package/theming/ontimize-style-v8.scss +22 -0
- package/theming/ontimize-style.scss +2 -1
- package/theming/styles/ontimize-v8/o-form-field-style.scss +20 -13
- package/theming/styles/ontimize-v8/variables.scss +4 -1
- package/theming/themes/ontimize-blue.scss +6 -3
|
@@ -312,7 +312,7 @@ export class OFormNavigationClass {
|
|
|
312
312
|
}
|
|
313
313
|
else {
|
|
314
314
|
extras.relativeTo = this.actRoute;
|
|
315
|
-
route = [
|
|
315
|
+
route = [Codes.DEFAULT_INSERT_ROUTE];
|
|
316
316
|
if (this.formLayoutManager && this.formLayoutManager.isTabMode()) {
|
|
317
317
|
extras.queryParams = {};
|
|
318
318
|
extras.queryParams[Codes.INSERTION_MODE] = 'true';
|
|
@@ -409,4 +409,4 @@ export class OFormNavigationClass {
|
|
|
409
409
|
}, activeMode);
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLm5hdmlnYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL25hdmlnYXRpb24vby1mb3JtLm5hdmlnYXRpb24uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sc0NBQXNDLENBQUM7QUFLMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsTUFBTSxPQUFPLG9CQUFvQjtJQTBCL0IsWUFDWSxRQUFrQixFQUNsQixJQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQXdCO1FBSHhCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQWYxQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUl0Qiw0QkFBdUIsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVoRixxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVczRSxJQUFJLENBQUMsaUJB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Q0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1lBQy9FLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0I7WUFDckYsOEJBQThCO1NBQy9CLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciwgVXJsU2VnbWVudEdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xheW91dHMvZm9ybS1sYXlvdXQvZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSwgT05hdmlnYXRpb25JdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMsXG4gIEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbmZpcm1FeGl0U2VydmljZSB9IGZyb20gJy4vby1mb3JtLWNvbmZpcm0tZXhpdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtQmFzZSB9IGZyb20gJy4uL28tZm9ybS1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UgfSBmcm9tICcuLi8uLi8uLi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIE9Gb3JtTmF2aWdhdGlvbkNsYXNzIHtcblxuICBmb3JtTGF5b3V0TWFuYWdlcjogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZTtcbiAgZm9ybUxheW91dERpYWxvZzogT0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGNvbmZpcm1FeGl0U2VydmljZTogT0Zvcm1Db25maXJtRXhpdFNlcnZpY2U7XG5cbiAgcHJvdGVjdGVkIHFQYXJhbVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgcXVlcnlQYXJhbXM6IGFueTtcblxuICBwcm90ZWN0ZWQgdXJsUGFyYW1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIHVybFBhcmFtczogb2JqZWN0O1xuXG4gIHByb3RlY3RlZCB1cmxTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIHVybFNlZ21lbnRzOiBhbnkgPSBbXTtcblxuICBwcm90ZWN0ZWQgY29tYmluZWROYXZpZ2F0aW9uU3RyZWFtOiBPYnNlcnZhYmxlPGFueT47XG4gIHByb3RlY3RlZCBjb21iaW5lZE5hdmlnYXRpb25TdHJlYW1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG9uVXJsUGFyYW1DaGFuZ2VkU3RyZWFtOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIG5hdmlnYXRpb25TdHJlYW06IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcm90ZWN0ZWQgb25DbG9zZVRhYlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgY2FjaGVTdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGZvcm06IE9Gb3JtQmFzZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB0aGlzLmNvbmZpcm1FeGl0U2VydmljZSA9IGluamVjdG9yLmdldChPRm9ybUNvbmZpcm1FeGl0U2VydmljZSk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE5vIHBhcmVudCBmb3JtTGF5b3V0TWFuYWdlclxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXREaWFsb2cgPSB0aGlzLmluamVjdG9yLmdldChPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IGZvcm0gbGF5b3V0IGRpYWxvZ1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1MYXlvdXREaWFsb2cgJiYgIXRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIgPSB0aGlzLmZvcm1MYXlvdXREaWFsb2cuZm9ybUxheW91dE1hbmFnZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5jb21iaW5lZE5hdmlnYXRpb25TdHJlYW0gPSBjb21iaW5lTGF0ZXN0KFtzZWxmLm9uVXJsUGFyYW1DaGFuZ2VkU3RyZWFtLmFzT2JzZXJ2YWJsZSgpXSk7XG5cbiAgICB0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbS5zdWJzY3JpYmUodmFsQXJyID0+IHtcbiAgICAgIGlmIChVdGlsLmlzQXJyYXkodmFsQXJyKSAmJiB2YWxBcnIubGVuZ3RoID09PSAxICYmIHZhbEFyclswXSkge1xuICAgICAgICBzZWxmLm5hdmlnYXRpb25TdHJlYW0uZW1pdCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnFQYXJhbVN1Yikge1xuICAgICAgdGhpcy5xUGFyYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXJsUGFyYW1TdWIpIHtcbiAgICAgIHRoaXMudXJsUGFyYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXJsU3ViKSB7XG4gICAgICB0aGlzLnVybFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21iaW5lZE5hdmlnYXRpb25TdHJlYW1TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY29tYmluZWROYXZpZ2F0aW9uU3RyZWFtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlVG9RdWVyeVBhcmFtcygpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgY2FjaGVEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0Rm9ybUNhY2hlRGF0YSgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNhY2hlRGF0YSkpIHtcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IGNhY2hlRGF0YS5xdWVyeVBhcmFtcyB8fCB7fTtcbiAgICAgICAgdGhpcy5wYXJzZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5xUGFyYW1TdWIgPSB0aGlzLmFjdFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgc2VsZi5xdWVyeVBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICBzZWxmLnBhcnNlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVF1ZXJ5UGFyYW1zKCkge1xuICAgIGNvbnN0IGlzRGV0YWlsID0gdGhpcy5xdWVyeVBhcmFtc1tDb2Rlcy5JU19ERVRBSUxdO1xuICAgIC8vIGVuc3VyaW5nIGlzZGV0YWlsID0gZmFsc2Ugd2hlbiB1c2luZyBmb3JtIGxheW91dCBtYW5hZ2VyXG4gICAgdGhpcy5mb3JtLmlzRGV0YWlsRm9ybSA9IHRoaXMuZm9ybUxheW91dE1hbmFnZXIgPyBmYWxzZSA6IChpc0RldGFpbCA9PT0gJ3RydWUnKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvVXJsUGFyYW1zKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBjYWNoZURhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtQ2FjaGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2FjaGVEYXRhKSkge1xuICAgICAgICB0aGlzLnVybFBhcmFtcyA9IGNhY2hlRGF0YS5wYXJhbXM7XG4gICAgICAgIHRoaXMucGFyc2VVcmxQYXJhbXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnVybFBhcmFtU3ViID0gdGhpcy5hY3RSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIHNlbGYudXJsUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICB0aGlzLnBhcnNlVXJsUGFyYW1zKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVXJsUGFyYW1zKCkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnVybFBhcmFtcykgJiYgVXRpbC5pc0RlZmluZWQodGhpcy51cmxQYXJhbXNbQ29kZXMuUEFSRU5UX0tFWVNfS0VZXSkpIHtcbiAgICAgIHRoaXMuZm9ybS5mb3JtUGFyZW50S2V5c1ZhbHVlcyA9IFV0aWwuZGVjb2RlUGFyZW50S2V5cyh0aGlzLnVybFBhcmFtc1tDb2Rlcy5QQVJFTlRfS0VZU19LRVldKTtcbiAgICB9XG4gICAgLy8gVE9ETyBPYnRhaW4gJ2RhdGF0eXBlJyBvZiBlYWNoIGtleSBjb250YWluZWQgaW50byB1cmxQYXJhbXMgZm9yXG4gICAgLy8gZm9yIGJ1aWxkaW5nIGNvcnJlY3RseSBxdWVyeSBmaWx0ZXIhISEhXG4gICAgaWYgKHRoaXMudXJsUGFyYW1zKSB7XG4gICAgICB0aGlzLm9uVXJsUGFyYW1DaGFuZ2VkU3RyZWFtLmVtaXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlVG9VcmwoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIGNvbnN0IGNhY2hlRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1DYWNoZURhdGEoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjYWNoZURhdGEpKSB7XG4gICAgICAgIHRoaXMudXJsU2VnbWVudHMgPSBjYWNoZURhdGEudXJsU2VnbWVudHM7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy51cmxTdWIgPSB0aGlzLmFjdFJvdXRlLnVybC5zdWJzY3JpYmUodXJsU2VnbWVudHMgPT4ge1xuICAgICAgICBzZWxmLnVybFNlZ21lbnRzID0gdXJsU2VnbWVudHM7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb0NhY2hlQ2hhbmdlcygpIHtcbiAgICBjb25zdCBmb3JtQ2FjaGUgPSB0aGlzLmZvcm0uZ2V0Rm9ybUNhY2hlKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChmb3JtQ2FjaGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2FjaGVTdGF0ZVN1YnNjcmlwdGlvbiA9IGZvcm1DYWNoZS5vbkNhY2hlU3RhdGVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsU3RhdGVDaGFuZ2VkID0gdGhpcy5mb3JtLmlzSW5pdGlhbFN0YXRlQ2hhbmdlZCgpO1xuICAgICAgY29uc3QgdHJpZ2dlckV4aXRDb25maXJtID0gdGhpcy5mb3JtLmNvbmZpcm1FeGl0ICYmIHRoaXMuZm9ybS5pc0luaXRpYWxTdGF0ZUNoYW5nZWQodGhpcy5mb3JtLmlnbm9yZU9uRXhpdCk7XG4gICAgICB0aGlzLnNldE1vZGlmaWVkU3RhdGUoaW5pdGlhbFN0YXRlQ2hhbmdlZCwgdHJpZ2dlckV4aXRDb25maXJtKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEN1cnJlbnRLZXlzVmFsdWVzKCk6IG9iamVjdCB7XG4gICAgbGV0IGZpbHRlciA9IHt9O1xuICAgIGlmICh0aGlzLnVybFBhcmFtcykge1xuICAgICAgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJGcm9tT2JqZWN0KHRoaXMudXJsUGFyYW1zKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyRnJvbU9iamVjdChvYmplY3RQYXJhbTogYW55KSB7XG4gICAgY29uc3QgZmlsdGVyID0ge307XG4gICAgaWYgKCFvYmplY3RQYXJhbSB8fCBPYmplY3Qua2V5cyhvYmplY3RQYXJhbSkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtLmtleXNBcnJheSkge1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChvYmplY3RQYXJhbVtrZXldKSB7XG4gICAgICAgICAgZmlsdGVyW2tleV0gPSBTUUxUeXBlcy5wYXJzZVVzaW5nU1FMVHlwZShvYmplY3RQYXJhbVtrZXldLCB0aGlzLmZvcm0ua2V5c1NxbFR5cGVzQXJyYXlbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5fcEtleXNFcXVpdikuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHVybFZhbCA9IG9iamVjdFBhcmFtW3RoaXMuZm9ybS5fcEtleXNFcXVpdltpdGVtXV07XG4gICAgICBpZiAodXJsVmFsKSB7XG4gICAgICAgIGZpbHRlcltpdGVtXSA9IFNRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlKHVybFZhbCwgdGhpcy5mb3JtLmtleXNTcWxUeXBlc0FycmF5W2luZGV4XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGdldEZpbHRlckZyb21VcmxQYXJhbXMoKSB7XG4gICAgY29uc3QgZmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRVcmxQYXJhbXMoKSB8fCB7fSk7XG4gICAgY29uc3QgdXJsUGFyYW1zS2V5cyA9IE9iamVjdC5rZXlzKGZpbHRlciB8fCB7fSk7XG4gICAgaWYgKHVybFBhcmFtc0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgdXJsUGFyYW1zS2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09IENvZGVzLlBBUkVOVF9LRVlTX0tFWSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJba2V5XTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGZpbHRlciwgdGhpcy5mb3JtLmZvcm1QYXJlbnRLZXlzVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBnZXRVcmxTZWdtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy51cmxTZWdtZW50cztcbiAgfVxuXG4gIGdldFF1ZXJ5UGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5UGFyYW1zO1xuICB9XG5cbiAgc2V0VXJsUGFyYW1zKHZhbDogb2JqZWN0KSB7XG4gICAgdGhpcy51cmxQYXJhbXMgPSB2YWw7XG4gIH1cblxuICBnZXRVcmxQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudXJsUGFyYW1zO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE1vZGlmaWVkU3RhdGUobW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuc2V0TW9kaWZpZWRTdGF0ZSh0aGlzLmZvcm0uZ2V0QXR0cmlidXRlKCksIG1vZGlmaWVkLCBjb25maXJtRXhpdCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTmF2aWdhdGlvbigpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgaXNJbkluc2VydE1vZGUgPSB0aGlzLmZvcm0uaXNJbkluc2VydE1vZGUoKTtcbiAgICAgIGxldCBmb3JtRGF0YTtcbiAgICAgIGlmIChpc0luSW5zZXJ0TW9kZSkge1xuICAgICAgICBmb3JtRGF0YSA9IHt9O1xuICAgICAgICBmb3JtRGF0YS5uZXdfdGFiX3RpdGxlID0gJ0xBWU9VVF9NQU5BTkdFUi5JTlNFUlRJT05fTU9ERV9USVRMRSc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWxsb3dUb1VwZGF0ZU5hdmlnYXRpb24odGhpcy5mb3JtLmdldEF0dHJpYnV0ZSgpKSkge1xuICAgICAgICBmb3JtRGF0YSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uZm9ybURhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBmb3JtRGF0YVtrZXldID0gdGhpcy5mb3JtLmZvcm1EYXRhW2tleV0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1EYXRhKSB7XG4gICAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIudXBkYXRlTmF2aWdhdGlvbihmb3JtRGF0YSwgdGhpcy5mb3JtLmdldEtleXNWYWx1ZXMoKSwgaXNJbkluc2VydE1vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlQmFjayhvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmlnbm9yZU5hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0SXRlbSgpO1xuICAgICAgaWYgKG5hdkRhdGEpIHtcbiAgICAgICAgY29uc3QgZXh0cmFzID0ge307XG4gICAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gbmF2RGF0YS5xdWVyeVBhcmFtcztcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25hdkRhdGEudXJsXSwgZXh0cmFzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURldGFpbEFjdGlvbihvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICB0aGlzLmZvcm0uYmVmb3JlQ2xvc2VEZXRhaWwuZW1pdCgpO1xuICAgICAgLy8gYHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbmAgbWF5IG5vdCByZW1vdmUgYWxsIG5lY2Vzc2FyeSBpdGVtcyBzbyBjdXJyZW50IHJvdXRlIHdpbGwgYmUgY2hlY2tlZCBiZWxvd1xuICAgICAgaWYgKCF0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbigpKSB7XG4gICAgICAgIC8vIGByZW1vdmVMYXN0SXRlbXNVbnRpbE1haW5gIGRpZG4ndCBmaW5kIHRoZSBtYWluIG5hdmlnYXRpb24gaXRlbVxuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmlnbm9yZU5hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IG5hdkRhdGE6IE9OYXZpZ2F0aW9uSXRlbSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdEl0ZW0oKTtcbiAgICAgIGlmIChuYXZEYXRhKSB7XG4gICAgICAgIC8vIGlmIG5hdkRhdGEgcm91dGUgaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcm91dGUsIHJlbW92ZSBsYXN0IGl0ZW1cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UuaXNDdXJyZW50Um91dGUobmF2RGF0YS51cmwpKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5yZW1vdmVMYXN0SXRlbSgpO1xuICAgICAgICAgIG5hdkRhdGEgPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldExhc3RJdGVtKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gbmF2RGF0YS5xdWVyeVBhcmFtcztcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25hdkRhdGEudXJsXSwgZXh0cmFzKS50aGVuKHZhbCA9PiB7XG4gICAgICAgICAgaWYgKHZhbCAmJiBvcHRpb25zICYmIG9wdGlvbnMuY2hhbmdlVG9vbGJhck1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEluaXRpYWxNb2RlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF5SW5SZWNvcmRBZnRlckluc2VydChpbnNlcnRlZEtleXM6IG9iamVjdCkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlICYmIHRoaXMuZm9ybS5rZXlzQXJyYXkgJiYgaW5zZXJ0ZWRLZXlzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICBjb25zdCBjbG9zZU9wdHM6IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMgPSB7IGV4aXRXaXRob3V0Q29uZmlybWF0aW9uOiB0cnVlIH07XG4gICAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuY2xvc2VEZXRhaWwoY2xvc2VPcHRzKTtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZW1vdmUgJ25ldycgbmF2aWdhdGlvbiBpdGVtIGZyb20gaGlzdG9yeVxuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICB9XG4gICAgICBsZXQgcGFyYW1zOiBhbnlbXSA9IFtdO1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGlmIChpbnNlcnRlZEtleXNbY3VycmVudF0pIHtcbiAgICAgICAgICBwYXJhbXMucHVzaChpbnNlcnRlZEtleXNbY3VycmVudF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxldCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgIGxldCBxUGFyYW1zOiBhbnkgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldFF1ZXJ5UGFyYW1zKCksIENvZGVzLmdldElzRGV0YWlsT2JqZWN0KCkpO1xuICAgICAgLy8gZGVsZXRpbmcgaW5zZXJ0aW9uTW9kZSBjdXJyZW50IHF1ZXJ5UGFyYW1cbiAgICAgIGRlbGV0ZSBxUGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXTtcbiAgICAgIC8vIElnbm9yaW5nIGN1cnJlbnQgY2xvc2VkIGZvcm0gKHRoZSBpbnNlcnRpb24gZm9ybSlcbiAgICAgIHFQYXJhbXNbQ29kZXMuSUdOT1JFX0NBTl9ERUFDVElWQVRFXSA9IHRydWU7XG4gICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IHFQYXJhbXM7XG4gICAgICBsZXQgcm91dGUgPSBbXTtcbiAgICAgIGNvbnN0IG5hdkRhdGE6IE9OYXZpZ2F0aW9uSXRlbSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgICBpZiAobmF2RGF0YSkge1xuICAgICAgICBsZXQgdXJsID0gbmF2RGF0YS51cmw7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICAgIGNvbnN0IGRldGFpbEluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcvJyArIGRldGFpbFJvdXRlKTtcbiAgICAgICAgICBpZiAoZGV0YWlsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKDAsIGRldGFpbEluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcm91dGUudW5zaGlmdCh1cmwpO1xuICAgICAgICByb3V0ZS5wdXNoKC4uLnBhcmFtcyk7XG4gICAgICAgIC8vIGRlbGV0aW5nIGluc2VydEZvcm1Sb3V0ZSBhcyBhY3RpdmUgbW9kZSAoYmVjYXVzZSBzdGF5SW5SZWNvcmRBZnRlckluc2VydCBjaGFuZ2VzIGl0KVxuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKG5hdkRhdGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0cmFzLnJlbGF0aXZlVG8gPSB0aGlzLmFjdFJvdXRlO1xuICAgICAgICByb3V0ZSA9IFsnLi4vJywgLi4ucGFyYW1zXTtcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gJ2luc2VydCcgbW9kZVxuICAgKi9cbiAgZ29JbnNlcnRNb2RlKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmFsbG93TmF2aWdhdGlvbigpKSB7XG4gICAgICB0aGlzLmZvcm0uc2V0SW5zZXJ0TW9kZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uU2VydmljZSkge1xuICAgICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk7XG4gICAgICB9XG5cbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldExhc3RNYWluTmF2aWdhdGlvblJvdXRlRGF0YSgpO1xuICAgICAgaWYgKCF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyICYmIG5hdkRhdGEpIHtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLnVybCk7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlLnB1c2gobmF2RGF0YS5nZXRJbnNlcnRGb3JtUm91dGUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nICsgQ29kZXMuREVGQVVMVF9JTlNFUlRfUk9VVEVdO1xuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmlzVGFiTW9kZSgpKSB7XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9ICd0cnVlJztcbiAgICAgICAgICBleHRyYXMucXVlcnlQYXJhbXNbQ29kZXMuSUdOT1JFX0NBTl9ERUFDVElWQVRFXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVOYXZpZ2F0aW9uRm9ybVJvdXRlcygnaW5zZXJ0Rm9ybVJvdXRlJywgISF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEluc2VydE1vZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnZWRpdCcgbW9kZVxuICAgKi9cbiAgZ29FZGl0TW9kZShvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd05hdmlnYXRpb24oKSkge1xuICAgICAgdGhpcy5mb3JtLnNldFVwZGF0ZU1vZGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICBpZiAodGhpcy5mb3JtLmlzRGV0YWlsRm9ybSkge1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IENvZGVzLmdldElzRGV0YWlsT2JqZWN0KCk7XG4gICAgICB9XG4gICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gfHwge30pO1xuXG4gICAgICBjb25zdCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFVybFBhcmFtcygpO1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh1cmxQYXJhbXNba2V5XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKHVybFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobmF2RGF0YSkpIHtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLnVybCk7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEVkaXRGb3JtUm91dGUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXMsIENvZGVzLkRFRkFVTFRfRURJVF9ST1VURV07XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbkZvcm1Sb3V0ZXMoJ2VkaXRGb3JtUm91dGUnKTtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVVcGRhdGVNb2RlLmVtaXQoKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0TmVzdGVkTGV2ZWxzTnVtYmVyKCkge1xuICAgIGxldCBhY3RSb3V0ZSA9IHRoaXMuYWN0Um91dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIGFjdFJvdXRlID0gYWN0Um91dGUucGFyZW50O1xuICAgICAgYWN0Um91dGUudXJsLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeCAmJiB4Lmxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXRGdWxsVXJsU2VnbWVudHMoKSB7XG4gICAgbGV0IGZ1bGxVcmxTZWdtZW50cyA9IFtdO1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgIGlmIChyb3V0ZXIgJiYgcm91dGVyLnVybCAmJiByb3V0ZXIudXJsLmxlbmd0aCkge1xuICAgICAgY29uc3Qgcm9vdDogVXJsU2VnbWVudEdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwpLnJvb3Q7XG4gICAgICBpZiAocm9vdCAmJiByb290Lmhhc0NoaWxkcmVuKCkgJiYgcm9vdC5jaGlsZHJlbi5wcmltYXJ5KSB7XG4gICAgICAgIGZ1bGxVcmxTZWdtZW50cyA9IHJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxVcmxTZWdtZW50cztcbiAgfVxuXG4gIHNob3dDb25maXJtRGlzY2FyZENoYW5nZXMoaWdub3JlQXR0cnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtRXhpdFNlcnZpY2Uuc3Vic2NyaWJlVG9EaXNjYXJkQ2hhbmdlcyh0aGlzLmZvcm0sIGlnbm9yZUF0dHJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9yZU5hdmlnYXRpb25Gb3JtUm91dGVzKGFjdGl2ZU1vZGU6IHN0cmluZywgbWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHByZXZSb3V0ZURhdGEgPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwcmV2Um91dGVEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUm91dGVzID0gcHJldlJvdXRlRGF0YS5mb3JtUm91dGVzO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVGb3JtUm91dGVzKHtcbiAgICAgIGRldGFpbEZvcm1Sb3V0ZTogZm9ybVJvdXRlcyA/IGZvcm1Sb3V0ZXMuZGV0YWlsRm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9ERVRBSUxfUk9VVEUsXG4gICAgICBlZGl0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5lZGl0Rm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9FRElUX1JPVVRFLFxuICAgICAgaW5zZXJ0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5pbnNlcnRGb3JtUm91dGUgOiBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURSxcbiAgICAgIG1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFxuICAgIH0sIGFjdGl2ZU1vZGUpO1xuICB9XG5cbn1cbiJdfQ==
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLm5hdmlnYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL25hdmlnYXRpb24vby1mb3JtLm5hdmlnYXRpb24uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sc0NBQXNDLENBQUM7QUFLMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsTUFBTSxPQUFPLG9CQUFvQjtJQTBCL0IsWUFDWSxRQUFrQixFQUNsQixJQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQXdCO1FBSHhCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQWYxQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUl0Qiw0QkFBdUIsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVoRixxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVczRSxJQUFJLENBQUMsaUJB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Q0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDL0UsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtZQUNyRiw4QkFBOEI7U0FDL0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyLCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0cy9mb3JtLWxheW91dC9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlLCBPTmF2aWdhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyxcbiAgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS1sYXlvdXQtZGV0YWlsLWNvbXBvbmVudC1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlIH0gZnJvbSAnLi9vLWZvcm0tY29uZmlybS1leGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1CYXNlIH0gZnJvbSAnLi4vby1mb3JtLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2xheW91dHMvZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgT0Zvcm1OYXZpZ2F0aW9uQ2xhc3Mge1xuXG4gIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlO1xuICBmb3JtTGF5b3V0RGlhbG9nOiBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgY29uZmlybUV4aXRTZXJ2aWNlOiBPRm9ybUNvbmZpcm1FeGl0U2VydmljZTtcblxuICBwcm90ZWN0ZWQgcVBhcmFtU3ViOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBxdWVyeVBhcmFtczogYW55O1xuXG4gIHByb3RlY3RlZCB1cmxQYXJhbVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsUGFyYW1zOiBvYmplY3Q7XG5cbiAgcHJvdGVjdGVkIHVybFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsU2VnbWVudHM6IGFueSA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb21iaW5lZE5hdmlnYXRpb25TdHJlYW06IE9ic2VydmFibGU8YW55PjtcbiAgcHJvdGVjdGVkIGNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgb25VcmxQYXJhbUNoYW5nZWRTdHJlYW06IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblN0cmVhbTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBvbkNsb3NlVGFiU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBjYWNoZVN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZm9ybTogT0Zvcm1CYXNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29uZmlybUV4aXRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IGZvcm1MYXlvdXRNYW5hZ2VyXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZm9ybUxheW91dERpYWxvZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBObyBwYXJlbnQgZm9ybSBsYXlvdXQgZGlhbG9nXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUxheW91dERpYWxvZyAmJiAhdGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA9IHRoaXMuZm9ybUxheW91dERpYWxvZy5mb3JtTGF5b3V0TWFuYWdlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbSA9IGNvbWJpbmVMYXRlc3QoW3NlbGYub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uYXNPYnNlcnZhYmxlKCldKTtcblxuICAgIHRoaXMuY29tYmluZWROYXZpZ2F0aW9uU3RyZWFtLnN1YnNjcmliZSh2YWxBcnIgPT4ge1xuICAgICAgaWYgKFV0aWwuaXNBcnJheSh2YWxBcnIpICYmIHZhbEFyci5sZW5ndGggPT09IDEgJiYgdmFsQXJyWzBdKSB7XG4gICAgICAgIHNlbGYubmF2aWdhdGlvblN0cmVhbS5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucVBhcmFtU3ViKSB7XG4gICAgICB0aGlzLnFQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxQYXJhbVN1Yikge1xuICAgICAgdGhpcy51cmxQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxTdWIpIHtcbiAgICAgIHRoaXMudXJsU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jb21iaW5lZE5hdmlnYXRpb25TdHJlYW1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1F1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBjYWNoZURhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtQ2FjaGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2FjaGVEYXRhKSkge1xuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gY2FjaGVEYXRhLnF1ZXJ5UGFyYW1zIHx8IHt9O1xuICAgICAgICB0aGlzLnBhcnNlUXVlcnlQYXJhbXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnFQYXJhbVN1YiA9IHRoaXMuYWN0Um91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICBzZWxmLnF1ZXJ5UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgIHNlbGYucGFyc2VRdWVyeVBhcmFtcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgaXNEZXRhaWwgPSB0aGlzLnF1ZXJ5UGFyYW1zW0NvZGVzLklTX0RFVEFJTF07XG4gICAgLy8gZW5zdXJpbmcgaXNkZXRhaWwgPSBmYWxzZSB3aGVuIHVzaW5nIGZvcm0gbGF5b3V0IG1hbmFnZXJcbiAgICB0aGlzLmZvcm0uaXNEZXRhaWxGb3JtID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA/IGZhbHNlIDogKGlzRGV0YWlsID09PSAndHJ1ZScpO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9VcmxQYXJhbXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIGNvbnN0IGNhY2hlRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1DYWNoZURhdGEoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjYWNoZURhdGEpKSB7XG4gICAgICAgIHRoaXMudXJsUGFyYW1zID0gY2FjaGVEYXRhLnBhcmFtcztcbiAgICAgICAgdGhpcy5wYXJzZVVybFBhcmFtcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMudXJsUGFyYW1TdWIgPSB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgc2VsZi51cmxQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHRoaXMucGFyc2VVcmxQYXJhbXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VVcmxQYXJhbXMoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMudXJsUGFyYW1zKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnVybFBhcmFtc1tDb2Rlcy5QQVJFTlRfS0VZU19LRVldKSkge1xuICAgICAgdGhpcy5mb3JtLmZvcm1QYXJlbnRLZXlzVmFsdWVzID0gVXRpbC5kZWNvZGVQYXJlbnRLZXlzKHRoaXMudXJsUGFyYW1zW0NvZGVzLlBBUkVOVF9LRVlTX0tFWV0pO1xuICAgIH1cbiAgICAvLyBUT0RPIE9idGFpbiAnZGF0YXR5cGUnIG9mIGVhY2gga2V5IGNvbnRhaW5lZCBpbnRvIHVybFBhcmFtcyBmb3JcbiAgICAvLyBmb3IgYnVpbGRpbmcgY29ycmVjdGx5IHF1ZXJ5IGZpbHRlciEhISFcbiAgICBpZiAodGhpcy51cmxQYXJhbXMpIHtcbiAgICAgIHRoaXMub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1VybCgpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgY2FjaGVEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0Rm9ybUNhY2hlRGF0YSgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNhY2hlRGF0YSkpIHtcbiAgICAgICAgdGhpcy51cmxTZWdtZW50cyA9IGNhY2hlRGF0YS51cmxTZWdtZW50cztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnVybFN1YiA9IHRoaXMuYWN0Um91dGUudXJsLnN1YnNjcmliZSh1cmxTZWdtZW50cyA9PiB7XG4gICAgICAgIHNlbGYudXJsU2VnbWVudHMgPSB1cmxTZWdtZW50cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHN1YnNjcmliZVRvQ2FjaGVDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGZvcm1DYWNoZSA9IHRoaXMuZm9ybS5nZXRGb3JtQ2FjaGUoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKGZvcm1DYWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZVN0YXRlU3Vic2NyaXB0aW9uID0gZm9ybUNhY2hlLm9uQ2FjaGVTdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZUNoYW5nZWQgPSB0aGlzLmZvcm0uaXNJbml0aWFsU3RhdGVDaGFuZ2VkKCk7XG4gICAgICBjb25zdCB0cmlnZ2VyRXhpdENvbmZpcm0gPSB0aGlzLmZvcm0uY29uZmlybUV4aXQgJiYgdGhpcy5mb3JtLmlzSW5pdGlhbFN0YXRlQ2hhbmdlZCh0aGlzLmZvcm0uaWdub3JlT25FeGl0KTtcbiAgICAgIHRoaXMuc2V0TW9kaWZpZWRTdGF0ZShpbml0aWFsU3RhdGVDaGFuZ2VkLCB0cmlnZ2VyRXhpdENvbmZpcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q3VycmVudEtleXNWYWx1ZXMoKTogb2JqZWN0IHtcbiAgICBsZXQgZmlsdGVyID0ge307XG4gICAgaWYgKHRoaXMudXJsUGFyYW1zKSB7XG4gICAgICBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21PYmplY3QodGhpcy51cmxQYXJhbXMpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tT2JqZWN0KG9iamVjdFBhcmFtOiBhbnkpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB7fTtcbiAgICBpZiAoIW9iamVjdFBhcmFtIHx8IE9iamVjdC5rZXlzKG9iamVjdFBhcmFtKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm0ua2V5c0FycmF5KSB7XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKG9iamVjdFBhcmFtW2tleV0pIHtcbiAgICAgICAgICBmaWx0ZXJba2V5XSA9IFNRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlKG9iamVjdFBhcmFtW2tleV0sIHRoaXMuZm9ybS5rZXlzU3FsVHlwZXNBcnJheVtpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLl9wS2V5c0VxdWl2KS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdXJsVmFsID0gb2JqZWN0UGFyYW1bdGhpcy5mb3JtLl9wS2V5c0VxdWl2W2l0ZW1dXTtcbiAgICAgIGlmICh1cmxWYWwpIHtcbiAgICAgICAgZmlsdGVyW2l0ZW1dID0gU1FMVHlwZXMucGFyc2VVc2luZ1NRTFR5cGUodXJsVmFsLCB0aGlzLmZvcm0ua2V5c1NxbFR5cGVzQXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgZ2V0RmlsdGVyRnJvbVVybFBhcmFtcygpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldFVybFBhcmFtcygpIHx8IHt9KTtcbiAgICBjb25zdCB1cmxQYXJhbXNLZXlzID0gT2JqZWN0LmtleXMoZmlsdGVyIHx8IHt9KTtcbiAgICBpZiAodXJsUGFyYW1zS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB1cmxQYXJhbXNLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gQ29kZXMuUEFSRU5UX0tFWVNfS0VZKSB7XG4gICAgICAgICAgZGVsZXRlIGZpbHRlcltrZXldO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmlsdGVyLCB0aGlzLmZvcm0uZm9ybVBhcmVudEtleXNWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGdldFVybFNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnVybFNlZ21lbnRzO1xuICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXM7XG4gIH1cblxuICBzZXRVcmxQYXJhbXModmFsOiBvYmplY3QpIHtcbiAgICB0aGlzLnVybFBhcmFtcyA9IHZhbDtcbiAgfVxuXG4gIGdldFVybFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy51cmxQYXJhbXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TW9kaWZpZWRTdGF0ZShtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zZXRNb2RpZmllZFN0YXRlKHRoaXMuZm9ybS5nZXRBdHRyaWJ1dGUoKSwgbW9kaWZpZWQsIGNvbmZpcm1FeGl0KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBpc0luSW5zZXJ0TW9kZSA9IHRoaXMuZm9ybS5pc0luSW5zZXJ0TW9kZSgpO1xuICAgICAgbGV0IGZvcm1EYXRhO1xuICAgICAgaWYgKGlzSW5JbnNlcnRNb2RlKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIGZvcm1EYXRhLm5ld190YWJfdGl0bGUgPSAnTEFZT1VUX01BTkFOR0VSLklOU0VSVElPTl9NT0RFX1RJVExFJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd1RvVXBkYXRlTmF2aWdhdGlvbih0aGlzLmZvcm0uZ2V0QXR0cmlidXRlKCkpKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5mb3JtRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGZvcm1EYXRhW2tleV0gPSB0aGlzLmZvcm0uZm9ybURhdGFba2V5XS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci51cGRhdGVOYXZpZ2F0aW9uKGZvcm1EYXRhLCB0aGlzLmZvcm0uZ2V0S2V5c1ZhbHVlcygpLCBpc0luSW5zZXJ0TW9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCYWNrKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldExhc3RJdGVtKCk7XG4gICAgICBpZiAobmF2RGF0YSkge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gPSBuYXZEYXRhLnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGV0YWlsQWN0aW9uKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVDbG9zZURldGFpbC5lbWl0KCk7XG4gICAgICAvLyBgcmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluYCBtYXkgbm90IHJlbW92ZSBhbGwgbmVjZXNzYXJ5IGl0ZW1zIHNvIGN1cnJlbnQgcm91dGUgd2lsbCBiZSBjaGVja2VkIGJlbG93XG4gICAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluKCkpIHtcbiAgICAgICAgLy8gYHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbmAgZGlkbid0IGZpbmQgdGhlIG1haW4gbmF2aWdhdGlvbiBpdGVtXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0SXRlbSgpO1xuICAgICAgaWYgKG5hdkRhdGEpIHtcbiAgICAgICAgLy8gaWYgbmF2RGF0YSByb3V0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCByb3V0ZSwgcmVtb3ZlIGxhc3QgaXRlbVxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2VydmljZS5pc0N1cnJlbnRSb3V0ZShuYXZEYXRhLnVybCkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICAgICAgbmF2RGF0YSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gPSBuYXZEYXRhLnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpLnRoZW4odmFsID0+IHtcbiAgICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldEZvcm1Ub29sYmFyKCkuc2V0SW5pdGlhbE1vZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0KGluc2VydGVkS2V5czogb2JqZWN0KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UgJiYgdGhpcy5mb3JtLmtleXNBcnJheSAmJiBpbnNlcnRlZEtleXMpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICAgIGNvbnN0IGNsb3NlT3B0czogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyA9IHsgZXhpdFdpdGhvdXRDb25maXJtYXRpb246IHRydWUgfTtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChjbG9zZU9wdHMpO1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSAnbmV3JyBuYXZpZ2F0aW9uIGl0ZW0gZnJvbSBoaXN0b3J5XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGxldCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGN1cnJlbnQpID0+IHtcbiAgICAgICAgaWYgKGluc2VydGVkS2V5c1tjdXJyZW50XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKGluc2VydGVkS2V5c1tjdXJyZW50XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGV0IGV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9O1xuICAgICAgbGV0IHFQYXJhbXM6IGFueSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgQ29kZXMuZ2V0SXNEZXRhaWxPYmplY3QoKSk7XG4gICAgICAvLyBkZWxldGluZyBpbnNlcnRpb25Nb2RlIGN1cnJlbnQgcXVlcnlQYXJhbVxuICAgICAgZGVsZXRlIHFQYXJhbXNbQ29kZXMuSU5TRVJUSU9OX01PREVdO1xuICAgICAgLy8gSWdub3JpbmcgY3VycmVudCBjbG9zZWQgZm9ybSAodGhlIGluc2VydGlvbiBmb3JtKVxuICAgICAgcVBhcmFtc1tDb2Rlcy5JR05PUkVfQ0FOX0RFQUNUSVZBVEVdID0gdHJ1ZTtcbiAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gcVBhcmFtcztcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0TWFpbk5hdmlnYXRpb25Sb3V0ZURhdGEoKTtcbiAgICAgIGlmIChuYXZEYXRhKSB7XG4gICAgICAgIGxldCB1cmwgPSBuYXZEYXRhLnVybDtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgICAgY29uc3QgZGV0YWlsSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nICsgZGV0YWlsUm91dGUpO1xuICAgICAgICAgIGlmIChkZXRhaWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgZGV0YWlsSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3V0ZS51bnNoaWZ0KHVybCk7XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgLy8gZGVsZXRpbmcgaW5zZXJ0Rm9ybVJvdXRlIGFzIGFjdGl2ZSBtb2RlIChiZWNhdXNlIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0IGNoYW5nZXMgaXQpXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZGVsZXRlQWN0aXZlRm9ybU1vZGUobmF2RGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXNdO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnaW5zZXJ0JyBtb2RlXG4gICAqL1xuICBnb0luc2VydE1vZGUob3B0aW9ucz86IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyICYmIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWxsb3dOYXZpZ2F0aW9uKCkpIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRJbnNlcnRNb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlID0gW107XG4gICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgIGNvbnN0IG5hdkRhdGE6IE9OYXZpZ2F0aW9uSXRlbSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgbmF2RGF0YSkge1xuICAgICAgICByb3V0ZS5wdXNoKG5hdkRhdGEudXJsKTtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEluc2VydEZvcm1Sb3V0ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dHJhcy5yZWxhdGl2ZVRvID0gdGhpcy5hY3RSb3V0ZTtcbiAgICAgICAgcm91dGUgPSBbQ29kZXMuREVGQVVMVF9JTlNFUlRfUk9VVEVdO1xuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmlzVGFiTW9kZSgpKSB7XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9ICd0cnVlJztcbiAgICAgICAgICBleHRyYXMucXVlcnlQYXJhbXNbQ29kZXMuSUdOT1JFX0NBTl9ERUFDVElWQVRFXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVOYXZpZ2F0aW9uRm9ybVJvdXRlcygnaW5zZXJ0Rm9ybVJvdXRlJywgISF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEluc2VydE1vZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnZWRpdCcgbW9kZVxuICAgKi9cbiAgZ29FZGl0TW9kZShvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd05hdmlnYXRpb24oKSkge1xuICAgICAgdGhpcy5mb3JtLnNldFVwZGF0ZU1vZGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICBpZiAodGhpcy5mb3JtLmlzRGV0YWlsRm9ybSkge1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IENvZGVzLmdldElzRGV0YWlsT2JqZWN0KCk7XG4gICAgICB9XG4gICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gfHwge30pO1xuXG4gICAgICBjb25zdCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFVybFBhcmFtcygpO1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh1cmxQYXJhbXNba2V5XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKHVybFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobmF2RGF0YSkpIHtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLnVybCk7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEVkaXRGb3JtUm91dGUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXMsIENvZGVzLkRFRkFVTFRfRURJVF9ST1VURV07XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbkZvcm1Sb3V0ZXMoJ2VkaXRGb3JtUm91dGUnKTtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVVcGRhdGVNb2RlLmVtaXQoKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0TmVzdGVkTGV2ZWxzTnVtYmVyKCkge1xuICAgIGxldCBhY3RSb3V0ZSA9IHRoaXMuYWN0Um91dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIGFjdFJvdXRlID0gYWN0Um91dGUucGFyZW50O1xuICAgICAgYWN0Um91dGUudXJsLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeCAmJiB4Lmxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXRGdWxsVXJsU2VnbWVudHMoKSB7XG4gICAgbGV0IGZ1bGxVcmxTZWdtZW50cyA9IFtdO1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgIGlmIChyb3V0ZXIgJiYgcm91dGVyLnVybCAmJiByb3V0ZXIudXJsLmxlbmd0aCkge1xuICAgICAgY29uc3Qgcm9vdDogVXJsU2VnbWVudEdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwpLnJvb3Q7XG4gICAgICBpZiAocm9vdCAmJiByb290Lmhhc0NoaWxkcmVuKCkgJiYgcm9vdC5jaGlsZHJlbi5wcmltYXJ5KSB7XG4gICAgICAgIGZ1bGxVcmxTZWdtZW50cyA9IHJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxVcmxTZWdtZW50cztcbiAgfVxuXG4gIHNob3dDb25maXJtRGlzY2FyZENoYW5nZXMoaWdub3JlQXR0cnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtRXhpdFNlcnZpY2Uuc3Vic2NyaWJlVG9EaXNjYXJkQ2hhbmdlcyh0aGlzLmZvcm0sIGlnbm9yZUF0dHJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9yZU5hdmlnYXRpb25Gb3JtUm91dGVzKGFjdGl2ZU1vZGU6IHN0cmluZywgbWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHByZXZSb3V0ZURhdGEgPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwcmV2Um91dGVEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUm91dGVzID0gcHJldlJvdXRlRGF0YS5mb3JtUm91dGVzO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVGb3JtUm91dGVzKHtcbiAgICAgIGRldGFpbEZvcm1Sb3V0ZTogZm9ybVJvdXRlcyA/IGZvcm1Sb3V0ZXMuZGV0YWlsRm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9ERVRBSUxfUk9VVEUsXG4gICAgICBlZGl0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5lZGl0Rm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9FRElUX1JPVVRFLFxuICAgICAgaW5zZXJ0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5pbnNlcnRGb3JtUm91dGUgOiBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURSxcbiAgICAgIG1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFxuICAgIH0sIGFjdGl2ZU1vZGUpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component,
|
|
2
|
+
import { Component, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { OBreadcrumbComponent } from '../../components/breadcrumb/o-breadcrumb.component';
|
|
4
4
|
import { BooleanInputConverter } from '../../decorators/input-converter';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -10,8 +10,7 @@ export const DEFAULT_INPUTS_O_FORM_CONTAINER = [
|
|
|
10
10
|
'form'
|
|
11
11
|
];
|
|
12
12
|
export class OFormContainerComponent {
|
|
13
|
-
constructor(
|
|
14
|
-
this.resolver = resolver;
|
|
13
|
+
constructor() {
|
|
15
14
|
this.breadcrumb = false;
|
|
16
15
|
this.breadcrumbSeparator = ' ';
|
|
17
16
|
}
|
|
@@ -26,14 +25,13 @@ export class OFormContainerComponent {
|
|
|
26
25
|
this.formMananger = form.getFormManager();
|
|
27
26
|
}
|
|
28
27
|
createBreadcrumb(container) {
|
|
29
|
-
const
|
|
30
|
-
const ref = container.createComponent(factory);
|
|
28
|
+
const ref = container.createComponent(OBreadcrumbComponent);
|
|
31
29
|
ref.instance.form = this.form;
|
|
32
30
|
ref.instance.labelColumns = this.breadcrumbLabelColumns;
|
|
33
31
|
ref.instance.separator = this.breadcrumbSeparator;
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
OFormContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormContainerComponent, deps: [
|
|
34
|
+
OFormContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
35
|
OFormContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormContainerComponent, selector: "o-form-container", inputs: { breadcrumb: "breadcrumb", breadcrumbSeparator: ["breadcrumb-separator", "breadcrumbSeparator"], breadcrumbLabelColumns: ["breadcrumb-label-columns", "breadcrumbLabelColumns"], form: "form" }, host: { properties: { "class.o-form-container": "true", "class.breadcrumb": "breadcrumb" } }, viewQueries: [{ propertyName: "breadContainer", first: true, predicate: ["breadcrumb"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"o-form-container-content\">\n <ng-template #breadcrumb></ng-template>\n <ng-content></ng-content>\n</div>", styles: [".application-layout-content-wrapper .o-form-container{position:relative;width:100%;height:100%;display:block}.application-layout-content-wrapper .o-form-container .o-form-container-content{display:flex;flex:auto;flex-direction:column;max-height:100%}.application-layout-content-wrapper .o-form-container .o-form-container-content>.o-breadcrumb{padding-left:8px;padding-right:8px}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
38
36
|
__decorate([
|
|
39
37
|
BooleanInputConverter(),
|
|
@@ -45,8 +43,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
45
43
|
'[class.o-form-container]': 'true',
|
|
46
44
|
'[class.breadcrumb]': 'breadcrumb'
|
|
47
45
|
}, template: "<div class=\"o-form-container-content\">\n <ng-template #breadcrumb></ng-template>\n <ng-content></ng-content>\n</div>", styles: [".application-layout-content-wrapper .o-form-container{position:relative;width:100%;height:100%;display:block}.application-layout-content-wrapper .o-form-container .o-form-container-content{display:flex;flex:auto;flex-direction:column;max-height:100%}.application-layout-content-wrapper .o-form-container .o-form-container-content>.o-breadcrumb{padding-left:8px;padding-right:8px}\n"] }]
|
|
48
|
-
}],
|
|
46
|
+
}], propDecorators: { breadContainer: [{
|
|
49
47
|
type: ViewChild,
|
|
50
48
|
args: ['breadcrumb', { read: ViewContainerRef }]
|
|
51
49
|
}], breadcrumb: [] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWNvbnRhaW5lci9vLWZvcm0tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udGFpbmVyL28tZm9ybS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJekUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUc7SUFFN0MsWUFBWTtJQUNaLDRDQUE0QztJQUM1QyxtREFBbUQ7SUFDbkQsTUFBTTtDQUNQLENBQUM7QUFhRixNQUFNLE9BQU8sdUJBQXVCO0lBWHBDO1FBZ0JFLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFckIsd0JBQW1CLEdBQVcsR0FBRyxDQUFDO0tBd0IxQztJQW5CQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUEyQjtRQUMxQyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDeEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BELENBQUM7O29IQTdCVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix5YkFFRCxnQkFBZ0IsNkJDM0JuRCwwSEFHTTtBRDBCSjtJQUFDLHFCQUFxQixFQUFFOzsyREFDSTsyRkFMakIsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNFLGtCQUFrQixVQUdwQiwrQkFBK0IsaUJBQ3hCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsb0JBQW9CLEVBQUUsWUFBWTtxQkFDbkM7OEJBSW9ELGNBQWM7c0JBQWxFLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUduRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9vLWJyZWFkY3J1bWIuY29tcG9uZW50JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9Gb3JtQmFzZSB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uLy4uL2xheW91dHMvZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19GT1JNX0NPTlRBSU5FUiA9IFtcbiAgLy8gYnJlYWRjcnVtYiBbYm9vbGVhbl06IHNob3cgYnJlYWRzY3J1bSBvZiB0aGUgZm9ybS4gRGVmYXVsdDogeWVzLlxuICAnYnJlYWRjcnVtYicsXG4gICdicmVhZGNydW1iU2VwYXJhdG9yIDogYnJlYWRjcnVtYi1zZXBhcmF0b3InLFxuICAnYnJlYWRjcnVtYkxhYmVsQ29sdW1ucyA6IGJyZWFkY3J1bWItbGFiZWwtY29sdW1ucycsXG4gICdmb3JtJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fRk9STV9DT05UQUlORVIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1jb250YWluZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuYnJlYWRjcnVtYl0nOiAnYnJlYWRjcnVtYidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRm9ybUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2JyZWFkY3J1bWInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgYnJlYWRDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGJyZWFkY3J1bWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGJyZWFkY3J1bWJMYWJlbENvbHVtbnM6IHN0cmluZztcbiAgcHVibGljIGJyZWFkY3J1bWJTZXBhcmF0b3I6IHN0cmluZyA9ICcgJztcblxuICBwcm90ZWN0ZWQgZm9ybTogT0Zvcm1CYXNlO1xuICBwcm90ZWN0ZWQgZm9ybU1hbmFuZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmJyZWFkY3J1bWIgPSB0aGlzLmJyZWFkY3J1bWIgJiYgdGhpcy5mb3JtICYmICF0aGlzLmZvcm1NYW5hbmdlcjtcbiAgICBpZiAodGhpcy5icmVhZGNydW1iKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIodGhpcy5icmVhZENvbnRhaW5lcik7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybShmb3JtOiBPRm9ybUJhc2UpIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIHRoaXMuZm9ybU1hbmFuZ2VyID0gZm9ybS5nZXRGb3JtTWFuYWdlcigpO1xuICB9XG5cbiAgY3JlYXRlQnJlYWRjcnVtYihjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBjb25zdCByZWYgPSBjb250YWluZXIuY3JlYXRlQ29tcG9uZW50KE9CcmVhZGNydW1iQ29tcG9uZW50KTtcbiAgICByZWYuaW5zdGFuY2UuZm9ybSA9IHRoaXMuZm9ybTtcbiAgICByZWYuaW5zdGFuY2UubGFiZWxDb2x1bW5zID0gdGhpcy5icmVhZGNydW1iTGFiZWxDb2x1bW5zO1xuICAgIHJlZi5pbnN0YW5jZS5zZXBhcmF0b3IgPSB0aGlzLmJyZWFkY3J1bWJTZXBhcmF0b3I7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tZm9ybS1jb250YWluZXItY29udGVudFwiPlxuICA8bmctdGVtcGxhdGUgI2JyZWFkY3J1bWI+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19
|
|
@@ -36,10 +36,9 @@ export * from './o-service-base-component.class';
|
|
|
36
36
|
export * from './o-service-component.class';
|
|
37
37
|
export * from './o-value-change-event.class';
|
|
38
38
|
export * from './table/index';
|
|
39
|
-
export * from './user-info/
|
|
40
|
-
export * from './user-info/o-user-info.module';
|
|
39
|
+
export * from './user-info/index';
|
|
41
40
|
export * from './dual-list-selector/index';
|
|
42
41
|
export * from './o-data-toolbar/index';
|
|
43
42
|
export * from './expandable-container/o-expandable-container.component';
|
|
44
43
|
export * from './expandable-container/o-expandable-container.module';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzREFBc0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLXNpZGVuYXYvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXItbWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi10b2dnbGUvby1idXR0b24tdG9nZ2xlLWdyb3VwL28tYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24vby1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uL28tYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbWVudS1pdGVtL28tY2FyZC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWl0ZW0vby1jYXJkLW1lbnUtaXRlbS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0bWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1idWlsZGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jb250YWluZXIvby1mb3JtLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNvbnRhaW5lci9vLWZvcm0tY29udGFpbmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL28taW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uvby1pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlLXNlbGVjdG9yL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc2VsZWN0b3Ivby1sYW5ndWFnZS1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbWF0ZXJpYWwvY2tlZGl0b3IvY2stZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGVyaWFsL2NrZWRpdG9yL2NrLWVkaXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXZhbHVlLWNoYW5nZS1ldmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHVhbC1saXN0LXNlbGVjdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vby1kYXRhLXRvb2xiYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGFuZGFibGUtY29udGFpbmVyL28tZXhwYW5kYWJsZS1jb250YWluZXIubW9kdWxlJztcbiJdfQ==
|
|
@@ -414,4 +414,4 @@ OServiceBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0",
|
|
|
414
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OServiceBaseComponent, decorators: [{
|
|
415
415
|
type: Directive
|
|
416
416
|
}] });
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUF1QyxNQUFNLDZDQUE2QyxDQUFDO0FBR2pJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV6RCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUVyRCxh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QU9WLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSw2QkFBa0U7O2tIQUFoRyxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgaXNEZXZNb2RlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPRXJyb3JEaWFsb2dNYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZXMvby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlLCBEZWZhdWx0U2VydmljZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVCA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogbGlzdCBpZGVudGlmaWVyLiBJdCBpcyBtYW5kYXRvcnkgaWYgZGF0YSBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgZGF0YSBhdHRyaWJ1dGUuIERlZmF1bHQ6IGVudGl0eSAoaWYgc2V0KS5cbiAgJ29hdHRyOiBhdHRyJyxcblxuICAvLyBzZXJ2aWNlIFtzdHJpbmddOiBKRUUgc2VydmljZSBwYXRoLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3NlcnZpY2UnLFxuXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBxdWVyeS1vbi1pbml0IFtub3x5ZXNdOiBxdWVyeSBvbiBpbml0LiBEZWZhdWx0OiB5ZXMuXG4gICdxdWVyeU9uSW5pdDogcXVlcnktb24taW5pdCcsXG5cbiAgLy8gcXVlcnktb24taW5pdCBbbm98eWVzXTogcXVlcnkgb24gYmluZC4gRGVmYXVsdDogeWVzLlxuICAncXVlcnlPbkJpbmQ6IHF1ZXJ5LW9uLWJpbmQnLFxuXG4gICdxdWVyeU9uRXZlbnQ6IHF1ZXJ5LW9uLWV2ZW50JyxcblxuICAncGFnZWFibGUnLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBzdGF0aWMtZGF0YSBbQXJyYXk8YW55Pl0gOiB3YXkgdG8gcG9wdWxhdGUgd2l0aCBzdGF0aWMgZGF0YS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzdGF0aWNEYXRhOiBzdGF0aWMtZGF0YScsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBwYWdpbmF0ZWQgcXVlcmllcy4gRGVmYXVsdDogYWR2YW5jZWRRdWVyeS5cbiAgJ3BhZ2luYXRlZFF1ZXJ5TWV0aG9kIDogcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcXVlcnktcm93cyBbbnVtYmVyXTogbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuIERlZmF1bHQ6IDEwLlxuICAnb1F1ZXJ5Um93czogcXVlcnktcm93cycsXG5cbiAgLy8gaW5zZXJ0LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBpbnNlcnRzLiBEZWZhdWx0OiBpbnNlcnQuXG4gICdpbnNlcnRNZXRob2Q6IGluc2VydC1tZXRob2QnLFxuXG4gIC8vIHVwZGF0ZS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gdXBkYXRlcy4gRGVmYXVsdDogdXBkYXRlLlxuICAndXBkYXRlTWV0aG9kOiB1cGRhdGUtbWV0aG9kJyxcblxuICAvLyBkZWxldGUtbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIGRlbGV0aW9ucy4gRGVmYXVsdDogZGVsZXRlLlxuICAnZGVsZXRlTWV0aG9kOiBkZWxldGUtbWV0aG9kJyxcblxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cyBbc3RyaW5nXVt5ZXN8bm98dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byB0cmlnZ2VyIHF1ZXJ5IG1ldGhvZCB3aGVuIHBhcmVudC1rZXlzIGZpbHRlciBpcyBudWxsLiBEZWZhdWx0OiBmYWxzZVxuICAncXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cycsXG5cbiAgLy8gW2Z1bmN0aW9uXTogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBxdWVyeSBlcnJvci4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWVyeUZhbGxiYWNrRnVuY3Rpb246IHF1ZXJ5LWZhbGxiYWNrLWZ1bmN0aW9uJ1xuICAvLyAsXG5cbiAgLy8gJ2luc2VydEZhbGxiYWNrRnVuY3Rpb246IGluc2VydC1mYWxsYmFjay1mdW5jdGlvbicsXG5cbiAgLy8gJ3VwZGF0ZUZhbGxiYWNrRnVuY3Rpb246IHVwZGF0ZS1mYWxsYmFjay1mdW5jdGlvbicsXG5cbiAgLy8gJ2RlbGV0ZUZhbGxiYWNrRnVuY3Rpb246IGRlbGV0ZS1mYWxsYmFjay1mdW5jdGlvbidcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9TZXJ2aWNlQmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2U8QWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcz4+IGltcGxlbWVudHMgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCwgT25DaGFuZ2VzIHtcblxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcbiAgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBUO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcbiAgcHJvdGVjdGVkIG9FcnJvckRpYWxvZ01hbmFnZXI6IE9FcnJvckRpYWxvZ01hbmFnZXI7XG5cbiAgLyogaW5wdXRzIHZhcmlhYmxlcyAqL1xuICBvYXR0cjogc3RyaW5nO1xuICBzZXJ2aWNlOiBzdHJpbmc7XG4gIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG4gIGVudGl0eTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlPbkJpbmQ6IGJvb2xlYW4gPSB0cnVlO1xuICBxdWVyeU9uRXZlbnQ6IGFueTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHBhZ2VhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGNvbHVtbnM6IHN0cmluZztcbiAga2V5czogc3RyaW5nO1xuICBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHN0YXRpY0RhdGE6IEFycmF5PGFueT47XG4gIHF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5RVUVSWV9NRVRIT0Q7XG4gIHBhZ2luYXRlZFF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5QQUdJTkFURURfUVVFUllfTUVUSE9EO1xuXG4gIG9yaWdpbmFsUXVlcnlSb3dzOiBudW1iZXIgPSBDb2Rlcy5ERUZBVUxUX1FVRVJZX1JPV1M7XG4gIHByb3RlY3RlZCBfcXVlcnlSb3dzID0gdGhpcy5vcmlnaW5hbFF1ZXJ5Um93cztcblxuICBzZXQgb1F1ZXJ5Um93cyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInID8gcGFyc2VJbnQodmFsdWUsIDEwKSA6IHZhbHVlO1xuICAgICAgdGhpcy5vcmlnaW5hbFF1ZXJ5Um93cyA9IHZhbHVlO1xuICAgICAgdGhpcy5fcXVlcnlSb3dzID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1ZXJ5Um93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVJvd3M7XG4gIH1cblxuICBzZXQgcXVlcnlSb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9xdWVyeVJvd3MgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgaW5zZXJ0TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5JTlNFUlRfTUVUSE9EO1xuICB1cGRhdGVNZXRob2Q6IHN0cmluZyA9IENvZGVzLlVQREFURV9NRVRIT0Q7XG4gIGRlbGV0ZU1ldGhvZDogc3RyaW5nID0gQ29kZXMuREVMRVRFX01FVEhPRDtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8vIGluc2VydEZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLy8gdXBkYXRlRmFsbGJhY2tGdW5jdGlvbjogKGVycjogYW55KSA9PiB2b2lkO1xuICAvLyBkZWxldGVGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8qIGVuZCBvZiBpbnB1dHMgdmFyaWFibGVzICovXG5cbiAgLyogcGFyc2VkIGlucHV0cyB2YXJpYWJsZXMgKi9cbiAgcHJvdGVjdGVkIGNvbEFycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByb3RlY3RlZCBrZXlzQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJvdGVjdGVkIF9wS2V5c0VxdWl2ID0ge307XG4gIGRhdGFBcnJheTogQXJyYXk8YW55PiA9IFtdO1xuICBwcm90ZWN0ZWQgb2F0dHJGcm9tRW50aXR5OiBib29sZWFuID0gZmFsc2U7XG4gIC8qIGVuZCBvZiBwYXJzZWQgaW5wdXRzIHZhcmlhYmxlcyAqL1xuXG4gIHByb3RlY3RlZCBvblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbjogYW55O1xuICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVN1YnNjcmliZTogYW55O1xuXG4gIHByb3RlY3RlZCBxdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCBmb3JtOiBPRm9ybUNvbXBvbmVudDtcbiAgcHVibGljIGV4cGFuZGFibGVDb250YWluZXI6IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgYWxyZWFkeVN0b3JlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBxdWVyeU9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZjsgLy8gYm9ycmFyXG4gIHByb3RlY3RlZCBxdWVyeUFyZ3VtZW50czogYW55W107XG5cbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xuXG4gIHByb3RlY3RlZCBzcWxUeXBlcyA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYWJvcnRRdWVyeTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxEaWFsb2dTZXJ2aWNlPihEaWFsb2dTZXJ2aWNlIGFzIFR5cGU8RGlhbG9nU2VydmljZT4pO1xuICAgIHRoaXMub0Vycm9yRGlhbG9nTWFuYWdlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9FcnJvckRpYWxvZ01hbmFnZXI+KE9FcnJvckRpYWxvZ01hbmFnZXIgYXMgVHlwZTxPRXJyb3JEaWFsb2dNYW5hZ2VyPik7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8TG9jYWxTdG9yYWdlU2VydmljZT4oTG9jYWxTdG9yYWdlU2VydmljZSBhcyBUeXBlPExvY2FsU3RvcmFnZVNlcnZpY2U+KTtcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFQ+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8VD4pO1xuICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIgYXMgVHlwZTxSb3V0ZXI+KTtcbiAgICB0aGlzLmFjdFJvdXRlID0gdGhpcy5pbmplY3Rvci5nZXQ8QWN0aXZhdGVkUm91dGU+KEFjdGl2YXRlZFJvdXRlIGFzIFR5cGU8QWN0aXZhdGVkUm91dGU+KTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5jZCA9IHRoaXMuaW5qZWN0b3IuZ2V0PENoYW5nZURldGVjdG9yUmVmPihDaGFuZ2VEZXRlY3RvclJlZiBhcyBUeXBlPENoYW5nZURldGVjdG9yUmVmPik7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUNvbXBvbmVudD4oT0Zvcm1Db21wb25lbnQgYXMgVHlwZTxPRm9ybUNvbXBvbmVudD4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vIHBhcmVudCBmb3JtXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmV4cGFuZGFibGVDb250YWluZXIgPSB0aGlzLmluamVjdG9yLmdldDxPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudD4oT0V4cGFuZGFibGVDb250YWluZXJDb21wb25lbnQgYXMgVHlwZTxPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudD4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE5vIHBhcmVudCBPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudFxuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBBYnN0cmFjdFNlcnZpY2VDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5lbnRpdHkpKSB7XG4gICAgICB0aGlzLm9hdHRyID0gdGhpcy5lbnRpdHkucmVwbGFjZSgnLicsICdfJyk7XG4gICAgICB0aGlzLm9hdHRyRnJvbUVudGl0eSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMua2V5c0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMua2V5cyk7XG4gICAgdGhpcy5jaGVja0NvbHVtbnMoKTtcbiAgICBjb25zdCBwa0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucGFyZW50S2V5cyk7XG4gICAgdGhpcy5fcEtleXNFcXVpdiA9IFV0aWwucGFyc2VQYXJlbnRLZXlzRXF1aXZhbGVuY2VzKHBrQXJyYXksIENvZGVzLkNPTFVNTlNfQUxJQVNfU0VQQVJBVE9SKTtcblxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLmluaXRpYWxpemUodGhpcyk7XG5cbiAgICBpZiAodGhpcy5zdGF0aWNEYXRhKSB7XG4gICAgICB0aGlzLnF1ZXJ5T25CaW5kID0gZmFsc2U7XG4gICAgICB0aGlzLnF1ZXJ5T25Jbml0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNldERhdGFBcnJheSh0aGlzLnN0YXRpY0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVNlcnZpY2UpKSB7XG4gICAgICB0aGlzLnNldEZvcm1Db21wb25lbnQodGhpcy5mb3JtKTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeU9uRXZlbnQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlPbkV2ZW50LnN1YnNjcmliZSkpIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5T25FdmVudC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkgfHwgdGhpcy5xdWVyeVdpdGhOdWxsUGFyZW50S2V5cykge1xuICAgICAgICAgIHNlbGYucXVlcnlEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQ29sdW1ucygpIHtcbiAgICB0aGlzLmNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuY29sdW1ucywgdHJ1ZSk7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aGlzLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgSW4gdGhlIGNvbXBvbmVudCAnJHt0aGlzLm9hdHRyfScsIHRoZSBrZXkgJyR7a2V5fScgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBjb2x1bW5zIGRlZmluaXRpb24gYW5kIHNvbWUgZnVuY3Rpb25hbGl0aWVzIG1heSBub3Qgd29yayBjb3JyZWN0bHlgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVnaXN0ZXJMb2NhbFN0b3JhZ2VTZXJ2aWNlUm91dGVDaGFuZ2UoKTtcblxuICAgIHRoaXMuYWJvcnRRdWVyeS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGF0YShbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRm9ybURhdGFTdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMub25Gb3JtRGF0YVN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5xdWVyeVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucXVlcnlPbkV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNoYW5nZXMuc3RhdGljRGF0YSkpIHtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KGNoYW5nZXMuc3RhdGljRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbXSlcbiAgYmVmb3JldW5sb2FkSGFuZGxlcigpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICB9XG5cbiAgZ2V0QXR0cmlidXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub2F0dHI7XG4gIH1cblxuICBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoKTtcbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBnZXRLZXlzKCkge1xuICAgIHJldHVybiB0aGlzLmtleXNBcnJheTtcbiAgfVxuXG4gIGNvbmZpZ3VyZVNlcnZpY2UoKSB7XG4gICAgY29uc3QgY29uZmlndXJlU2VydmljZUFyZ3M6IE9Db25maWd1cmVTZXJ2aWNlQXJncyA9IHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsIGJhc2VTZXJ2aWNlOiBPbnRpbWl6ZVNlcnZpY2UsIGVudGl0eTogdGhpcy5lbnRpdHksIHNlcnZpY2U6IHRoaXMuc2VydmljZSwgc2VydmljZVR5cGU6IHRoaXMuc2VydmljZVR5cGUgfVxuICAgIHRoaXMuZGF0YVNlcnZpY2UgPSBVdGlsLmNvbmZpZ3VyZVNlcnZpY2UoY29uZmlndXJlU2VydmljZUFyZ3MpO1xuICB9XG5cbiAgZ2V0RGF0YUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFBcnJheTtcbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0FycmF5KGRhdGEpKSB7XG4gICAgICB0aGlzLmRhdGFBcnJheSA9IGRhdGE7XG4gICAgfSBlbHNlIGlmIChVdGlsLmlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICB0aGlzLmRhdGFBcnJheSA9IFtkYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgaGFzIHJlY2VpdmVkIG5vdCBzdXBwb3J0ZWQgc2VydmljZSBkYXRhLiBTdXBwb3J0ZWQgZGF0YSBhcmUgQXJyYXkgb3IgT2JqZWN0Jyk7XG4gICAgICB0aGlzLmRhdGFBcnJheSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtQ29tcG9uZW50KGZvcm06IE9Gb3JtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm0pKSB7XG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXJ5T25CaW5kKSB7XG4gICAgICB0aGlzLm9uRm9ybURhdGFTdWJzY3JpYmUgPSB0aGlzLmZvcm0ub25EYXRhTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnBhZ2VhYmxlID8gdGhpcy5yZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCkgOiB0aGlzLnJlbG9hZERhdGEoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmVudEtleXNGcm9tQ29udGV4dChwYXJlbnRLZXlzOiBvYmplY3QsIGNvbnRleHQ6IGFueSkge1xuICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICBjb25zdCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlID0gdGhpcy5yb3V0ZXIucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSAhPT0gJ2Fsd2F5cyc7XG4gICAgaWYgKGNvbnRleHQgaW5zdGFuY2VvZiBPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudCkge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRXhwYW5kYWJsZUNvbnRhaW5lcihwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRm9ybShwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICB9XG5cbiAgcHVibGljIHF1ZXJ5RGF0YShmaWx0ZXI/OiBhbnksIG92cnJBcmdzPzogT1F1ZXJ5RGF0YUFyZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBxdWVyeU1ldGhvZE5hbWUgPSB0aGlzLnBhZ2VhYmxlID8gdGhpcy5wYWdpbmF0ZWRRdWVyeU1ldGhvZCA6IHRoaXMucXVlcnlNZXRob2Q7XG4gICAgaWYgKCF0aGlzLmRhdGFTZXJ2aWNlIHx8ICEocXVlcnlNZXRob2ROYW1lIGluIHRoaXMuZGF0YVNlcnZpY2UpIHx8ICF0aGlzLmVudGl0eSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJQYXJlbnRLZXlzID0gdGhpcy5nZXRQYXJlbnRLZXlzVmFsdWVzKCk7XG4gICAgaWYgKCFTZXJ2aWNlVXRpbHMuZmlsdGVyQ29udGFpbnNBbGxQYXJlbnRLZXlzKGZpbHRlclBhcmVudEtleXMsIHRoaXMuX3BLZXlzRXF1aXYpICYmICF0aGlzLnF1ZXJ5V2l0aE51bGxQYXJlbnRLZXlzKSB7XG4gICAgICB0aGlzLnNldERhdGEoW10sIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMucXVlcnlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAvLyBlbnN1cmluZyBmYWxzZSB2YWx1ZVxuICAgICAgdGhpcy5hYm9ydFF1ZXJ5Lm5leHQoZmFsc2UpO1xuXG4gICAgICB0aGlzLnF1ZXJ5QXJndW1lbnRzID0gdGhpcy5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcblxuICAgICAgaWYgKHRoaXMuYWJvcnRRdWVyeS52YWx1ZSkge1xuICAgICAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA9IDA7XG4gICAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgICAgICAvKiogIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpIGlzIHVzZWQgdG8gdXBkYXRlIGxvYWRpbmdTdWJqZWN0IHZhbHVlICh0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7IGluIGxpbmUgMzc3KVxuICAgICAgICAgKiAgYmVmb3JlIHVzaW5nIHRoZSBuZXh0IGxpbmUgYW5kIHNvIHVwZGF0ZSB0aGUgb1RhYmxlRXhwYW5kZWRGb290ZXIgZGlyZWN0aXZlIGFuZCBkaXNwbGF5IHRoZSBtZXNzYWdlXG4gICAgICAgICAqIHRoYXQgdGhlcmUgYXJlIG5vIHJlc3VsdHMgd2hlbiB0aGUgcXVlcnkgaXMgYWJvcnRlZCovXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24gPSAodGhpcy5kYXRhU2VydmljZVtxdWVyeU1ldGhvZE5hbWVdLmFwcGx5KHRoaXMuZGF0YVNlcnZpY2UsIHRoaXMucXVlcnlBcmd1bWVudHMpIGFzIE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPilcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICB0aGlzLnNxbFR5cGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChVdGlsLmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgZGF0YSA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc3FsVHlwZXMgPSB7fTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgICAgICBkYXRhID0gVXRpbC5pc0FycmF5KGFyckRhdGEpID8gYXJyRGF0YSA6IFtdO1xuICAgICAgICAgICAgdGhpcy5zcWxUeXBlcyA9IHJlcy5zcWxUeXBlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkluZm8ocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNldERhdGEoZGF0YSwgdGhpcy5zcWxUeXBlcywgKG92cnJBcmdzICYmIG92cnJBcmdzLnJlcGxhY2UpKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24oZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyLm9wZW5FcnJvckRpYWxvZyhlcnIpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxvYWRzIHRoZSBjb21wb25lbnQgZGF0YSBhbmQgcmVzdGFydHMgdGhlIHBhZ2luYXRpb24uXG4gICAqL1xuICByZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RpbmcgdGhlIGdpdmVuIHJlY29yZCBrZXlzXG4gICAqIEBwYXJhbSBpdGVtIHJlY29yZCBvYmplY3RcbiAgICogQHJldHVybnMgb2JqZWN0IGNvbnRhaW5pbmcgaXRlbSBvYmplY3QgcHJvcGVydGllcyBjb250YWluZWQgaW4ga2V5c0FycmF5XG4gICAqL1xuICBleHRyYWN0S2V5c0Zyb21SZWNvcmQoaXRlbTogYW55KTogb2JqZWN0IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoVXRpbC5pc09iamVjdChpdGVtKSkge1xuICAgICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoaXRlbVtrZXldKSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gaXRlbVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZXNWYWx1ZXNUb1F1ZXJ5KCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29sQXJyYXk7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldFF1ZXJ5QXJndW1lbnRzKGZpbHRlcjogb2JqZWN0LCBvdnJyQXJncz86IE9RdWVyeURhdGFBcmdzKTogQXJyYXk8YW55PiB7XG4gICAgY29uc3QgY29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tcG9uZW50RmlsdGVyKGZpbHRlcik7XG4gICAgY29uc3QgcXVlcnlDb2xzID0gdGhpcy5nZXRBdHRyaWJ1dGVzVmFsdWVzVG9RdWVyeSgpO1xuICAgIGNvbnN0IHNxbFR5cGVzID0gKG92cnJBcmdzICYmIG92cnJBcmdzLmhhc093blByb3BlcnR5KCdzcWx0eXBlcycpKSA/IG92cnJBcmdzLnNxbHR5cGVzIDogdGhpcy5mb3JtID8gdGhpcy5mb3JtLmdldEF0dHJpYnV0ZXNTUUxUeXBlcygpIDoge307XG5cbiAgICBsZXQgcXVlcnlBcmd1bWVudHMgPSBbY29tcEZpbHRlciwgcXVlcnlDb2xzLCB0aGlzLmVudGl0eSwgc3FsVHlwZXNdO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBjb25zdCBxdWVyeU9mZnNldCA9IChvdnJyQXJncyAmJiBvdnJyQXJncy5oYXNPd25Qcm9wZXJ0eSgnb2Zmc2V0JykpID8gb3ZyckFyZ3Mub2Zmc2V0IDogdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldDtcbiAgICAgIGNvbnN0IHF1ZXJ5Um93c04gPSAob3ZyckFyZ3MgJiYgb3ZyckFyZ3MuaGFzT3duUHJvcGVydHkoJ2xlbmd0aCcpKSA/IG92cnJBcmdzLmxlbmd0aCA6IHRoaXMucXVlcnlSb3dzO1xuICAgICAgcXVlcnlBcmd1bWVudHMgPSBxdWVyeUFyZ3VtZW50cy5jb25jYXQoW3F1ZXJ5T2Zmc2V0LCBxdWVyeVJvd3NOLCB1bmRlZmluZWRdKTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5QXJndW1lbnRzO1xuICB9XG5cbiAgdXBkYXRlUGFnaW5hdGlvbkluZm8ocXVlcnlSZXM6IFNlcnZpY2VSZXNwb25zZSkge1xuICAgIGNvbnN0IHJlc3VsdEVuZEluZGV4ID0gcXVlcnlSZXMuc3RhcnRSZWNvcmRJbmRleCArIChxdWVyeVJlcy5kYXRhID8gcXVlcnlSZXMuZGF0YS5sZW5ndGggOiAwKTtcbiAgICBpZiAocXVlcnlSZXMuc3RhcnRSZWNvcmRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gcmVzdWx0RW5kSW5kZXg7XG4gICAgfVxuICAgIGlmIChxdWVyeVJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gcXVlcnlSZXMudG90YWxRdWVyeVJlY29yZHNOdW1iZXI7XG4gICAgfVxuICB9XG5cbiAgZ2V0VG90YWxSZWNvcmRzTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIpID8gdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENvbnRleHRDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kYWJsZUNvbnRhaW5lciB8fCB0aGlzLmZvcm07XG4gIH1cblxuICBnZXRDb21wb25lbnRGaWx0ZXIoZXhpc3RpbmdGaWx0ZXI6IGFueSA9IHt9KTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJQYXJlbnRLZXlzID0gdGhpcy5nZXRQYXJlbnRLZXlzRnJvbUNvbnRleHQodGhpcy5fcEtleXNFcXVpdiwgdGhpcy5nZXRDb250ZXh0Q29tcG9uZW50KCkpO1xuICAgIGV4aXN0aW5nRmlsdGVyID0gT2JqZWN0LmFzc2lnbihleGlzdGluZ0ZpbHRlciB8fCB7fSwgZmlsdGVyUGFyZW50S2V5cyk7XG4gICAgcmV0dXJuIGV4aXN0aW5nRmlsdGVyO1xuICB9XG5cbiAgZ2V0U3FsVHlwZXMoKSB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3FsVHlwZXMpID8gdGhpcy5zcWxUeXBlcyA6IHt9O1xuICB9XG5cbiAgZ2V0UGFyZW50S2V5c1ZhbHVlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0Q29tcG9uZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50S2V5c0Zyb21Db250ZXh0KHRoaXMuX3BLZXlzRXF1aXYsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVN0YXRlU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlICYmIHRoaXMuc3RvcmVTdGF0ZSAmJiAhdGhpcy5hbHJlYWR5U3RvcmVkKSB7XG4gICAgICB0aGlzLmFscmVhZHlTdG9yZWQgPSB0cnVlO1xuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZUNvbXBvbmVudFN0b3JhZ2UodGhpcywgdGhpcy5nZXRSb3V0ZUtleSgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGF0YShkYXRhOiBhbnksIHNxbFR5cGVzPzogYW55LCByZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vXG4gIH1cblxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0T1NlcnZpY2VCYXNlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RPU2VydmljZUJhc2VDb21wb25lbnQ8RGVmYXVsdFNlcnZpY2VDb21wb25lbnRTdGF0ZVNlcnZpY2U+IHtcblxufVxuXG4vKiBUaGlzIGNsYXNzIGlzIGJlaW5nIGRlZmluZWQgdG8gbWFudGFpbiB0aGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucywgdXNlIERlZmF1bHRPU2VydmljZUJhc2VDb21wb25lbnQqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgT1NlcnZpY2VCYXNlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RPU2VydmljZUJhc2VDb21wb25lbnQ8RGVmYXVsdFNlcnZpY2VDb21wb25lbnRTdGF0ZVNlcnZpY2U+IHtcblxufVxuIl19
|
|
417
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUF1QyxNQUFNLDZDQUE2QyxDQUFDO0FBR2pJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV6RCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUVyRCxh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QU9WLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSw2QkFBa0U7O2tIQUFoRyxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgaXNEZXZNb2RlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPRXJyb3JEaWFsb2dNYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZXMvby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlLCBEZWZhdWx0U2VydmljZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVCA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogbGlzdCBpZGVudGlmaWVyLiBJdCBpcyBtYW5kYXRvcnkgaWYgZGF0YSBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgZGF0YSBhdHRyaWJ1dGUuIERlZmF1bHQ6IGVudGl0eSAoaWYgc2V0KS5cbiAgJ29hdHRyOiBhdHRyJyxcblxuICAvLyBzZXJ2aWNlIFtzdHJpbmddOiBKRUUgc2VydmljZSBwYXRoLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3NlcnZpY2UnLFxuXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBxdWVyeS1vbi1pbml0IFtub3x5ZXNdOiBxdWVyeSBvbiBpbml0LiBEZWZhdWx0OiB5ZXMuXG4gICdxdWVyeU9uSW5pdDogcXVlcnktb24taW5pdCcsXG5cbiAgLy8gcXVlcnktb24taW5pdCBbbm98eWVzXTogcXVlcnkgb24gYmluZC4gRGVmYXVsdDogeWVzLlxuICAncXVlcnlPbkJpbmQ6IHF1ZXJ5LW9uLWJpbmQnLFxuXG4gICdxdWVyeU9uRXZlbnQ6IHF1ZXJ5LW9uLWV2ZW50JyxcblxuICAncGFnZWFibGUnLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBzdGF0aWMtZGF0YSBbQXJyYXk8YW55Pl0gOiB3YXkgdG8gcG9wdWxhdGUgd2l0aCBzdGF0aWMgZGF0YS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzdGF0aWNEYXRhOiBzdGF0aWMtZGF0YScsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBwYWdpbmF0ZWQgcXVlcmllcy4gRGVmYXVsdDogYWR2YW5jZWRRdWVyeS5cbiAgJ3BhZ2luYXRlZFF1ZXJ5TWV0aG9kIDogcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcXVlcnktcm93cyBbbnVtYmVyXTogbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuIERlZmF1bHQ6IDEwLlxuICAnb1F1ZXJ5Um93czogcXVlcnktcm93cycsXG5cbiAgLy8gaW5zZXJ0LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBpbnNlcnRzLiBEZWZhdWx0OiBpbnNlcnQuXG4gICdpbnNlcnRNZXRob2Q6IGluc2VydC1tZXRob2QnLFxuXG4gIC8vIHVwZGF0ZS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gdXBkYXRlcy4gRGVmYXVsdDogdXBkYXRlLlxuICAndXBkYXRlTWV0aG9kOiB1cGRhdGUtbWV0aG9kJyxcblxuICAvLyBkZWxldGUtbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIGRlbGV0aW9ucy4gRGVmYXVsdDogZGVsZXRlLlxuICAnZGVsZXRlTWV0aG9kOiBkZWxldGUtbWV0aG9kJyxcblxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cyBbc3RyaW5nXVt5ZXN8bm98dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byB0cmlnZ2VyIHF1ZXJ5IG1ldGhvZCB3aGVuIHBhcmVudC1rZXlzIGZpbHRlciBpcyBudWxsLiBEZWZhdWx0OiBmYWxzZVxuICAncXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cycsXG5cbiAgLy8gW2Z1bmN0aW9uXTogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBxdWVyeSBlcnJvci4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWVyeUZhbGxiYWNrRnVuY3Rpb246IHF1ZXJ5LWZhbGxiYWNrLWZ1bmN0aW9uJ1xuICAvLyAsXG5cbiAgLy8gJ2luc2VydEZhbGxiYWNrRnVuY3Rpb246IGluc2VydC1mYWxsYmFjay1mdW5jdGlvbicsXG5cbiAgLy8gJ3VwZGF0ZUZhbGxiYWNrRnVuY3Rpb246IHVwZGF0ZS1mYWxsYmFjay1mdW5jdGlvbicsXG5cbiAgLy8gJ2RlbGV0ZUZhbGxiYWNrRnVuY3Rpb246IGRlbGV0ZS1mYWxsYmFjay1mdW5jdGlvbidcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9TZXJ2aWNlQmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2U8QWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcz4+IGltcGxlbWVudHMgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCwgT25DaGFuZ2VzIHtcblxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcbiAgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBUO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcbiAgcHJvdGVjdGVkIG9FcnJvckRpYWxvZ01hbmFnZXI6IE9FcnJvckRpYWxvZ01hbmFnZXI7XG5cbiAgLyogaW5wdXRzIHZhcmlhYmxlcyAqL1xuICBvYXR0cjogc3RyaW5nO1xuICBzZXJ2aWNlOiBzdHJpbmc7XG4gIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG4gIGVudGl0eTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlPbkJpbmQ6IGJvb2xlYW4gPSB0cnVlO1xuICBxdWVyeU9uRXZlbnQ6IGFueTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHBhZ2VhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGNvbHVtbnM6IHN0cmluZztcbiAga2V5czogc3RyaW5nO1xuICBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHN0YXRpY0RhdGE6IEFycmF5PGFueT47XG4gIHF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5RVUVSWV9NRVRIT0Q7XG4gIHBhZ2luYXRlZFF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5QQUdJTkFURURfUVVFUllfTUVUSE9EO1xuXG4gIG9yaWdpbmFsUXVlcnlSb3dzOiBudW1iZXIgPSBDb2Rlcy5ERUZBVUxUX1FVRVJZX1JPV1M7XG4gIHByb3RlY3RlZCBfcXVlcnlSb3dzID0gdGhpcy5vcmlnaW5hbFF1ZXJ5Um93cztcblxuICBzZXQgb1F1ZXJ5Um93cyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInID8gcGFyc2VJbnQodmFsdWUsIDEwKSA6IHZhbHVlO1xuICAgICAgdGhpcy5vcmlnaW5hbFF1ZXJ5Um93cyA9IHZhbHVlO1xuICAgICAgdGhpcy5fcXVlcnlSb3dzID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1ZXJ5Um93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVJvd3M7XG4gIH1cblxuICBzZXQgcXVlcnlSb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9xdWVyeVJvd3MgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgaW5zZXJ0TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5JTlNFUlRfTUVUSE9EO1xuICB1cGRhdGVNZXRob2Q6IHN0cmluZyA9IENvZGVzLlVQREFURV9NRVRIT0Q7XG4gIGRlbGV0ZU1ldGhvZDogc3RyaW5nID0gQ29kZXMuREVMRVRFX01FVEhPRDtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8vIGluc2VydEZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLy8gdXBkYXRlRmFsbGJhY2tGdW5jdGlvbjogKGVycjogYW55KSA9PiB2b2lkO1xuICAvLyBkZWxldGVGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8qIGVuZCBvZiBpbnB1dHMgdmFyaWFibGVzICovXG5cbiAgLyogcGFyc2VkIGlucHV0cyB2YXJpYWJsZXMgKi9cbiAgcHJvdGVjdGVkIGNvbEFycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByb3RlY3RlZCBrZXlzQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJvdGVjdGVkIF9wS2V5c0VxdWl2ID0ge307XG4gIGRhdGFBcnJheTogQXJyYXk8YW55PiA9IFtdO1xuICBwcm90ZWN0ZWQgb2F0dHJGcm9tRW50aXR5OiBib29sZWFuID0gZmFsc2U7XG4gIC8qIGVuZCBvZiBwYXJzZWQgaW5wdXRzIHZhcmlhYmxlcyAqL1xuXG4gIHByb3RlY3RlZCBvblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbjogYW55O1xuICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVN1YnNjcmliZTogYW55O1xuXG4gIHByb3RlY3RlZCBxdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCBmb3JtOiBPRm9ybUNvbXBvbmVudDtcbiAgcHVibGljIGV4cGFuZGFibGVDb250YWluZXI6IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgYWxyZWFkeVN0b3JlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBxdWVyeU9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZjsgLy8gYm9ycmFyXG4gIHByb3RlY3RlZCBxdWVyeUFyZ3VtZW50czogYW55W107XG5cbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xuXG4gIHByb3RlY3RlZCBzcWxUeXBlcyA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYWJvcnRRdWVyeTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxEaWFsb2dTZXJ2aWNlPihEaWFsb2dTZXJ2aWNlIGFzIFR5cGU8RGlhbG9nU2VydmljZT4pO1xuICAgIHRoaXMub0Vycm9yRGlhbG9nTWFuYWdlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9FcnJvckRpYWxvZ01hbmFnZXI+KE9FcnJvckRpYWxvZ01hbmFnZXIgYXMgVHlwZTxPRXJyb3JEaWFsb2dNYW5hZ2VyPik7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8TG9jYWxTdG9yYWdlU2VydmljZT4oTG9jYWxTdG9yYWdlU2VydmljZSBhcyBUeXBlPExvY2FsU3RvcmFnZVNlcnZpY2U+KTtcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFQ+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8VD4pO1xuICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIgYXMgVHlwZTxSb3V0ZXI+KTtcbiAgICB0aGlzLmFjdFJvdXRlID0gdGhpcy5pbmplY3Rvci5nZXQ8QWN0aXZhdGVkUm91dGU+KEFjdGl2YXRlZFJvdXRlIGFzIFR5cGU8QWN0aXZhdGVkUm91dGU+KTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5jZCA9IHRoaXMuaW5qZWN0b3IuZ2V0PENoYW5nZURldGVjdG9yUmVmPihDaGFuZ2VEZXRlY3RvclJlZiBhcyBUeXBlPENoYW5nZURldGVjdG9yUmVmPik7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUNvbXBvbmVudD4oT0Zvcm1Db21wb25lbnQgYXMgVHlwZTxPRm9ybUNvbXBvbmVudD4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vIHBhcmVudCBmb3JtXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmV4cGFuZGFibGVDb250YWluZXIgPSB0aGlzLmluamVjdG9yLmdldDxPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudD4oT0V4cGFuZGFibGVDb250YWluZXJDb21wb25lbnQgYXMgVHlwZTxPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudD4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE5vIHBhcmVudCBPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudFxuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBBYnN0cmFjdFNlcnZpY2VDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5lbnRpdHkpKSB7XG4gICAgICB0aGlzLm9hdHRyID0gdGhpcy5lbnRpdHkucmVwbGFjZSgnLicsICdfJyk7XG4gICAgICB0aGlzLm9hdHRyRnJvbUVudGl0eSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMua2V5c0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMua2V5cyk7XG4gICAgdGhpcy5jaGVja0NvbHVtbnMoKTtcbiAgICBjb25zdCBwa0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucGFyZW50S2V5cyk7XG4gICAgdGhpcy5fcEtleXNFcXVpdiA9IFV0aWwucGFyc2VQYXJlbnRLZXlzRXF1aXZhbGVuY2VzKHBrQXJyYXksIENvZGVzLkNPTFVNTlNfQUxJQVNfU0VQQVJBVE9SKTtcblxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLmluaXRpYWxpemUodGhpcyk7XG5cbiAgICBpZiAodGhpcy5zdGF0aWNEYXRhKSB7XG4gICAgICB0aGlzLnF1ZXJ5T25CaW5kID0gZmFsc2U7XG4gICAgICB0aGlzLnF1ZXJ5T25Jbml0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNldERhdGFBcnJheSh0aGlzLnN0YXRpY0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVNlcnZpY2UpKSB7XG4gICAgICB0aGlzLnNldEZvcm1Db21wb25lbnQodGhpcy5mb3JtKTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeU9uRXZlbnQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlPbkV2ZW50LnN1YnNjcmliZSkpIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5T25FdmVudC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkgfHwgdGhpcy5xdWVyeVdpdGhOdWxsUGFyZW50S2V5cykge1xuICAgICAgICAgIHNlbGYucXVlcnlEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQ29sdW1ucygpIHtcbiAgICB0aGlzLmNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuY29sdW1ucywgdHJ1ZSk7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aGlzLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgSW4gdGhlIGNvbXBvbmVudCAnJHt0aGlzLm9hdHRyfScsIHRoZSBrZXkgJyR7a2V5fScgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBjb2x1bW5zIGRlZmluaXRpb24gYW5kIHNvbWUgZnVuY3Rpb25hbGl0aWVzIG1heSBub3Qgd29yayBjb3JyZWN0bHlgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVnaXN0ZXJMb2NhbFN0b3JhZ2VTZXJ2aWNlUm91dGVDaGFuZ2UoKTtcblxuICAgIHRoaXMuYWJvcnRRdWVyeS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGF0YShbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRm9ybURhdGFTdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMub25Gb3JtRGF0YVN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5xdWVyeVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucXVlcnlPbkV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNoYW5nZXMuc3RhdGljRGF0YSkpIHtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KGNoYW5nZXMuc3RhdGljRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbXSlcbiAgYmVmb3JldW5sb2FkSGFuZGxlcigpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICB9XG5cbiAgZ2V0QXR0cmlidXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub2F0dHI7XG4gIH1cblxuICBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoKTtcbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBnZXRLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzQXJyYXk7XG4gIH1cblxuICBjb25maWd1cmVTZXJ2aWNlKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3MgPSB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBiYXNlU2VydmljZTogT250aW1pemVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICB0aGlzLmRhdGFTZXJ2aWNlID0gVXRpbC5jb25maWd1cmVTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzKTtcbiAgfVxuXG4gIGdldERhdGFBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQXJyYXk7XG4gIH1cblxuICBzZXREYXRhQXJyYXkoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKFV0aWwuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBkYXRhO1xuICAgIH0gZWxzZSBpZiAoVXRpbC5pc09iamVjdChkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbZGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IGhhcyByZWNlaXZlZCBub3Qgc3VwcG9ydGVkIHNlcnZpY2UgZGF0YS4gU3VwcG9ydGVkIGRhdGEgYXJlIEFycmF5IG9yIE9iamVjdCcpO1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybUNvbXBvbmVudChmb3JtOiBPRm9ybUNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5mb3JtKSkge1xuICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVyeU9uQmluZCkge1xuICAgICAgdGhpcy5vbkZvcm1EYXRhU3Vic2NyaWJlID0gdGhpcy5mb3JtLm9uRGF0YUxvYWRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wYWdlYWJsZSA/IHRoaXMucmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydCgpIDogdGhpcy5yZWxvYWREYXRhKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJlbnRLZXlzRnJvbUNvbnRleHQocGFyZW50S2V5czogb2JqZWN0LCBjb250ZXh0OiBhbnkpIHtcbiAgICBsZXQgcmVzdWx0ID0ge307XG4gICAgY29uc3QgY2hlY2tSb3V0ZVBhcmFtc1JlY3Vyc2l2ZSA9IHRoaXMucm91dGVyLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3kgIT09ICdhbHdheXMnO1xuICAgIGlmIChjb250ZXh0IGluc3RhbmNlb2YgT0V4cGFuZGFibGVDb250YWluZXJDb21wb25lbnQpIHtcbiAgICAgIHJlc3VsdCA9IFNlcnZpY2VVdGlscy5nZXRQYXJlbnRLZXlzRnJvbUV4cGFuZGFibGVDb250YWluZXIocGFyZW50S2V5cywgY29udGV4dCwgdGhpcy5hY3RSb3V0ZSwgY2hlY2tSb3V0ZVBhcmFtc1JlY3Vyc2l2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IFNlcnZpY2VVdGlscy5nZXRQYXJlbnRLZXlzRnJvbUZvcm0ocGFyZW50S2V5cywgY29udGV4dCwgdGhpcy5hY3RSb3V0ZSwgY2hlY2tSb3V0ZVBhcmFtc1JlY3Vyc2l2ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG5cbiAgfVxuXG4gIHB1YmxpYyBxdWVyeURhdGEoZmlsdGVyPzogYW55LCBvdnJyQXJncz86IE9RdWVyeURhdGFBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgcXVlcnlNZXRob2ROYW1lID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucGFnaW5hdGVkUXVlcnlNZXRob2QgOiB0aGlzLnF1ZXJ5TWV0aG9kO1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSB8fCAhKHF1ZXJ5TWV0aG9kTmFtZSBpbiB0aGlzLmRhdGFTZXJ2aWNlKSB8fCAhdGhpcy5lbnRpdHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyUGFyZW50S2V5cyA9IHRoaXMuZ2V0UGFyZW50S2V5c1ZhbHVlcygpO1xuICAgIGlmICghU2VydmljZVV0aWxzLmZpbHRlckNvbnRhaW5zQWxsUGFyZW50S2V5cyhmaWx0ZXJQYXJlbnRLZXlzLCB0aGlzLl9wS2V5c0VxdWl2KSAmJiAhdGhpcy5xdWVyeVdpdGhOdWxsUGFyZW50S2V5cykge1xuICAgICAgdGhpcy5zZXREYXRhKFtdLCBbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcblxuICAgICAgLy8gZW5zdXJpbmcgZmFsc2UgdmFsdWVcbiAgICAgIHRoaXMuYWJvcnRRdWVyeS5uZXh0KGZhbHNlKTtcblxuICAgICAgdGhpcy5xdWVyeUFyZ3VtZW50cyA9IHRoaXMuZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyLCBvdnJyQXJncyk7XG5cbiAgICAgIGlmICh0aGlzLmFib3J0UXVlcnkudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgPSAwO1xuICAgICAgICB0aGlzLnNldERhdGEoW10sIFtdKTtcbiAgICAgICAgLyoqICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSBpcyB1c2VkIHRvIHVwZGF0ZSBsb2FkaW5nU3ViamVjdCB2YWx1ZSAodGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpOyBpbiBsaW5lIDM3NylcbiAgICAgICAgICogIGJlZm9yZSB1c2luZyB0aGUgbmV4dCBsaW5lIGFuZCBzbyB1cGRhdGUgdGhlIG9UYWJsZUV4cGFuZGVkRm9vdGVyIGRpcmVjdGl2ZSBhbmQgZGlzcGxheSB0aGUgbWVzc2FnZVxuICAgICAgICAgKiB0aGF0IHRoZXJlIGFyZSBubyByZXN1bHRzIHdoZW4gdGhlIHF1ZXJ5IGlzIGFib3J0ZWQqL1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uID0gKHRoaXMuZGF0YVNlcnZpY2VbcXVlcnlNZXRob2ROYW1lXS5hcHBseSh0aGlzLmRhdGFTZXJ2aWNlLCB0aGlzLnF1ZXJ5QXJndW1lbnRzKSBhcyBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZT4pXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgdGhpcy5zcWxUeXBlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoVXRpbC5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgIGRhdGEgPSByZXM7XG4gICAgICAgICAgICB0aGlzLnNxbFR5cGVzID0ge307XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyckRhdGEgPSAocmVzLmRhdGEgIT09IHVuZGVmaW5lZCkgPyByZXMuZGF0YSA6IFtdO1xuICAgICAgICAgICAgZGF0YSA9IFV0aWwuaXNBcnJheShhcnJEYXRhKSA/IGFyckRhdGEgOiBbXTtcbiAgICAgICAgICAgIHRoaXMuc3FsVHlwZXMgPSByZXMuc3FsVHlwZXM7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb25JbmZvKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZXREYXRhKGRhdGEsIHRoaXMuc3FsVHlwZXMsIChvdnJyQXJncyAmJiBvdnJyQXJncy5yZXBsYWNlKSk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnNldERhdGEoW10sIFtdKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnF1ZXJ5RmFsbGJhY2tGdW5jdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub0Vycm9yRGlhbG9nTWFuYWdlci5vcGVuRXJyb3JEaWFsb2coZXJyKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWxvYWREYXRhKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVsb2FkcyB0aGUgY29tcG9uZW50IGRhdGEgYW5kIHJlc3RhcnRzIHRoZSBwYWdpbmF0aW9uLlxuICAgKi9cbiAgcmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0aW5nIHRoZSBnaXZlbiByZWNvcmQga2V5c1xuICAgKiBAcGFyYW0gaXRlbSByZWNvcmQgb2JqZWN0XG4gICAqIEByZXR1cm5zIG9iamVjdCBjb250YWluaW5nIGl0ZW0gb2JqZWN0IHByb3BlcnRpZXMgY29udGFpbmVkIGluIGtleXNBcnJheVxuICAgKi9cbiAgZXh0cmFjdEtleXNGcm9tUmVjb3JkKGl0ZW06IGFueSk6IG9iamVjdCB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKFV0aWwuaXNPYmplY3QoaXRlbSkpIHtcbiAgICAgIHRoaXMua2V5c0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGl0ZW1ba2V5XSkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IGl0ZW1ba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVzVmFsdWVzVG9RdWVyeSgpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbEFycmF5O1xuICAgIHRoaXMua2V5c0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXI6IG9iamVjdCwgb3ZyckFyZ3M/OiBPUXVlcnlEYXRhQXJncyk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGNvbXBGaWx0ZXIgPSB0aGlzLmdldENvbXBvbmVudEZpbHRlcihmaWx0ZXIpO1xuICAgIGNvbnN0IHF1ZXJ5Q29scyA9IHRoaXMuZ2V0QXR0cmlidXRlc1ZhbHVlc1RvUXVlcnkoKTtcbiAgICBjb25zdCBzcWxUeXBlcyA9IChvdnJyQXJncyAmJiBvdnJyQXJncy5oYXNPd25Qcm9wZXJ0eSgnc3FsdHlwZXMnKSkgPyBvdnJyQXJncy5zcWx0eXBlcyA6IHRoaXMuZm9ybSA/IHRoaXMuZm9ybS5nZXRBdHRyaWJ1dGVzU1FMVHlwZXMoKSA6IHt9O1xuXG4gICAgbGV0IHF1ZXJ5QXJndW1lbnRzID0gW2NvbXBGaWx0ZXIsIHF1ZXJ5Q29scywgdGhpcy5lbnRpdHksIHNxbFR5cGVzXTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgY29uc3QgcXVlcnlPZmZzZXQgPSAob3ZyckFyZ3MgJiYgb3ZyckFyZ3MuaGFzT3duUHJvcGVydHkoJ29mZnNldCcpKSA/IG92cnJBcmdzLm9mZnNldCA6IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQ7XG4gICAgICBjb25zdCBxdWVyeVJvd3NOID0gKG92cnJBcmdzICYmIG92cnJBcmdzLmhhc093blByb3BlcnR5KCdsZW5ndGgnKSkgPyBvdnJyQXJncy5sZW5ndGggOiB0aGlzLnF1ZXJ5Um93cztcbiAgICAgIHF1ZXJ5QXJndW1lbnRzID0gcXVlcnlBcmd1bWVudHMuY29uY2F0KFtxdWVyeU9mZnNldCwgcXVlcnlSb3dzTiwgdW5kZWZpbmVkXSk7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeUFyZ3VtZW50cztcbiAgfVxuXG4gIHVwZGF0ZVBhZ2luYXRpb25JbmZvKHF1ZXJ5UmVzOiBTZXJ2aWNlUmVzcG9uc2UpIHtcbiAgICBjb25zdCByZXN1bHRFbmRJbmRleCA9IHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggKyAocXVlcnlSZXMuZGF0YSA/IHF1ZXJ5UmVzLmRhdGEubGVuZ3RoIDogMCk7XG4gICAgaWYgKHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IHJlc3VsdEVuZEluZGV4O1xuICAgIH1cbiAgICBpZiAocXVlcnlSZXMudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA9IHF1ZXJ5UmVzLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyO1xuICAgIH1cbiAgfVxuXG4gIGdldFRvdGFsUmVjb3Jkc051bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyKSA/IHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRDb250ZXh0Q29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGFibGVDb250YWluZXIgfHwgdGhpcy5mb3JtO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50RmlsdGVyKGV4aXN0aW5nRmlsdGVyOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgY29uc3QgZmlsdGVyUGFyZW50S2V5cyA9IHRoaXMuZ2V0UGFyZW50S2V5c0Zyb21Db250ZXh0KHRoaXMuX3BLZXlzRXF1aXYsIHRoaXMuZ2V0Q29udGV4dENvbXBvbmVudCgpKTtcbiAgICBleGlzdGluZ0ZpbHRlciA9IE9iamVjdC5hc3NpZ24oZXhpc3RpbmdGaWx0ZXIgfHwge30sIGZpbHRlclBhcmVudEtleXMpO1xuICAgIHJldHVybiBleGlzdGluZ0ZpbHRlcjtcbiAgfVxuXG4gIGdldFNxbFR5cGVzKCkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLnNxbFR5cGVzKSA/IHRoaXMuc3FsVHlwZXMgOiB7fTtcbiAgfVxuXG4gIGdldFBhcmVudEtleXNWYWx1ZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dENvbXBvbmVudCgpO1xuICAgIHJldHVybiB0aGlzLmdldFBhcmVudEtleXNGcm9tQ29udGV4dCh0aGlzLl9wS2V5c0VxdWl2LCBjb250ZXh0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVTdGF0ZVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSAmJiB0aGlzLnN0b3JlU3RhdGUgJiYgIXRoaXMuYWxyZWFkeVN0b3JlZCkge1xuICAgICAgdGhpcy5hbHJlYWR5U3RvcmVkID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS51cGRhdGVDb21wb25lbnRTdG9yYWdlKHRoaXMsIHRoaXMuZ2V0Um91dGVLZXkoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldERhdGEoZGF0YTogYW55LCBzcWxUeXBlcz86IGFueSwgcmVwbGFjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvL1xuICB9XG5cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJMb2NhbFN0b3JhZ2VTZXJ2aWNlUm91dGVDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbiA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdE9TZXJ2aWNlQmFzZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PERlZmF1bHRTZXJ2aWNlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiB7XG5cbn1cblxuLyogVGhpcyBjbGFzcyBpcyBiZWluZyBkZWZpbmVkIHRvIG1hbnRhaW4gdGhlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMsIHVzZSBEZWZhdWx0T1NlcnZpY2VCYXNlQ29tcG9uZW50Ki9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE9TZXJ2aWNlQmFzZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PERlZmF1bHRTZXJ2aWNlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiB7XG5cbn1cbiJdfQ==
|