@churchillliving/se-ui-toolkit 6.54.296 → 6.54.297
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.
|
@@ -222,11 +222,11 @@ export class SidebarComponent {
|
|
|
222
222
|
}
|
|
223
223
|
// apply user role permissions
|
|
224
224
|
applyUserPermissions() {
|
|
225
|
-
if (this.sidebarItemsList) {
|
|
225
|
+
if (this.sidebarItemsList && this.sidebarItemsList.length > 0) {
|
|
226
226
|
let totalItems = 0;
|
|
227
227
|
let hiddenItems = 0;
|
|
228
228
|
this.sidebarItemsList.forEach((item, index) => {
|
|
229
|
-
let permissions = item
|
|
229
|
+
let permissions = item?.permissions;
|
|
230
230
|
let hasValidEditPermission = false;
|
|
231
231
|
item.id = index.toString();
|
|
232
232
|
if (permissions && permissions.length > 0) {
|
|
@@ -404,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
404
404
|
}], sidebarItems: [{
|
|
405
405
|
type: Input
|
|
406
406
|
}] } });
|
|
407
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFJdEYsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0QyxPQUFPLEtBQUssU0FBUyxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixJQUFhLGNBQWMsQ0FBQyxHQUFRO1FBQ2xDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtZQUNoQixRQUFRLENBQUM7U0FDVjtJQUNILENBQUM7SUFDRCxJQUFhLFlBQVksQ0FBQyxlQUFvQjtRQUM1QyxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLFdBQVcsR0FBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO2dCQUM1QixlQUFlLENB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Q0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztxQkFDSDt5QkFBTTt3QkFDTCxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMzQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2lJQWphVSxnQkFBZ0I7cUhBQWhCLGdCQUFnQix1T0N4QjdCLHd0QkFxQk87OzJGREdNLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxZQUFZO3FYQVViLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBS08sWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkluaXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2lkZWJhckFjdGlvbiwgSVNpZGViYXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2lkZWJhci5tb2RlbCc7XG5pbXBvcnQgeyBFUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVDb21wb25lbnQgfSBmcm9tICcuLi9pZnJhbWUvaWZyYW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IGRyYWdnYWJsZURpYWxvZyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSwgU2lkZUJhclNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9wdWJsaWMtYXBpJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgdG9nZ2xlTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIGxvYWRDb21wb25lbnROYW1lID0gJyc7XG4gIGdsb2JhbExpc3RlbkZ1bmM6IEZ1bmN0aW9uO1xuICBkaWFsb2dSZWY6IGFueTtcbiAgZm9ybTogSUR5bmFtaWNGb3JtO1xuICBASW5wdXQoKSBuYXZIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29sbGFwc2VTaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lbnVUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUodmFsOiBhbnkpIHtcbiAgICBpZiAodmFsID09PSB0cnVlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpZGViYXJJdGVtcyhuZXdTaWRlYmFySXRlbXM6IGFueSkge1xuICAgIGlmIChuZXdTaWRlYmFySXRlbXMpIHtcbiAgICAgIGxldCBsZWZ0U2lkZUJhcjogYW55W10gPSBbXTtcbiAgICAgIGlmIChuZXdTaWRlYmFySXRlbXMuZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IG5ld1NpZGViYXJJdGVtcztcbiAgICAgICAgbmV3U2lkZWJhckl0ZW1zLmZvcm1TZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbj8uaWNvbikge1xuICAgICAgICAgICAgbGVmdFNpZGVCYXIucHVzaCh7XG4gICAgICAgICAgICAgIGljb246IHNlY3Rpb24/Lmljb24sXG4gICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24/LmNsYXNzLFxuICAgICAgICAgICAgICB0b29sdGlwOiBzZWN0aW9uPy5uYW1lLFxuICAgICAgICAgICAgICBhY3Rpb246IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04sXG4gICAgICAgICAgICAgIGhpZGRlbjogc2VjdGlvbj8uaGlkZGVuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdCA9XG4gICAgICAgIGxlZnRTaWRlQmFyPy5sZW5ndGggPiAwID8gbGVmdFNpZGVCYXIgOiBuZXdTaWRlYmFySXRlbXM7XG4gICAgICB0aGlzLmluaXRpYWxpemVTaWRlQmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNpZGViYXJJdGVtc0xpc3Q6IElTaWRlYmFyW10gPSBbXTtcbiAgcHVibGljIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICByb2xlczogc3RyaW5nW10gPSBbXTtcbiAgaXNTaWRlYmFySGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTGVmdFNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluc3RhbmNlOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwYWdlTG9nZ2VyU2VydmljZTogUGFnZUxvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcblxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVNZW51ID0gdGhpcy5jb2xsYXBzZVNpZGViYXI7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvU2VjdGlvbigpO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBzZWN0aW9uTmFtZTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBpZiAocGFnZVVybC5pbmNsdWRlcygnc2VjdGlvbj0nKSkge1xuICAgICAgcGFnZVVybCA9IHBhZ2VVcmwuc3BsaXQoJ3NlY3Rpb249JylbMV07XG4gICAgICBzZWN0aW9uTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWdlVXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwICYmIHNlY3Rpb25OYW1lKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5mb3JtU2VjdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAoc2VjdGlvbikgPT4gc2VjdGlvbi5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWN0aW9uTmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCA+IC0xICYmIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnNbaW5kZXhdPy5jbGFzcykge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zW2luZGV4XS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluc3RhbmNlXG4gICAgICAgICAgICA/LnNlbGVjdFJvb3RFbGVtZW50KFxuICAgICAgICAgICAgICBgLiR7dGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0uY2xhc3M/LnJlcGxhY2UoL1xccy9nLCAnJyl9YCxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGluaXRpYWxpemVTaWRlQmFyKCkge1xuICAgIHRoaXMucm9sZXMgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJSb2xlcygpO1xuICAgIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICAgIGxldCBmb3JtU2VjdGlvbk5hbWVzO1xuICAgIGlmICh0aGlzLmZvcm0/LmZvcm1TZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGZvcm1TZWN0aW9uTmFtZXMgPSB0aGlzLmZvcm0/LmZvcm1TZWN0aW9ucy5tYXAoKHNlYykgPT4gc2VjLm5hbWUpO1xuICAgICAgdGhpcy5pc0xlZnRTaWRlYmFyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5hcHBseVVzZXJQZXJtaXNzaW9ucygpO1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0Lm1hcCgoeDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgbGFiZWw6IGZvcm1TZWN0aW9uTmFtZXMgPyBmb3JtU2VjdGlvbk5hbWVzW2luZGV4XSA6IHgubGFiZWwsXG4gICAgICBpY29uOiB4Lmljb24sXG4gICAgICBpZDogeC5pZCxcbiAgICAgIHNlY3Rpb246IHguc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiB4LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiB4LmFjdGlvbixcbiAgICAgIGl0ZW1zOiB4Lml0ZW1zICYmIHguaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuc2V0TWVudUl0ZW1zKHgpIDogW10sXG4gICAgICB0aXRsZTogdGhpcy5zZXRNZW51VGl0bGUoeCksXG4gICAgICBjb21tYW5kOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04pIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9TZWN0aW9uKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5PUEVORElBTE9HKSB7XG4gICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHgsIGV2ZW50Lml0ZW0sIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdHJsS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uSUZSQU1FKSB7XG4gICAgICAgICAgdGhpcy5sb2FkSUZyYW1lKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5TUExJVFNDUkVFTikge1xuICAgICAgICAgIHRoaXMubG9hZFBhbmUoeCwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGV2ZW50Lml0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogeC5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiB4Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogeC5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiB4LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgfVxuICBsb2FkUGFuZShtZW51OiBhbnksIGl0ZW06IGFueSkge1xuICAgbWVudS5vcmlnQ29tcG9uZW50ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQ7XG4gICB1dGlsaXRpZXMuY2hhbmdlU3BsaXRTY3JlZW4obWVudSk7XG4gIH1cblxuICBzZXRNZW51VGl0bGUoeDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4geC50b29sdGlwID8geC50b29sdGlwIDogIXgubGFiZWwgPyB4LnNlY3Rpb24gOiAnJztcbiAgfVxuXG4gIHNldE1lbnVJdGVtcyh4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB4Lml0ZW1zLm1hcCgobWVudTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IG1lbnUubGFiZWwsXG4gICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICBpZDogbWVudS5pZCxcbiAgICAgIHNlY3Rpb246IG1lbnUuc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiBtZW51LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiBtZW51LmFjdGlvbixcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uTkFWSUdBVElPTikge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1NlY3Rpb24obWVudSwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5EaWFsb2cobWVudSwgZXZlbnQuaXRlbSwgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN0cmxLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1lbnUuYWN0aW9uICYmIG1lbnUuYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5JRlJBTUUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWUobWVudSwgeCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLlNQTElUU0NSRUVOKSB7XG4gICAgICAgICAgdGhpcy5sb2FkUGFuZShtZW51LCB4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oZXZlbnQuaXRlbSk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogbWVudS5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBtZW51Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogbWVudS5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiBtZW51LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgfVxuXG4gIGxvYWRJRnJhbWUobWVudTogYW55LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAobWVudS5pRnJhbWUubGlua0lkKSB7XG4gICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwobWVudS5pRnJhbWUubGlua0lkKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybChcbiAgICAgICAgICAgIG1lbnU/LnBhcmFtcyxcbiAgICAgICAgICAgIHJlc1swXVxuICAgICAgICAgICk7XG4gICAgICAgICAgbWVudS5pRnJhbWVbJ2xpbmsnXSA9IG9yaWdpbmFsVXJsO1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZURhdGEobWVudSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ05vIExpbmsgRm91bmQgQWdhaW5zdCB0aGlzIGxpbmtJZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkSUZyYW1lRGF0YShtZW51LCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICBsb2FkSUZyYW1lRGF0YShtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KSB7XG4gICAgaWYgKG1lbnUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKElmcmFtZUNvbXBvbmVudCwge1xuICAgICAgICBoZWFkZXI6IG1lbnVbJ2RhdGEnXT8uaGVhZGVyID8gbWVudVsnZGF0YSddPy5oZWFkZXIgOiBtZW51LnNlY3Rpb24sXG4gICAgICAgIHdpZHRoOiBtZW51LmlGcmFtZT8ud2lkdGggPyBtZW51LmlGcmFtZS53aWR0aCA6ICc5MCUnLFxuICAgICAgICBoZWlnaHQ6IG1lbnUuaUZyYW1lPy5oZWlnaHQgPyBtZW51LmlGcmFtZS5oZWlnaHQgOiAnODAlJyxcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogbWVudS5pRnJhbWU/LmxpbmssIGlGcmFtZUlkOiBtZW51LnNlY3Rpb24gfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZXREeW5hbWljRGlhbG9nUmVmKGRpYWxvZ1JlZik7XG4gICAgICB0aGlzLnBhZ2VMb2dnZXJTZXJ2aWNlLnNhdmVQYWdlTG9nZ2VySW5mbyhcbiAgICAgICAgdGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSksXG4gICAgICAgICdJZnJhbWVDb21wb25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGRyYWdnYWJsZURpYWxvZyhtZW51LmxhYmVsKTtcbiAgICAgICAgfSk7XG4gICAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2lkZWJhcigpIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUgPSAhdGhpcy50b2dnbGVNZW51O1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2dnbGVNZW51JywgSlNPTi5zdHJpbmdpZnkodGhpcy50b2dnbGVNZW51KSk7XG4gIH1cblxuICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgYXBwbHlVc2VyUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2lkZWJhckl0ZW1zTGlzdCkge1xuICAgICAgbGV0IHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuSXRlbXM6IG51bWJlciA9IDA7XG5cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgcGVybWlzc2lvbnM6IGFueSA9IGl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIGxldCBoYXNWYWxpZEVkaXRQZXJtaXNzaW9uID0gZmFsc2U7XG5cbiAgICAgICAgaXRlbS5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucyAmJiBwZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaCgocGVybWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ucm9sZXMgJiYgcGVybWlzc2lvbi5yb2xlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24ucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMucm9sZXMgJiYgdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbi50eXBlID09PSBFUGVybWlzc2lvblR5cGUuVklFVyAmJlxuICAgICAgICAgICAgICAgICFoYXNWYWxpZEVkaXRQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5FRElUKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbEl0ZW1zKys7XG5cbiAgICAgICAgaWYgKGl0ZW0uaGlkZGVuKSB7XG4gICAgICAgICAgaGlkZGVuSXRlbXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNTaWRlYmFySGlkZGVuID0gdG90YWxJdGVtcyA+IDAgJiYgdG90YWxJdGVtcyA9PT0gaGlkZGVuSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEAgcGFyYW0gbWVudVxuICAgKiBAIHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBzaWRlYmFyIGFycmF5IHRvIGNvbnRhaW4gYWxsIElTaWRlYmFyIHByb3BlcnR5IGxpa2VcbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cblxuICBvcGVuRGlhbG9nKG1lbnU6IElTaWRlYmFyLCBpdGVtOiBhbnksIGNvbnRyb2xLZXkpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51RGF0YTogYW55ID0gbWVudS5kYXRhPy5kYXRhID8gbWVudS5kYXRhLmRhdGEgOiB7fTtcbiAgICBpZiAoKGNvbnRyb2xLZXkgJiYgbWVudS5jb21wb25lbnQpIHx8IG1lbnUub3BlbkluTmV3VGFiKSB7XG4gICAgICAvL29wZW4gY29tcG9uZW50IG9uIG5ldyB0YWJcbiAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZS5vcGVuRGlhbG9nSW5OZXdUYWIobWVudS5jb21wb25lbnQsIG1lbnVEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuQ29tcG9uZW50SW5EaWFsb2cobWVudSwgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IGRpYWxvZyByZWYgd2hlbiBwb3B1cCBvcGVuXG4gIHNldER5bmFtaWNEaWFsb2dSZWYocmVmKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5nZXQocmVmKTtcbiAgICBjb25zdCBkeW5hbWljQ29tcG9uZW50ID0gZGlhbG9nUmVmPy5pbnN0YW5jZSBhcyBEeW5hbWljRGlhbG9nQ29tcG9uZW50O1xuICAgIGNvbnN0IGFyaWFMYWJlbGxlZEJ5ID0gZHluYW1pY0NvbXBvbmVudC5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuICAgIGR5bmFtaWNDb21wb25lbnQuZ2V0QXJpYUxhYmVsbGVkQnkgPSAoKSA9PiBhcmlhTGFiZWxsZWRCeTtcbiAgfVxuXG4gIGludGVyY2VwdERpYWxvZ0Nsb3NlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5ncmlkU2VydmljZS5jb2x1bW5Gb2N1c2VkT3V0IHx8IHRoaXMuZm9ybVNlcnZpY2UuZmllbGRGb2N1c2VkT3V0KSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNvbmZpcm0oXG4gICAgICAgICAgJ1lvdSB3aWxsIGxvc2UgY2hhbmdlcyBub3Qgc2F2ZWQgb24gcGFnZS4gV291bGQgeW91IGxpa2UgdG8gY29udGludWU/J1xuICAgICAgICApID09IHRydWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuY29sdW1uRm9jdXNlZE91dCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZpZWxkRm9jdXNlZE91dCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkNvbXBvbmVudEluRGlhbG9nKG1lbnU6IElTaWRlYmFyLCBpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBtZW51RGF0YTogYW55ID0gbWVudS5kYXRhID8gbWVudS5kYXRhIDogbWVudTtcbiAgICBtZW51RGF0YS5zdHlsZSA9IHsgYmFja2dyb3VuZDogJyNmZmYnIH07XG4gICAgaWYgKG1lbnVEYXRhLnNjcm9sbGFibGUgPT0gZmFsc2UpIHtcbiAgICAgIG1lbnVEYXRhLnN0eWxlQ2xhc3MgPSAnc21hbGwtbW9kZWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZW51RGF0YS5zdHlsZUNsYXNzID0gJ3NpZGViYXItZGF0ZXBpY2tlcic7XG4gICAgfVxuICAgIGlmIChtZW51LmNvbXBvbmVudCkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihtZW51LmNvbXBvbmVudCwgbWVudURhdGEpO1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UgPSB0aGlzLmludGVyY2VwdERpYWxvZ0Nsb3NlLmJpbmQodGhpcyk7XG4gICAgICB0aGlzLnNldER5bmFtaWNEaWFsb2dSZWYodGhpcy5kaWFsb2dSZWYpO1xuICAgICAgdGhpcy5wYWdlTG9nZ2VyU2VydmljZS5zYXZlUGFnZUxvZ2dlckluZm8oXG4gICAgICAgIHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpLFxuICAgICAgICBtZW51LmNvbXBvbmVudD8ubmFtZVxuICAgICAgKTtcbiAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZHJhZ2dhYmxlRGlhbG9nKG1lbnUubGFiZWwpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgaWYgKGRhdGEgJiYgbWVudS5vblJldHVybikge1xuICAgICAgICAgIG1lbnUub25SZXR1cm4oZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAIHBhcmFtIHhcbiAgICogQCBwYXJhbSBpdGVtXG4gICAqIFBhc3NlcyB0aGUgc2lkZWJhciBhcnJheSB0byBjb250YWluIGFsbCBJU2lkZWJhciBwcm9wZXJ0eSBsaWtlXG4gICAqIFBhc3NlcyB0aGUgZXZlbnQgb2YgdGhlIG1lbnVcbiAgICovXG5cbiAgbmF2aWdhdGVUb1NlY3Rpb24oeDogSVNpZGViYXIsIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLmZvcm1TZWN0aW9ucz8ubGVuZ3RoID4gMCAmJiB4LnNlY3Rpb24pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3JtLmZvcm1TZWN0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmNsYXNzICYmIHNlY3Rpb24uY2xhc3MgPT09IHguc2VjdGlvblxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnNbaW5kZXhdLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pbnN0YW5jZVxuICAgICAgPy5zZWxlY3RSb290RWxlbWVudChgLiR7eC5zZWN0aW9uPy5yZXBsYWNlKC9cXHMvZywgJycpfWAsIHRydWUpXG4gICAgICA/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuICBoYW5kbGVBY3RpdmVJdGVtKHsgaWNvbiB9OiBhbnksIGNsb3NlRGlhbG9nOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5tZW51SXRlbXMubWFwKCh4KSA9PlxuICAgICAgeC5pY29uID09PSBpY29uICYmIGNsb3NlRGlhbG9nXG4gICAgICAgID8geyAuLi54LCBzdHlsZUNsYXNzOiAnYWN0aXZlLWljb24nIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgc3R5bGVDbGFzczogJycsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2U5ZWNlZicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IHguc3R5bGU/LmRpc3BsYXkgPT09ICdub25lJyA/ICdub25lJyA6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNsaWNrZWRNZW51KG1lbnU6IE1lbnVJdGVtW10pIHtcbiAgICBtZW51Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkSXRlbTogYW55ID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0LmZpbmQoXG4gICAgICAgICh4KSA9PiB4LmlkID09IGl0ZW0uaWRcbiAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW0uc3R5bGVDbGFzcyA9PT0gJ2FjdGl2ZS1pY29uJyAmJlxuICAgICAgICBtYXRjaGVkSXRlbSAmJlxuICAgICAgICBtYXRjaGVkSXRlbS5vbkNsaWNrXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlXG4gICAgICAgICAgLmFkZEh5cGVybGlua3MobWF0Y2hlZEl0ZW0pXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkSXRlbS5saW5rSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFNpZGViYXJMaW5rKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWF0Y2hlZEl0ZW0ub25DbGljayhpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufSIsIjxzcGFuXG4gICpuZ0lmPVwiIWlzU2lkZWJhckhpZGRlbiAmJiBzaWRlYmFySXRlbXNMaXN0ICYmIHNpZGViYXJJdGVtc0xpc3QubGVuZ3RoID4gMFwiXG4+XG48c3BhbiAqbmdJZj1cIiFuYXZIaWRkZW5cIj5cbiAgPG5hdlxuICBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLWxnIHAtMCBncm93LTFcIlxuICBbbmdDbGFzc109XCJ0b2dnbGVNZW51ID8gJ2hpZGUtbmF2JyA6ICcnXCJcbiAgPlxuICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJwaSBwaS1mdyB0b2dnbGUtaWNvblwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwaS1jaGV2cm9uLWxlZnQnOiAodG9nZ2xlTWVudSAmJiAhaXNMZWZ0U2lkZWJhcikgfHwgKCF0b2dnbGVNZW51ICYmIGlzTGVmdFNpZGViYXIpLFxuICAgICAgICAncGktY2hldnJvbi1yaWdodCc6ICghdG9nZ2xlTWVudSAmJiAhaXNMZWZ0U2lkZWJhcikgfHwgKHRvZ2dsZU1lbnUgJiYgaXNMZWZ0U2lkZWJhcilcbiAgICAgIH1cIlxuICAgID48L2k+XG4gICAgPHNwYW4+e3sgbWVudVRpdGxlIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPHAtcGFuZWxNZW51IFttb2RlbF09XCJtZW51SXRlbXNcIiAoY2xpY2spPVwiY2xpY2tlZE1lbnUobWVudUl0ZW1zKVwiPjwvcC1wYW5lbE1lbnU+XG4gIDwvbmF2PlxuPC9zcGFuPlxuPC9zcGFuPiJdfQ==
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFJdEYsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0QyxPQUFPLEtBQUssU0FBUyxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixJQUFhLGNBQWMsQ0FBQyxHQUFRO1FBQ2xDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtZQUNoQixRQUFRLENBQUM7U0FDVjtJQUNILENBQUM7SUFDRCxJQUFhLFlBQVksQ0FBQyxlQUFvQjtRQUM1QyxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLFdBQVcsR0FBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO2dCQUM1QixlQUFlLENB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QUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FDbEMsUUFBUSxFQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztxQkFDSDt5QkFBTTt3QkFDTCxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMzQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2lJQWphVSxnQkFBZ0I7cUhBQWhCLGdCQUFnQix1T0N4QjdCLHd0QkFxQk87OzJGREdNLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxZQUFZO3FYQVViLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBS08sWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkluaXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2lkZWJhckFjdGlvbiwgSVNpZGViYXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2lkZWJhci5tb2RlbCc7XG5pbXBvcnQgeyBFUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVDb21wb25lbnQgfSBmcm9tICcuLi9pZnJhbWUvaWZyYW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IGRyYWdnYWJsZURpYWxvZyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSwgU2lkZUJhclNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9wdWJsaWMtYXBpJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgdG9nZ2xlTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIGxvYWRDb21wb25lbnROYW1lID0gJyc7XG4gIGdsb2JhbExpc3RlbkZ1bmM6IEZ1bmN0aW9uO1xuICBkaWFsb2dSZWY6IGFueTtcbiAgZm9ybTogSUR5bmFtaWNGb3JtO1xuICBASW5wdXQoKSBuYXZIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29sbGFwc2VTaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lbnVUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUodmFsOiBhbnkpIHtcbiAgICBpZiAodmFsID09PSB0cnVlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpZGViYXJJdGVtcyhuZXdTaWRlYmFySXRlbXM6IGFueSkge1xuICAgIGlmIChuZXdTaWRlYmFySXRlbXMpIHtcbiAgICAgIGxldCBsZWZ0U2lkZUJhcjogYW55W10gPSBbXTtcbiAgICAgIGlmIChuZXdTaWRlYmFySXRlbXMuZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IG5ld1NpZGViYXJJdGVtcztcbiAgICAgICAgbmV3U2lkZWJhckl0ZW1zLmZvcm1TZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbj8uaWNvbikge1xuICAgICAgICAgICAgbGVmdFNpZGVCYXIucHVzaCh7XG4gICAgICAgICAgICAgIGljb246IHNlY3Rpb24/Lmljb24sXG4gICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24/LmNsYXNzLFxuICAgICAgICAgICAgICB0b29sdGlwOiBzZWN0aW9uPy5uYW1lLFxuICAgICAgICAgICAgICBhY3Rpb246IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04sXG4gICAgICAgICAgICAgIGhpZGRlbjogc2VjdGlvbj8uaGlkZGVuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdCA9XG4gICAgICAgIGxlZnRTaWRlQmFyPy5sZW5ndGggPiAwID8gbGVmdFNpZGVCYXIgOiBuZXdTaWRlYmFySXRlbXM7XG4gICAgICB0aGlzLmluaXRpYWxpemVTaWRlQmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNpZGViYXJJdGVtc0xpc3Q6IElTaWRlYmFyW10gPSBbXTtcbiAgcHVibGljIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICByb2xlczogc3RyaW5nW10gPSBbXTtcbiAgaXNTaWRlYmFySGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTGVmdFNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluc3RhbmNlOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwYWdlTG9nZ2VyU2VydmljZTogUGFnZUxvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcblxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVNZW51ID0gdGhpcy5jb2xsYXBzZVNpZGViYXI7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvU2VjdGlvbigpO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBzZWN0aW9uTmFtZTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBpZiAocGFnZVVybC5pbmNsdWRlcygnc2VjdGlvbj0nKSkge1xuICAgICAgcGFnZVVybCA9IHBhZ2VVcmwuc3BsaXQoJ3NlY3Rpb249JylbMV07XG4gICAgICBzZWN0aW9uTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWdlVXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwICYmIHNlY3Rpb25OYW1lKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5mb3JtU2VjdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAoc2VjdGlvbikgPT4gc2VjdGlvbi5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWN0aW9uTmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCA+IC0xICYmIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnNbaW5kZXhdPy5jbGFzcykge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zW2luZGV4XS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluc3RhbmNlXG4gICAgICAgICAgICA/LnNlbGVjdFJvb3RFbGVtZW50KFxuICAgICAgICAgICAgICBgLiR7dGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0uY2xhc3M/LnJlcGxhY2UoL1xccy9nLCAnJyl9YCxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGluaXRpYWxpemVTaWRlQmFyKCkge1xuICAgIHRoaXMucm9sZXMgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJSb2xlcygpO1xuICAgIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICAgIGxldCBmb3JtU2VjdGlvbk5hbWVzO1xuICAgIGlmICh0aGlzLmZvcm0/LmZvcm1TZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGZvcm1TZWN0aW9uTmFtZXMgPSB0aGlzLmZvcm0/LmZvcm1TZWN0aW9ucy5tYXAoKHNlYykgPT4gc2VjLm5hbWUpO1xuICAgICAgdGhpcy5pc0xlZnRTaWRlYmFyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5hcHBseVVzZXJQZXJtaXNzaW9ucygpO1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0Lm1hcCgoeDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgbGFiZWw6IGZvcm1TZWN0aW9uTmFtZXMgPyBmb3JtU2VjdGlvbk5hbWVzW2luZGV4XSA6IHgubGFiZWwsXG4gICAgICBpY29uOiB4Lmljb24sXG4gICAgICBpZDogeC5pZCxcbiAgICAgIHNlY3Rpb246IHguc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiB4LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiB4LmFjdGlvbixcbiAgICAgIGl0ZW1zOiB4Lml0ZW1zICYmIHguaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuc2V0TWVudUl0ZW1zKHgpIDogW10sXG4gICAgICB0aXRsZTogdGhpcy5zZXRNZW51VGl0bGUoeCksXG4gICAgICBjb21tYW5kOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04pIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9TZWN0aW9uKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5PUEVORElBTE9HKSB7XG4gICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHgsIGV2ZW50Lml0ZW0sIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdHJsS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uSUZSQU1FKSB7XG4gICAgICAgICAgdGhpcy5sb2FkSUZyYW1lKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5TUExJVFNDUkVFTikge1xuICAgICAgICAgIHRoaXMubG9hZFBhbmUoeCwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGV2ZW50Lml0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogeC5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiB4Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogeC5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiB4LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgfVxuICBsb2FkUGFuZShtZW51OiBhbnksIGl0ZW06IGFueSkge1xuICAgbWVudS5vcmlnQ29tcG9uZW50ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQ7XG4gICB1dGlsaXRpZXMuY2hhbmdlU3BsaXRTY3JlZW4obWVudSk7XG4gIH1cblxuICBzZXRNZW51VGl0bGUoeDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4geC50b29sdGlwID8geC50b29sdGlwIDogIXgubGFiZWwgPyB4LnNlY3Rpb24gOiAnJztcbiAgfVxuXG4gIHNldE1lbnVJdGVtcyh4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB4Lml0ZW1zLm1hcCgobWVudTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IG1lbnUubGFiZWwsXG4gICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICBpZDogbWVudS5pZCxcbiAgICAgIHNlY3Rpb246IG1lbnUuc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiBtZW51LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiBtZW51LmFjdGlvbixcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uTkFWSUdBVElPTikge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1NlY3Rpb24obWVudSwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5EaWFsb2cobWVudSwgZXZlbnQuaXRlbSwgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN0cmxLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1lbnUuYWN0aW9uICYmIG1lbnUuYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5JRlJBTUUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWUobWVudSwgeCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLlNQTElUU0NSRUVOKSB7XG4gICAgICAgICAgdGhpcy5sb2FkUGFuZShtZW51LCB4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oZXZlbnQuaXRlbSk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogbWVudS5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBtZW51Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogbWVudS5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiBtZW51LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgfVxuXG4gIGxvYWRJRnJhbWUobWVudTogYW55LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAobWVudS5pRnJhbWUubGlua0lkKSB7XG4gICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwobWVudS5pRnJhbWUubGlua0lkKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybChcbiAgICAgICAgICAgIG1lbnU/LnBhcmFtcyxcbiAgICAgICAgICAgIHJlc1swXVxuICAgICAgICAgICk7XG4gICAgICAgICAgbWVudS5pRnJhbWVbJ2xpbmsnXSA9IG9yaWdpbmFsVXJsO1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZURhdGEobWVudSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ05vIExpbmsgRm91bmQgQWdhaW5zdCB0aGlzIGxpbmtJZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkSUZyYW1lRGF0YShtZW51LCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICBsb2FkSUZyYW1lRGF0YShtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KSB7XG4gICAgaWYgKG1lbnUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKElmcmFtZUNvbXBvbmVudCwge1xuICAgICAgICBoZWFkZXI6IG1lbnVbJ2RhdGEnXT8uaGVhZGVyID8gbWVudVsnZGF0YSddPy5oZWFkZXIgOiBtZW51LnNlY3Rpb24sXG4gICAgICAgIHdpZHRoOiBtZW51LmlGcmFtZT8ud2lkdGggPyBtZW51LmlGcmFtZS53aWR0aCA6ICc5MCUnLFxuICAgICAgICBoZWlnaHQ6IG1lbnUuaUZyYW1lPy5oZWlnaHQgPyBtZW51LmlGcmFtZS5oZWlnaHQgOiAnODAlJyxcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogbWVudS5pRnJhbWU/LmxpbmssIGlGcmFtZUlkOiBtZW51LnNlY3Rpb24gfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZXREeW5hbWljRGlhbG9nUmVmKGRpYWxvZ1JlZik7XG4gICAgICB0aGlzLnBhZ2VMb2dnZXJTZXJ2aWNlLnNhdmVQYWdlTG9nZ2VySW5mbyhcbiAgICAgICAgdGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSksXG4gICAgICAgICdJZnJhbWVDb21wb25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGRyYWdnYWJsZURpYWxvZyhtZW51LmxhYmVsKTtcbiAgICAgICAgfSk7XG4gICAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2lkZWJhcigpIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUgPSAhdGhpcy50b2dnbGVNZW51O1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2dnbGVNZW51JywgSlNPTi5zdHJpbmdpZnkodGhpcy50b2dnbGVNZW51KSk7XG4gIH1cblxuICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgYXBwbHlVc2VyUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2lkZWJhckl0ZW1zTGlzdCAmJiB0aGlzLnNpZGViYXJJdGVtc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuSXRlbXM6IG51bWJlciA9IDA7XG5cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgcGVybWlzc2lvbnM6IGFueSA9IGl0ZW0/LnBlcm1pc3Npb25zO1xuICAgICAgICBsZXQgaGFzVmFsaWRFZGl0UGVybWlzc2lvbiA9IGZhbHNlO1xuXG4gICAgICAgIGl0ZW0uaWQgPSBpbmRleC50b1N0cmluZygpO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBlcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb246IGFueSkgPT4ge1xuICAgICAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLnJvbGVzICYmIHBlcm1pc3Npb24ucm9sZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBwZXJtaXNzaW9uLnJvbGVzLmZvckVhY2goKHJvbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCAmJiB0aGlzLnJvbGVzICYmIHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24udHlwZSA9PT0gRVBlcm1pc3Npb25UeXBlLlZJRVcgJiZcbiAgICAgICAgICAgICAgICAhaGFzVmFsaWRFZGl0UGVybWlzc2lvblxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocGVybWlzc2lvbi50eXBlID09PSBFUGVybWlzc2lvblR5cGUuRURJVCkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICBoYXNWYWxpZEVkaXRQZXJtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdG90YWxJdGVtcysrO1xuXG4gICAgICAgIGlmIChpdGVtLmhpZGRlbikge1xuICAgICAgICAgIGhpZGRlbkl0ZW1zKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzU2lkZWJhckhpZGRlbiA9IHRvdGFsSXRlbXMgPiAwICYmIHRvdGFsSXRlbXMgPT09IGhpZGRlbkl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAIHBhcmFtIG1lbnVcbiAgICogQCBwYXJhbSBpdGVtXG4gICAqIFBhc3NlcyB0aGUgc2lkZWJhciBhcnJheSB0byBjb250YWluIGFsbCBJU2lkZWJhciBwcm9wZXJ0eSBsaWtlXG4gICAqIFBhc3NlcyB0aGUgZXZlbnQgb2YgdGhlIG1lbnVcbiAgICovXG5cbiAgb3BlbkRpYWxvZyhtZW51OiBJU2lkZWJhciwgaXRlbTogYW55LCBjb250cm9sS2V5KTogdm9pZCB7XG4gICAgY29uc3QgbWVudURhdGE6IGFueSA9IG1lbnUuZGF0YT8uZGF0YSA/IG1lbnUuZGF0YS5kYXRhIDoge307XG4gICAgaWYgKChjb250cm9sS2V5ICYmIG1lbnUuY29tcG9uZW50KSB8fCBtZW51Lm9wZW5Jbk5ld1RhYikge1xuICAgICAgLy9vcGVuIGNvbXBvbmVudCBvbiBuZXcgdGFiXG4gICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2Uub3BlbkRpYWxvZ0luTmV3VGFiKG1lbnUuY29tcG9uZW50LCBtZW51RGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkNvbXBvbmVudEluRGlhbG9nKG1lbnUsIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBkaWFsb2cgcmVmIHdoZW4gcG9wdXAgb3BlblxuICBzZXREeW5hbWljRGlhbG9nUmVmKHJlZikge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KHJlZik7XG4gICAgY29uc3QgZHluYW1pY0NvbXBvbmVudCA9IGRpYWxvZ1JlZj8uaW5zdGFuY2UgYXMgRHluYW1pY0RpYWxvZ0NvbXBvbmVudDtcbiAgICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9IGR5bmFtaWNDb21wb25lbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcbiAgICBkeW5hbWljQ29tcG9uZW50LmdldEFyaWFMYWJlbGxlZEJ5ID0gKCkgPT4gYXJpYUxhYmVsbGVkQnk7XG4gIH1cblxuICBpbnRlcmNlcHREaWFsb2dDbG9zZShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZ3JpZFNlcnZpY2UuY29sdW1uRm9jdXNlZE91dCB8fCB0aGlzLmZvcm1TZXJ2aWNlLmZpZWxkRm9jdXNlZE91dCkge1xuICAgICAgaWYgKFxuICAgICAgICBjb25maXJtKFxuICAgICAgICAgICdZb3Ugd2lsbCBsb3NlIGNoYW5nZXMgbm90IHNhdmVkIG9uIHBhZ2UuIFdvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlPydcbiAgICAgICAgKSA9PSB0cnVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmNvbHVtbkZvY3VzZWRPdXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5maWVsZEZvY3VzZWRPdXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Db21wb25lbnRJbkRpYWxvZyhtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KSB7XG4gICAgY29uc3QgbWVudURhdGE6IGFueSA9IG1lbnUuZGF0YSA/IG1lbnUuZGF0YSA6IG1lbnU7XG4gICAgbWVudURhdGEuc3R5bGUgPSB7IGJhY2tncm91bmQ6ICcjZmZmJyB9O1xuICAgIGlmIChtZW51RGF0YS5zY3JvbGxhYmxlID09IGZhbHNlKSB7XG4gICAgICBtZW51RGF0YS5zdHlsZUNsYXNzID0gJ3NtYWxsLW1vZGVsJztcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudURhdGEuc3R5bGVDbGFzcyA9ICdzaWRlYmFyLWRhdGVwaWNrZXInO1xuICAgIH1cbiAgICBpZiAobWVudS5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4obWVudS5jb21wb25lbnQsIG1lbnVEYXRhKTtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlID0gdGhpcy5pbnRlcmNlcHREaWFsb2dDbG9zZS5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy5zZXREeW5hbWljRGlhbG9nUmVmKHRoaXMuZGlhbG9nUmVmKTtcbiAgICAgIHRoaXMucGFnZUxvZ2dlclNlcnZpY2Uuc2F2ZVBhZ2VMb2dnZXJJbmZvKFxuICAgICAgICB0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKSxcbiAgICAgICAgbWVudS5jb21wb25lbnQ/Lm5hbWVcbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGRyYWdnYWJsZURpYWxvZyhtZW51LmxhYmVsKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIGlmIChkYXRhICYmIG1lbnUub25SZXR1cm4pIHtcbiAgICAgICAgICBtZW51Lm9uUmV0dXJuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQCBwYXJhbSB4XG4gICAqIEAgcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIHNpZGViYXIgYXJyYXkgdG8gY29udGFpbiBhbGwgSVNpZGViYXIgcHJvcGVydHkgbGlrZVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuXG4gIG5hdmlnYXRlVG9TZWN0aW9uKHg6IElTaWRlYmFyLCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnM/Lmxlbmd0aCA+IDAgJiYgeC5zZWN0aW9uKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5mb3JtU2VjdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAoc2VjdGlvbikgPT4gc2VjdGlvbi5jbGFzcyAmJiBzZWN0aW9uLmNsYXNzID09PSB4LnNlY3Rpb25cbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zW2luZGV4XS5leHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaW5zdGFuY2VcbiAgICAgID8uc2VsZWN0Um9vdEVsZW1lbnQoYC4ke3guc2VjdGlvbj8ucmVwbGFjZSgvXFxzL2csICcnKX1gLCB0cnVlKVxuICAgICAgPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cbiAgaGFuZGxlQWN0aXZlSXRlbSh7IGljb24gfTogYW55LCBjbG9zZURpYWxvZzogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zLm1hcCgoeCkgPT5cbiAgICAgIHguaWNvbiA9PT0gaWNvbiAmJiBjbG9zZURpYWxvZ1xuICAgICAgICA/IHsgLi4ueCwgc3R5bGVDbGFzczogJ2FjdGl2ZS1pY29uJyB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlOWVjZWYnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiB4LnN0eWxlPy5kaXNwbGF5ID09PSAnbm9uZScgPyAnbm9uZScgOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjbGlja2VkTWVudShtZW51OiBNZW51SXRlbVtdKSB7XG4gICAgbWVudS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZEl0ZW06IGFueSA9IHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5maW5kKFxuICAgICAgICAoeCkgPT4geC5pZCA9PSBpdGVtLmlkXG4gICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnN0eWxlQ2xhc3MgPT09ICdhY3RpdmUtaWNvbicgJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0gJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0ub25DbGlja1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZVxuICAgICAgICAgIC5hZGRIeXBlcmxpbmtzKG1hdGNoZWRJdGVtKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAobWF0Y2hlZEl0ZW0ubGlua0lkKSB7XG4gICAgICAgICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRTaWRlYmFyTGluayhcbiAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJJdGVtc0xpc3RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hdGNoZWRJdGVtLm9uQ2xpY2soaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iLCI8c3BhblxuICAqbmdJZj1cIiFpc1NpZGViYXJIaWRkZW4gJiYgc2lkZWJhckl0ZW1zTGlzdCAmJiBzaWRlYmFySXRlbXNMaXN0Lmxlbmd0aCA+IDBcIlxuPlxuPHNwYW4gKm5nSWY9XCIhbmF2SGlkZGVuXCI+XG4gIDxuYXZcbiAgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1sZyBwLTAgZ3Jvdy0xXCJcbiAgW25nQ2xhc3NdPVwidG9nZ2xlTWVudSA/ICdoaWRlLW5hdicgOiAnJ1wiXG4gID5cbiAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwidG9nZ2xlU2lkZWJhcigpXCI+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwicGkgcGktZncgdG9nZ2xlLWljb25cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncGktY2hldnJvbi1sZWZ0JzogKHRvZ2dsZU1lbnUgJiYgIWlzTGVmdFNpZGViYXIpIHx8ICghdG9nZ2xlTWVudSAmJiBpc0xlZnRTaWRlYmFyKSxcbiAgICAgICAgJ3BpLWNoZXZyb24tcmlnaHQnOiAoIXRvZ2dsZU1lbnUgJiYgIWlzTGVmdFNpZGViYXIpIHx8ICh0b2dnbGVNZW51ICYmIGlzTGVmdFNpZGViYXIpXG4gICAgICB9XCJcbiAgICA+PC9pPlxuICAgIDxzcGFuPnt7IG1lbnVUaXRsZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxwLXBhbmVsTWVudSBbbW9kZWxdPVwibWVudUl0ZW1zXCIgKGNsaWNrKT1cImNsaWNrZWRNZW51KG1lbnVJdGVtcylcIj48L3AtcGFuZWxNZW51PlxuICA8L25hdj5cbjwvc3Bhbj5cbjwvc3Bhbj4iXX0=
|
|
@@ -12457,11 +12457,11 @@ class SidebarComponent {
|
|
|
12457
12457
|
}
|
|
12458
12458
|
// apply user role permissions
|
|
12459
12459
|
applyUserPermissions() {
|
|
12460
|
-
if (this.sidebarItemsList) {
|
|
12460
|
+
if (this.sidebarItemsList && this.sidebarItemsList.length > 0) {
|
|
12461
12461
|
let totalItems = 0;
|
|
12462
12462
|
let hiddenItems = 0;
|
|
12463
12463
|
this.sidebarItemsList.forEach((item, index) => {
|
|
12464
|
-
let permissions = item
|
|
12464
|
+
let permissions = item?.permissions;
|
|
12465
12465
|
let hasValidEditPermission = false;
|
|
12466
12466
|
item.id = index.toString();
|
|
12467
12467
|
if (permissions && permissions.length > 0) {
|