@c8y/ngx-components 1018.0.125 → 1018.0.137

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.
@@ -20,6 +20,7 @@ export declare class AppSwitcherService {
20
20
  protected readonly visibleApplicationTypes: string[];
21
21
  constructor(ui: AppStateService);
22
22
  protected filterVisible(apps: IApplication[]): IApplication[];
23
+ protected isPackage(app: IApplication): boolean;
23
24
  protected isCloudApp(app: IApplication): boolean;
24
25
  protected filterDuplicates(apps: IApplication[], tenant: ICurrentTenant): IApplication[];
25
26
  protected orderApps(apps: IApplication[]): IApplication[];
@@ -126,12 +126,12 @@ export class ReportDashboardListComponent {
126
126
  }
127
127
  }
128
128
  ReportDashboardListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReportDashboardListComponent, deps: [{ token: i1.InventoryService }, { token: i2.ContextDashboardService }, { token: i3.BsModalService }, { token: i4.TranslateService }, { token: i5.ModalService }, { token: i5.AlertService }, { token: i6.ReportDashboardService }, { token: i5.Permissions }], target: i0.ɵɵFactoryTarget.Component });
129
- ReportDashboardListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ReportDashboardListComponent, selector: "c8y-report-dashboard-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i5.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i10.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
129
+ ReportDashboardListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ReportDashboardListComponent, selector: "c8y-report-dashboard-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i5.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i10.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
130
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReportDashboardListComponent, decorators: [{
131
131
  type: Component,
132
- args: [{ selector: 'c8y-report-dashboard-list', template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n" }]
132
+ args: [{ selector: 'c8y-report-dashboard-list', template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n" }]
133
133
  }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.ContextDashboardService }, { type: i3.BsModalService }, { type: i4.TranslateService }, { type: i5.ModalService }, { type: i5.AlertService }, { type: i6.ReportDashboardService }, { type: i5.Permissions }]; }, propDecorators: { filter: [{
134
134
  type: ViewChild,
135
135
  args: [FilterInputComponent, { static: false }]
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1wRSxNQUFNLE9BQU8s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Q0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDNUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDOzt5SEFwSVUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIseUdBQzVCLG9CQUFvQixnREN4QmpDLHMyS0FrTEE7MkZEM0phLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7OFRBSWUsTUFBTTtzQkFBekQsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBGaWx0ZXJJbnB1dENvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIEFsZXJ0U2VydmljZSxcbiAgUGVybWlzc2lvbnNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuLi9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4uL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFR5cGUgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kYXNoYm9hcmQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RGFzaGJvYXJkTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoRmlsdGVySW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWx0ZXI6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuICB0ZXh0RmlsdGVyJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkaW5nID0gZmFsc2U7XG4gIHJlcG9ydHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4gPSBjb21iaW5lTGF0ZXN0KFxuICAgIHRoaXMudGV4dEZpbHRlciQucGlwZShkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSB0cnVlO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcCgoW3RleHRdKSA9PiB0aGlzLmxvYWRSZXBvcnRzKHRleHQpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICBjYW5BZGRSZXBvcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUxFVEVEX1NVQ0NFU1NfTVNHID0gZ2V0dGV4dCgnUmVwb3J0IGRlbGV0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0RGFzaGJvYXJkU2VydmljZTogUmVwb3J0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYW5BZGRSZXBvcnQgPSB0aGlzLnBlcm1pc3Npb25zLmhhc0FueVJvbGUoW1xuICAgICAgJ1JPTEVfSU5WRU5UT1JZX0NSRUFURScsXG4gICAgICAnUk9MRV9JTlZFTlRPUllfQURNSU4nXG4gICAgXSk7XG4gIH1cblxuICBhc3luYyBsb2FkUmVwb3J0cyhwYXJ0aWFsTmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBwYXJ0aWFsTmFtZVxuICAgICAgPyB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UubGlzdFJlcG9ydHMoeyBmaWx0ZXI6IHsgbmFtZTogYCoke3BhcnRpYWxOYW1lfSpgIH0gfSlcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmxpc3RSZXBvcnRzKCk7XG4gIH1cblxuICBhc3luYyBhZGQoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgaXNSZXBvcnQ6IHRydWUsXG4gICAgICBpc05hbWVkRGFzaGJvYXJkOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KERhc2hib2FyZERldGFpbENvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pLmNvbnRlbnQgYXMgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIGM4eV9Jc05hdmlnYXRvck5vZGUsIHByaW9yaXR5LCBkZXNjcmlwdGlvbiwgLi4uZGFzaGJvYXJkQ2ZnIH0gPSBjZmc7XG4gICAgICBjb25zdCByZXBvcnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5jcmVhdGVSZXBvcnQoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlLFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH0gYXMgUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlKFxuICAgICAgICBkYXNoYm9hcmRDZmcsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYCR7dGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5SRVBPUlRfUEFSVElBTF9OQU1FfSR7cmVwb3J0LmlkfWBcbiAgICAgICk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAgIC5nZXREYXNoYm9hcmQkKGByZXBvcnRfJHtyZXBvcnQuaWR9YCwgW0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkXSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgaXNEYXNoYm9hcmRGcm96ZW4gPSAhIWRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uaXNGcm96ZW47XG5cbiAgICAgIGNvbnN0IG1zZyA9IGlzRGFzaGJvYXJkRnJvemVuXG4gICAgICAgID8gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgcmVwb3J0IFwie3sgcmVwb3J0TmFtZSB9fVwiLiBCZSBhd2FyZSB0aGF0IHRoZSByZXBvcnQgaGFzIGEgbG9ja2VkIGRhc2hib2FyZCBhc3NpZ25lZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKVxuICAgICAgICA6IGdldHRleHQoYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSByZXBvcnQgXCJ7eyByZXBvcnROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnRGVsZXRlIHJlcG9ydCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICByZXBvcnROYW1lOiByZXBvcnQubmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKGRhc2hib2FyZCwgZmFsc2UpO1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShyZXBvcnQuaWQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkRFTEVURURfU1VDQ0VTU19NU0cpO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5yZW1vdmVOYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPyB7fSA6IG51bGw7XG4gICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLnVwZGF0ZShyZXBvcnQpO1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydClcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLnJlbW92ZU5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCInbGVmdCdcIiBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoXCI+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRmlsdGVy4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBbbmdNb2RlbF09XCJ0ZXh0RmlsdGVyJCB8IGFzeW5jXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRleHRGaWx0ZXIkLm5leHQoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID09PSAwXCI+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgYzh5SWNvbj1cInRpbWVzXCJcbiAgICAgICAgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCcnKVwiXG4gICAgICAgIHB4LWV2ZW50PVwiQ2xlYXIgZmlsdGVyaW5nIHJlcG9ydHNcIlxuICAgICAgPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWFjdGlvbi1iYXItYnV0dG9uJ1wiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRvdCBtLXItMTZcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGFyaWEtbGFiZWw9XCJ7eyAnSW5mbycgfCB0cmFuc2xhdGV9fVwiXG4gICAgcG9wb3Zlcj1cInt7ICdZb3UgZG9uXFwndCBoYXZlIHBlcm1pc3Npb24gdG8gYWRkIHJlcG9ydHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICpuZ0lmPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj48L2k+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAoY2xpY2spPVwibG9hZFJlcG9ydHMoKVwiXG4gID5cbiAgICA8aSBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWxvYWRpbmcgfVwiIGM4eUljb249XCJyZWZyZXNoXCI+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI3JlcG9ydHNcIj48L2M4eS1oZWxwPlxuXG48Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGlcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxjOHktbGktaWNvbj5cbiAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ1JlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG4gIDwvYzh5LWxpPlxuXG4gIDxjOHktbGkgKmM4eUZvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0cyQ7IGxldCBpID0gaW5kZXg7IGxvYWRNb3JlOiAnYXV0bydcIj5cbiAgICA8Yzh5LWxpLWljb24gW2ljb25dPVwicmVwb3J0Lmljb25cIj48L2M4eS1saS1pY29uPlxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyByZXBvcnQubmFtZSB9fVwiXG4gICAgICAgICAgcm91dGVyTGluaz1cIi9yZXBvcnRzL3t7IHJlcG9ydC5pZCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIDxwIGNsYXNzPVwic21hbGwgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgICAgPGVtIGNsYXNzPVwidGV4dC1tdXRlZFwiICpuZ0lmPVwiIXJlcG9ydC5kZXNjcmlwdGlvbjsgZWxzZSBzaG93RGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIHt7ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9lbT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIGZpdC1oLTIwIG0tdC14cy04XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lXCIgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlKHJlcG9ydClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14c1wiPlxuICAgICAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGhpZGRlbi14c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG8gZC1mbGV4XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLXQtOCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHJlcG9ydClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICB7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgKm5nSWY9XCIocmVwb3J0cyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoID09PSAwXCJcbiAgW2ljb25dPVwiJ2M4eS1yZXBvcnRzJ1wiXG4gIFt0aXRsZV09XCInVGhlcmUgYXJlIG5vIHJlcG9ydHMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSByZXBvcnQgZmlyc3QuJyB8IHRyYW5zbGF0ZVwiXG4+XG4gIDxwPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWVtcHR5LXN0YXRlLWJ1dHRvbidcIlxuICAgICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICA+XG4gICAgICB7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICA8c21hbGwgdHJhbnNsYXRlIG5nTm9uQmluZGFibGU+XG4gICAgICBGaW5kIG91dCBtb3JlIGluIHRoZVxuICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCJ1c2Vycy1ndWlkZS9jb2NrcGl0LyNyZXBvcnRzXCI+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvYT5cbiAgICAgIC5cbiAgICA8L3NtYWxsPlxuICA8L3A+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1wRSxNQUFNLE9BQU8s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Q0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDNUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDOzt5SEFwSVUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIseUdBQzVCLG9CQUFvQixnREN4QmpDLDA0S0FtTEE7MkZENUphLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7OFRBSWUsTUFBTTtzQkFBekQsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBGaWx0ZXJJbnB1dENvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIEFsZXJ0U2VydmljZSxcbiAgUGVybWlzc2lvbnNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuLi9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4uL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFR5cGUgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kYXNoYm9hcmQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RGFzaGJvYXJkTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoRmlsdGVySW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWx0ZXI6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuICB0ZXh0RmlsdGVyJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkaW5nID0gZmFsc2U7XG4gIHJlcG9ydHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4gPSBjb21iaW5lTGF0ZXN0KFxuICAgIHRoaXMudGV4dEZpbHRlciQucGlwZShkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSB0cnVlO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcCgoW3RleHRdKSA9PiB0aGlzLmxvYWRSZXBvcnRzKHRleHQpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICBjYW5BZGRSZXBvcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUxFVEVEX1NVQ0NFU1NfTVNHID0gZ2V0dGV4dCgnUmVwb3J0IGRlbGV0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0RGFzaGJvYXJkU2VydmljZTogUmVwb3J0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYW5BZGRSZXBvcnQgPSB0aGlzLnBlcm1pc3Npb25zLmhhc0FueVJvbGUoW1xuICAgICAgJ1JPTEVfSU5WRU5UT1JZX0NSRUFURScsXG4gICAgICAnUk9MRV9JTlZFTlRPUllfQURNSU4nXG4gICAgXSk7XG4gIH1cblxuICBhc3luYyBsb2FkUmVwb3J0cyhwYXJ0aWFsTmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBwYXJ0aWFsTmFtZVxuICAgICAgPyB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UubGlzdFJlcG9ydHMoeyBmaWx0ZXI6IHsgbmFtZTogYCoke3BhcnRpYWxOYW1lfSpgIH0gfSlcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmxpc3RSZXBvcnRzKCk7XG4gIH1cblxuICBhc3luYyBhZGQoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgaXNSZXBvcnQ6IHRydWUsXG4gICAgICBpc05hbWVkRGFzaGJvYXJkOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KERhc2hib2FyZERldGFpbENvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pLmNvbnRlbnQgYXMgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIGM4eV9Jc05hdmlnYXRvck5vZGUsIHByaW9yaXR5LCBkZXNjcmlwdGlvbiwgLi4uZGFzaGJvYXJkQ2ZnIH0gPSBjZmc7XG4gICAgICBjb25zdCByZXBvcnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5jcmVhdGVSZXBvcnQoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlLFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH0gYXMgUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlKFxuICAgICAgICBkYXNoYm9hcmRDZmcsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYCR7dGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5SRVBPUlRfUEFSVElBTF9OQU1FfSR7cmVwb3J0LmlkfWBcbiAgICAgICk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAgIC5nZXREYXNoYm9hcmQkKGByZXBvcnRfJHtyZXBvcnQuaWR9YCwgW0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkXSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgaXNEYXNoYm9hcmRGcm96ZW4gPSAhIWRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uaXNGcm96ZW47XG5cbiAgICAgIGNvbnN0IG1zZyA9IGlzRGFzaGJvYXJkRnJvemVuXG4gICAgICAgID8gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgcmVwb3J0IFwie3sgcmVwb3J0TmFtZSB9fVwiLiBCZSBhd2FyZSB0aGF0IHRoZSByZXBvcnQgaGFzIGEgbG9ja2VkIGRhc2hib2FyZCBhc3NpZ25lZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKVxuICAgICAgICA6IGdldHRleHQoYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSByZXBvcnQgXCJ7eyByZXBvcnROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnRGVsZXRlIHJlcG9ydCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICByZXBvcnROYW1lOiByZXBvcnQubmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKGRhc2hib2FyZCwgZmFsc2UpO1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShyZXBvcnQuaWQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkRFTEVURURfU1VDQ0VTU19NU0cpO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5yZW1vdmVOYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPyB7fSA6IG51bGw7XG4gICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLnVwZGF0ZShyZXBvcnQpO1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydClcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLnJlbW92ZU5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCInbGVmdCdcIiBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoXCI+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRmlsdGVy4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBbbmdNb2RlbF09XCJ0ZXh0RmlsdGVyJCB8IGFzeW5jXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRleHRGaWx0ZXIkLm5leHQoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID09PSAwXCI+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgYzh5SWNvbj1cInRpbWVzXCJcbiAgICAgICAgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCcnKVwiXG4gICAgICAgIHB4LWV2ZW50PVwiQ2xlYXIgZmlsdGVyaW5nIHJlcG9ydHNcIlxuICAgICAgPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWFjdGlvbi1iYXItYnV0dG9uJ1wiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRvdCBtLXItMTZcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGFyaWEtbGFiZWw9XCJ7eyAnSW5mbycgfCB0cmFuc2xhdGV9fVwiXG4gICAgcG9wb3Zlcj1cInt7ICdZb3UgZG9uXFwndCBoYXZlIHBlcm1pc3Npb24gdG8gYWRkIHJlcG9ydHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICpuZ0lmPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj48L2k+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAoY2xpY2spPVwibG9hZFJlcG9ydHMoKVwiXG4gID5cbiAgICA8aSBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWxvYWRpbmcgfVwiIGM4eUljb249XCJyZWZyZXNoXCI+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI3JlcG9ydHNcIj48L2M4eS1oZWxwPlxuXG48Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGlcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxjOHktbGktaWNvbj5cbiAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ1JlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG4gIDwvYzh5LWxpPlxuXG4gIDxjOHktbGkgKmM4eUZvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0cyQ7IGxldCBpID0gaW5kZXg7IGxvYWRNb3JlOiAnYXV0bydcIj5cbiAgICA8Yzh5LWxpLWljb24gW2ljb25dPVwicmVwb3J0Lmljb25cIj48L2M4eS1saS1pY29uPlxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyByZXBvcnQubmFtZSB9fVwiXG4gICAgICAgICAgcm91dGVyTGluaz1cIi9yZXBvcnRzL3t7IHJlcG9ydC5pZCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIDxwIGNsYXNzPVwic21hbGwgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgICAgPGVtIGNsYXNzPVwidGV4dC1tdXRlZFwiICpuZ0lmPVwiIXJlcG9ydC5kZXNjcmlwdGlvbjsgZWxzZSBzaG93RGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIHt7ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9lbT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIGZpdC1oLTIwIG0tdC14cy04XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lXCIgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlKHJlcG9ydClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14c1wiPlxuICAgICAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGhpZGRlbi14c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG8gZC1mbGV4XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLXQtOCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHJlcG9ydClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICB7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgKm5nSWY9XCIocmVwb3J0cyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoID09PSAwXCJcbiAgW2ljb25dPVwiJ2M4eS1yZXBvcnRzJ1wiXG4gIFt0aXRsZV09XCInVGhlcmUgYXJlIG5vIHJlcG9ydHMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSByZXBvcnQgZmlyc3QuJyB8IHRyYW5zbGF0ZVwiXG4+XG4gIDxwPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWVtcHR5LXN0YXRlLWJ1dHRvbidcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRSZXBvcnRcIlxuICAgICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICA+XG4gICAgICB7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICA8c21hbGwgdHJhbnNsYXRlIG5nTm9uQmluZGFibGU+XG4gICAgICBGaW5kIG91dCBtb3JlIGluIHRoZVxuICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCJ1c2Vycy1ndWlkZS9jb2NrcGl0LyNyZXBvcnRzXCI+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvYT5cbiAgICAgIC5cbiAgICA8L3NtYWxsPlxuICA8L3A+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiJdfQ==
@@ -19,8 +19,12 @@ export class AppSwitcherService {
19
19
  filterVisible(apps) {
20
20
  return apps.filter(app => this.visibleApplicationTypes.includes(app.type) &&
21
21
  !app.noAppSwitcher &&
22
+ !this.isPackage(app) &&
22
23
  !get(app, 'manifest.noAppSwitcher'));
23
24
  }
25
+ isPackage(app) {
26
+ return !!app.manifest?.isPackage;
27
+ }
24
28
  isCloudApp(app) {
25
29
  return !!app.cloud;
26
30
  }
@@ -42,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
42
46
  type: Injectable,
43
47
  args: [{ providedIn: 'root' }]
44
48
  }], ctorParameters: function () { return [{ type: i1.AppStateService }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHNUMsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFBc0IsRUFBbUI7UUFBbkIsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFGdEIsNEJBQXVCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHbEUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3JDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ3JELEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDM0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUNoRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdkQsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUM1RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVTLGFBQWEsQ0FBQyxJQUFvQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCLEdBQUcsQ0FBQyxFQUFFLENBQ0osSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQy9DLENBQUMsR0FBRyxDQUFDLGFBQWE7WUFDbEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQ3RDLENBQUM7SUFDSixDQUFDO0lBRVMsVUFBVSxDQUFDLEdBQWlCO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsTUFBc0I7UUFDckUsZ0dBQWdHO1FBQ2hHLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQ3JCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDUixRQUFRLENBQUMsRUFBRSxDQUNULEdBQUcsS0FBSyxRQUFRO1lBQ2hCLEdBQUcsQ0FBQyxXQUFXO1lBQ2YsR0FBRyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsV0FBVztZQUN4QyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FDdEMsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsU0FBUyxDQUFDLElBQW9CO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7OytHQXhFVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQURMLE1BQU07MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQXBwbGljYXRpb24sIElDdXJyZW50VGVuYW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0LCBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFwcFN3aXRjaGVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBBcHBzIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqL1xuICBhcHBzT2ZDdXJyZW50VXNlciQ6IE9ic2VydmFibGU8QXJyYXk8SUFwcGxpY2F0aW9uPj47XG4gIC8qKlxuICAgKiBBdmFpbGFibGUgY2xvdWQgYXBwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIuXG4gICAqL1xuICBvbmVDbG91ZEFwcHMkOiBPYnNlcnZhYmxlPEFycmF5PElBcHBsaWNhdGlvbj4+O1xuICAvKipcbiAgICogQXZhaWxhYmxlIG5vbmUgY2xvdWQgYXBwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIuXG4gICAqL1xuICBhcHBzJDogT2JzZXJ2YWJsZTxBcnJheTxJQXBwbGljYXRpb24+PjtcbiAgZmluaXNoZWRMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlzaWJsZUFwcGxpY2F0aW9uVHlwZXMgPSBbJ0hPU1RFRCcsICdFWFRFUk5BTCddO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB1aTogQXBwU3RhdGVTZXJ2aWNlKSB7XG4gICAgY29uc3QgeyBjdXJyZW50VGVuYW50IH0gPSB0aGlzLnVpO1xuICAgIHRoaXMuYXBwc09mQ3VycmVudFVzZXIkID0gdGhpcy51aS5jdXJyZW50QXBwc09mVXNlci5waXBlKFxuICAgICAgbWFwKGFwcHMgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFwcHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICB0aGlzLm9uZUNsb3VkQXBwcyQgPSB0aGlzLmFwcHNPZkN1cnJlbnRVc2VyJC5waXBlKFxuICAgICAgbWFwKGFwcHMgPT4gYXBwcy5maWx0ZXIoYXBwID0+IHRoaXMuaXNDbG91ZEFwcChhcHApKSksXG4gICAgICBtYXAoY2xvdWRBcHBzID0+IHRoaXMub3JkZXJBcHBzKGNsb3VkQXBwcykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICAgIGNvbnN0IG5vbkNsb3VkQXBwcyQgPSB0aGlzLmFwcHNPZkN1cnJlbnRVc2VyJC5waXBlKFxuICAgICAgbWFwKGFwcHMgPT4gYXBwcy5maWx0ZXIoYXBwID0+ICF0aGlzLmlzQ2xvdWRBcHAoYXBwKSkpXG4gICAgKTtcbiAgICB0aGlzLmFwcHMkID0gY29tYmluZUxhdGVzdChbbm9uQ2xvdWRBcHBzJCwgY3VycmVudFRlbmFudF0pLnBpcGUoXG4gICAgICBtYXAoKFthcHBzLCB0ZW5hbnRdKSA9PiB0aGlzLmZpbHRlckR1cGxpY2F0ZXMoYXBwcywgdGVuYW50KSksXG4gICAgICBtYXAoYXBwcyA9PiB0aGlzLm9yZGVyQXBwcyhhcHBzKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLmZpbmlzaGVkTG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFwcHMkLCB0aGlzLm9uZUNsb3VkQXBwcyRdKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWx0ZXJWaXNpYmxlKGFwcHM6IElBcHBsaWNhdGlvbltdKTogSUFwcGxpY2F0aW9uW10ge1xuICAgIHJldHVybiBhcHBzLmZpbHRlcihcbiAgICAgIGFwcCA9PlxuICAgICAgICB0aGlzLnZpc2libGVBcHBsaWNhdGlvblR5cGVzLmluY2x1ZGVzKGFwcC50eXBlKSAmJlxuICAgICAgICAhYXBwLm5vQXBwU3dpdGNoZXIgJiZcbiAgICAgICAgIWdldChhcHAsICdtYW5pZmVzdC5ub0FwcFN3aXRjaGVyJylcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQ2xvdWRBcHAoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAuY2xvdWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsdGVyRHVwbGljYXRlcyhhcHBzOiBJQXBwbGljYXRpb25bXSwgdGVuYW50OiBJQ3VycmVudFRlbmFudCk6IElBcHBsaWNhdGlvbltdIHtcbiAgICAvLyBGaWx0ZXIgb3V0IGFwcHMgdGhhdCBoYXZlIGR1cGxpY2F0ZSBjb250ZXh0cGF0aHMgYW5kIGFyZSBub3Qgb3duIG93bmVkIGJ5IHRoZSBjdXJyZW50IHRlbmFudDtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IGFwcCA9PlxuICAgICAgIWFwcHMuc29tZShcbiAgICAgICAgb3RoZXJBcHAgPT5cbiAgICAgICAgICBhcHAgIT09IG90aGVyQXBwICYmXG4gICAgICAgICAgYXBwLmNvbnRleHRQYXRoICYmXG4gICAgICAgICAgYXBwLmNvbnRleHRQYXRoID09PSBvdGhlckFwcC5jb250ZXh0UGF0aCAmJlxuICAgICAgICAgIGFwcC5vd25lci50ZW5hbnQuaWQgIT09IHRlbmFudC5uYW1lXG4gICAgICApO1xuICAgIHJldHVybiBhcHBzLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3JkZXJBcHBzKGFwcHM6IElBcHBsaWNhdGlvbltdKTogSUFwcGxpY2F0aW9uW10ge1xuICAgIHJldHVybiBvcmRlckJ5KGFwcHMsICh7IG5hbWUgfSkgPT4gbmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHNUMsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFBc0IsRUFBbUI7UUFBbkIsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFGdEIsNEJBQXVCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHbEUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3JDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVB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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uLCBJQ3VycmVudFRlbmFudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldCwgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBcHBTd2l0Y2hlclNlcnZpY2Uge1xuICAvKipcbiAgICogQXBwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKi9cbiAgYXBwc09mQ3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPEFycmF5PElBcHBsaWNhdGlvbj4+O1xuICAvKipcbiAgICogQXZhaWxhYmxlIGNsb3VkIGFwcHMgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyLlxuICAgKi9cbiAgb25lQ2xvdWRBcHBzJDogT2JzZXJ2YWJsZTxBcnJheTxJQXBwbGljYXRpb24+PjtcbiAgLyoqXG4gICAqIEF2YWlsYWJsZSBub25lIGNsb3VkIGFwcHMgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyLlxuICAgKi9cbiAgYXBwcyQ6IE9ic2VydmFibGU8QXJyYXk8SUFwcGxpY2F0aW9uPj47XG4gIGZpbmlzaGVkTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpc2libGVBcHBsaWNhdGlvblR5cGVzID0gWydIT1NURUQnLCAnRVhURVJOQUwnXTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdWk6IEFwcFN0YXRlU2VydmljZSkge1xuICAgIGNvbnN0IHsgY3VycmVudFRlbmFudCB9ID0gdGhpcy51aTtcbiAgICB0aGlzLmFwcHNPZkN1cnJlbnRVc2VyJCA9IHRoaXMudWkuY3VycmVudEFwcHNPZlVzZXIucGlwZShcbiAgICAgIG1hcChhcHBzID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhcHBzKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gICAgdGhpcy5vbmVDbG91ZEFwcHMkID0gdGhpcy5hcHBzT2ZDdXJyZW50VXNlciQucGlwZShcbiAgICAgIG1hcChhcHBzID0+IGFwcHMuZmlsdGVyKGFwcCA9PiB0aGlzLmlzQ2xvdWRBcHAoYXBwKSkpLFxuICAgICAgbWFwKGNsb3VkQXBwcyA9PiB0aGlzLm9yZGVyQXBwcyhjbG91ZEFwcHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICBjb25zdCBub25DbG91ZEFwcHMkID0gdGhpcy5hcHBzT2ZDdXJyZW50VXNlciQucGlwZShcbiAgICAgIG1hcChhcHBzID0+IGFwcHMuZmlsdGVyKGFwcCA9PiAhdGhpcy5pc0Nsb3VkQXBwKGFwcCkpKVxuICAgICk7XG4gICAgdGhpcy5hcHBzJCA9IGNvbWJpbmVMYXRlc3QoW25vbkNsb3VkQXBwcyQsIGN1cnJlbnRUZW5hbnRdKS5waXBlKFxuICAgICAgbWFwKChbYXBwcywgdGVuYW50XSkgPT4gdGhpcy5maWx0ZXJEdXBsaWNhdGVzKGFwcHMsIHRlbmFudCkpLFxuICAgICAgbWFwKGFwcHMgPT4gdGhpcy5vcmRlckFwcHMoYXBwcykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5maW5pc2hlZExvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5hcHBzJCwgdGhpcy5vbmVDbG91ZEFwcHMkXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsdGVyVmlzaWJsZShhcHBzOiBJQXBwbGljYXRpb25bXSk6IElBcHBsaWNhdGlvbltdIHtcbiAgICByZXR1cm4gYXBwcy5maWx0ZXIoXG4gICAgICBhcHAgPT5cbiAgICAgICAgdGhpcy52aXNpYmxlQXBwbGljYXRpb25UeXBlcy5pbmNsdWRlcyhhcHAudHlwZSkgJiZcbiAgICAgICAgIWFwcC5ub0FwcFN3aXRjaGVyICYmXG4gICAgICAgICF0aGlzLmlzUGFja2FnZShhcHApICYmXG4gICAgICAgICFnZXQoYXBwLCAnbWFuaWZlc3Qubm9BcHBTd2l0Y2hlcicpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1BhY2thZ2UoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAubWFuaWZlc3Q/LmlzUGFja2FnZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Nsb3VkQXBwKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYXBwLmNsb3VkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbHRlckR1cGxpY2F0ZXMoYXBwczogSUFwcGxpY2F0aW9uW10sIHRlbmFudDogSUN1cnJlbnRUZW5hbnQpOiBJQXBwbGljYXRpb25bXSB7XG4gICAgLy8gRmlsdGVyIG91dCBhcHBzIHRoYXQgaGF2ZSBkdXBsaWNhdGUgY29udGV4dHBhdGhzIGFuZCBhcmUgbm90IG93biBvd25lZCBieSB0aGUgY3VycmVudCB0ZW5hbnQ7XG4gICAgY29uc3QgZmlsdGVyRm4gPSBhcHAgPT5cbiAgICAgICFhcHBzLnNvbWUoXG4gICAgICAgIG90aGVyQXBwID0+XG4gICAgICAgICAgYXBwICE9PSBvdGhlckFwcCAmJlxuICAgICAgICAgIGFwcC5jb250ZXh0UGF0aCAmJlxuICAgICAgICAgIGFwcC5jb250ZXh0UGF0aCA9PT0gb3RoZXJBcHAuY29udGV4dFBhdGggJiZcbiAgICAgICAgICBhcHAub3duZXIudGVuYW50LmlkICE9PSB0ZW5hbnQubmFtZVxuICAgICAgKTtcbiAgICByZXR1cm4gYXBwcy5maWx0ZXIoZmlsdGVyRm4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9yZGVyQXBwcyhhcHBzOiBJQXBwbGljYXRpb25bXSk6IElBcHBsaWNhdGlvbltdIHtcbiAgICByZXR1cm4gb3JkZXJCeShhcHBzLCAoeyBuYW1lIH0pID0+IG5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cbiJdfQ==