@pepperi-addons/ngx-composite-lib 0.4.2-beta.131 → 0.4.2-beta.132

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.
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewChild, Input, Output, EventEmitter, ViewContainerRef } from '@angular/core';
2
- import { PepGuid, UIControl } from '@pepperi-addons/ngx-lib';
2
+ import { PepGuid, UIControl, PepScreenSizeType } from '@pepperi-addons/ngx-lib';
3
3
  import { Subscription } from 'rxjs';
4
4
  import { PepSelectionData, DEFAULT_PAGE_SIZE } from '@pepperi-addons/ngx-lib/list';
5
5
  import { PepGenericListService } from './generic-list.service';
@@ -90,9 +90,7 @@ export class GenericListComponent {
90
90
  this._sorting = undefined;
91
91
  this.menuHandlers = {};
92
92
  this.menuActions = [];
93
- this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
94
- //
95
- });
93
+ this.screenSize = PepScreenSizeType.SM;
96
94
  this._loader$ = this._loaderService.onChanged$.subscribe((status) => {
97
95
  //
98
96
  });
@@ -121,6 +119,11 @@ export class GenericListComponent {
121
119
  ngOnInit() {
122
120
  //
123
121
  }
122
+ ngAfterViewInit() {
123
+ this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
124
+ this.screenSize = size;
125
+ });
126
+ }
124
127
  async initList() {
125
128
  this.onLoad = true;
126
129
  setTimeout(async () => {
@@ -456,10 +459,10 @@ export class GenericListComponent {
456
459
  }
457
460
  }
458
461
  GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, deps: [{ token: i1.PepDataConvertorService }, { token: i1.PepLayoutService }, { token: i1.PepLoaderService }, { token: i2.TranslateService }, { token: i3.PepGenericListService }, { token: i1.PepSessionService }], target: i0.ɵɵFactoryTarget.Component });
459
- GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", supportSortingFields: "supportSortingFields", separator: "separator", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition", unknownCount: "unknownCount" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType", "unknownCount"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i11.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
462
+ GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", supportSortingFields: "supportSortingFields", separator: "separator", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition", unknownCount: "unknownCount" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total *ngIf=\"screenSize < 3\" [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType", "unknownCount"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i11.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
460
463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, decorators: [{
461
464
  type: Component,
462
- args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
465
+ args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total *ngIf=\"screenSize < 3\" [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
463
466
  }], ctorParameters: function () { return [{ type: i1.PepDataConvertorService }, { type: i1.PepLayoutService }, { type: i1.PepLoaderService }, { type: i2.TranslateService }, { type: i3.PepGenericListService }, { type: i1.PepSessionService }]; }, propDecorators: { search: [{
464
467
  type: ViewChild,
465
468
  args: ['search']
@@ -536,4 +539,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
536
539
  }], listLoad: [{
537
540
  type: Output
538
541
  }] } });
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBTXBCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBd0s3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEMsRUFDMUMsZUFBa0M7UUFMbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBcEt0QyxnQkFB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e1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBPYmplY3RzRGF0YVJvdyxcbiAgICBQZXBHdWlkLFxuICAgIFVJQ29udHJvbCxcbiAgICBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgIFBlcFJvd0RhdGEsXG4gICAgUGVwU2Vzc2lvblNlcnZpY2Vcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBQZXBMaXN0Q29tcG9uZW50LFxuICAgIFBlcFNlbGVjdGlvbkRhdGEsXG4gICAgSVBlcExpc3RMb2FkUGFnZUV2ZW50LFxuICAgIFBlcExpc3RTZWxlY3Rpb25UeXBlLFxuICAgIElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50LFxuICAgIERFRkFVTFRfUEFHRV9TSVpFLFxuICAgIElQZXBMaXN0TG9hZEl0ZW1zRXZlbnQsXG4gICAgUGVwTGlzdFRhYmxlVmlld1R5cGUsXG4gICAgSVBlcExpc3RTb3J0aW5nRGF0YSxcbiAgICBJUGVwTGlzdFN0YXJ0SW5kZXhDaGFuZ2VFdmVudCxcbiAgICBJUGVwTGlzdEl0ZW1DbGlja0V2ZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9tZW51JztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcEJyZWFkQ3J1bWJJdGVtLFxuICAgIElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnJlYWQtY3J1bWJzJztcbmltcG9ydCB7IElQZXBTZWFyY2hDbGlja0V2ZW50LCBQZXBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zZWFyY2gnO1xuXG5pbXBvcnQge1xuICAgIERhdGFWaWV3LFxuICAgIEdyaWREYXRhVmlld1xufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSxcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlLFxuICAgIElQZXBHZW5lcmljTGlzdFBhZ2VyLFxuICAgIElQZXBHZW5lcmljTGlzdEFjdGlvbnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIsXG4gICAgSVBlcFNtYXJ0RmlsdGVycyxcbiAgICBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlXG59IGZyb20gJy4vZ2VuZXJpYy1saXN0Lm1vZGVsJztcbmltcG9ydCB7IFBlcEdlbmVyaWNMaXN0U2VydmljZSB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVZpZXdDb252ZXJ0ZXIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvZGF0YS12aWV3cyc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckRhdGEsXG4gICAgUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQsXG4gICAgUGVwU21hcnRGaWx0ZXJzQ29tcG9uZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdlbmVyaWMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5zY3NzJywgJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwR2VuZXJpY0xpc3RTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBQZXBTZWFyY2hDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgnc21hcnRGaWx0ZXJzQ29tcG9uZW50Jykgc21hcnRGaWx0ZXJzQ29tcG9uZW50OiBQZXBTbWFydEZpbHRlcnNDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF9wZXBMaXN0Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3BlcExpc3RDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBzZXQgcGVwTGlzdENvbnRhaW5lcih2YWw6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lciA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlID0ge1xuICAgICAgICBpbml0OiBhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZpZXc6IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiAtMSxcbiAgICAgICAgICAgICAgICBpdGVtczogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbDogSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdmFsO1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0U21hcnRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9uczogSVBlcEdlbmVyaWNMaXN0QWN0aW9ucyA9IHtcbiAgICAgICAgZ2V0OiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHV1aWRNYXBwaW5nID0gJ2tleSc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFkZFBhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGl0bGUgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZGVzY3JpcHRpb24gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgaW5saW5lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9EYXRhRm91bmRNc2cgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZW1wdHlTdGF0ZTogSVBlcEdlbmVyaWNMaXN0RW1wdHlTdGF0ZSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uVHlwZTogUGVwTGlzdFNlbGVjdGlvblR5cGUgPSAnbXVsdGknO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0U29ydGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0U29ydGluZ0ZpZWxkczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlcGFyYXRvciA9ICcsJztcblxuICAgIEBJbnB1dCgpXG4gICAgc29ydGluZzogSVBlcExpc3RTb3J0aW5nRGF0YSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FjaGVTaXplID0gLTE7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHBhZ2VyOiBJUGVwR2VuZXJpY0xpc3RQYWdlciA9IHtcbiAgICAgICAgdHlwZTogJ3Njcm9sbCdcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlVmlld1R5cGU6IFBlcExpc3RUYWJsZVZpZXdUeXBlID0gJ3JlZ3VsYXInO1xuXG4gICAgQElucHV0KClcbiAgICB6ZWJyYVN0cmlwZXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNtYXJ0RmlsdGVyKHZhbDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5zbWFydEZpbHRlcnMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvU21hcnRGaWx0ZXIodmFsKTtcbiAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMgPSB0aGlzLnNtYXJ0RmlsdGVycy5kYXRhIHx8IFtdO1xuICAgICAgICB0aGlzLnNob3dTbWFydEZpbHRlciA9IHRoaXMuc21hcnRGaWx0ZXJzLmZpZWxkcy5sZW5ndGggPiAwOyBcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dUb3BCYXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYnJlYWRDcnVtYnNJdGVtczogUGVwQnJlYWRDcnVtYkl0ZW1bXSA9IG5ldyBBcnJheTxQZXBCcmVhZENydW1iSXRlbT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0QWxsID0gZmFsc2VcblxuICAgIEBJbnB1dCgpXG4gICAgc2Nyb2xsUG9zaXRpb24gPSAwXG5cbiAgICBASW5wdXQoKVxuICAgIHVua25vd25Db3VudCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgaXRlbUNsaWNrID1uZXcgRXZlbnRFbWl0dGVyPElQZXBMaXN0SXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJyZWFkQ3J1bWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBzdGFydEluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwTGlzdFN0YXJ0SW5kZXhDaGFuZ2VFdmVudD4oKVxuXG4gICAgQE91dHB1dCgpXG4gICAgbGlzdExvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHNldCBwZXBMaXN0KHZhbDogUGVwTGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl9wZXBMaXN0ID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBwZXBMaXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNpemUkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBfbG9hZGVyJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgcHJpdmF0ZSBfZGF0YVZpZXc6IERhdGFWaWV3ID0ge1xuICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICB9O1xuICAgIHByaXZhdGUgX3BlcExpc3Q6IGFueTtcbiAgICBvbkxvYWQgPSB0cnVlO1xuICAgIGxpc3RJbnB1dHM6IGFueTtcbiAgICB0b3RhbFJvd0NvdW50ID0gLTE7XG4gICAgc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgc2hvd1NtYXJ0RmlsdGVyID0gZmFsc2U7XG4gICAgc2hvd0VtcHR5U3RhdGUgPSBmYWxzZTtcbiAgICBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgfTtcbiAgICBwcml2YXRlIF9hcHBsaWVkRmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfc29ydGluZzogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBtZW51SGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogKG9iajogYW55KSA9PiBQcm9taXNlPHZvaWQ+IH0gPSB7fTtcbiAgICBtZW51QWN0aW9uczogQXJyYXk8UGVwTWVudUl0ZW0+ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0YUNvbnZlcnRvclNlcnZpY2U6IFBlcERhdGFDb252ZXJ0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2FkZXJTZXJ2aWNlOiBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2dlbmVyaWNMaXN0U2VydmljZTogUGVwR2VuZXJpY0xpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9zZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcmVzaXplJCA9IHRoaXMuX2xheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHsgICAgICAgICAgICBcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9sb2FkZXIkID0gdGhpcy5fbG9hZGVyU2VydmljZS5vbkNoYW5nZWQkLnN1YnNjcmliZSgoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAvL1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRMaXN0KCkge1xuICAgICAgICB0aGlzLm9uTG9hZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4geyAvL21ha2luZyBzdXJlIGFsbCBpbnB1dCBkYXRhIGlzIGF2YWlsYWJsZVxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAvL21lcmdlIHNlbGVjdG9yIGlucHV0cyB3aXRoIGNhbGxiYWNrIGlucHV0c1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhYmxlSW5wdXRzKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZnJvbUluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgdG9JbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgKiB0aGlzLmxpc3RJbnB1dHMucGFnZXIuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSBmcm9tSW5kZXggKyAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkUpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b0luZGV4ID0gMTAwOy8vVE8gRE8gLSBnZXQgdmFsdWUgZnJvbSAtIHRoaXMuY3VzdG9tTGlzdC5nZXRUb3BJdGVtcygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERhdGEoZnJvbUluZGV4LCB0b0luZGV4KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzPy5lbXB0eVN0YXRlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW1wdHlTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vc2hvdyBlbXB0eSBzdGF0ZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dFbXB0eVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlID0ge307XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLnRpdGxlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHRU5FUklDX0xJU1QuRU1QVFlfU1RBVEUuVElUTEUnKS5zdWJzY3JpYmUodGV4dCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLnRpdGxlID0gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUuZGVzY3JpcHRpb24pIHsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0dFTkVSSUNfTElTVC5FTVBUWV9TVEFURS5ERVNDUklQVElPTicpLnN1YnNjcmliZSh0ZXh0ID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUuZGVzY3JpcHRpb24gPSB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlcExpc3RDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wZXBMaXN0Q29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBQZXBMaXN0Q29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX3BlcExpc3RDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFBlcExpc3RDb21wb25lbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcExpc3QgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52aWV3VHlwZSA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRMaXN0Vmlld1R5cGUodGhpcy5fZGF0YVZpZXcuVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudGFibGVWaWV3VHlwZSA9IHRoaXMubGlzdElucHV0cy50YWJsZVZpZXdUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnplYnJhU3RyaXBlcyA9IHRoaXMubGlzdElucHV0cy56ZWJyYVN0cmlwZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvY2tJdGVtSW5uZXJFdmVudHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnN1cHBvcnRTb3J0aW5nID0gdGhpcy5saXN0SW5wdXRzLnN1cHBvcnRTb3J0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnN1cHBvcnRTb3J0aW5nRmllbGRzID0gdGhpcy5saXN0SW5wdXRzLnN1cHBvcnRTb3J0aW5nRmllbGRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLlNFUEFSQVRPUiA9IHRoaXMubGlzdElucHV0cy5zZXBhcmF0b3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zb3J0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNhY2hlU2l6ZSA9IHRoaXMubGlzdElucHV0cy5jYWNoZVNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3Rpb25UeXBlRm9yQWN0aW9ucyA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVBbGxTZWxlY3Rpb25Jbk11bHRpID0gdGhpcy5saXN0SW5wdXRzLmhpZGVTZWxlY3RBbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93Q2FyZFNlbGVjdGlvbiA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlICE9PSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZXJUeXBlID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZVNpemUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXI/LnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhZ2VJbmRleCA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uaW5kZXggfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuc2VsZWN0aW9uVHlwZSA9PSBcIm11bHRpXCIgJiYgdGhpcy5zZWxlY3RBbGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25TZXJ2aWNlLnNldE9iamVjdCgnQWxsU2VsZWN0ZWQnLCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5vRGF0YUZvdW5kTXNnID0gdGhpcy5saXN0SW5wdXRzLm5vRGF0YUZvdW5kTXNnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnN0YXJ0SW5kZXhDaGFuZ2Uuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4Q2hhbmdlLmVtaXQoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pdGVtQ2xpY2suc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWVsZENsaWNrLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkSXRlbXNDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRJdGVtcy5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkSXRlbXMoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRQYWdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRQYWdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNvcnRpbmdDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU29ydGluZ0NoYW5nZSgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGlzdExvYWQuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQodGhpcy5fcGVwTGlzdC5zZWxlY3RlZEl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxpc3RMb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRlZExpc3Q6IE9iamVjdHNEYXRhUm93W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSB0aGlzLmdldFVpQ29udHJvbChEYXRhVmlld0NvbnZlcnRlci50b1VJQ29udHJvbERhdGEodGhpcy5fZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0TGlzdERhdGEodWlDb250cm9sLCB0aGlzLnRvdGFsUm93Q291bnQsIGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNjcm9sbFRvSW5kZXgodGhpcy5zY3JvbGxQb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgc3VwcG9ydFNvcnRpbmdGaWVsZHM6IHRoaXMuc3VwcG9ydFNvcnRpbmdGaWVsZHMsXG4gICAgICAgICAgICBzZXBhcmF0b3I6IHRoaXMuc2VwYXJhdG9yLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgY2FjaGVTaXplOiB0aGlzLmNhY2hlU2l6ZSxcbiAgICAgICAgICAgIGhpZGVTZWxlY3RBbGw6IHRoaXMuaGlkZVNlbGVjdEFsbCxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZTogdGhpcy5lbXB0eVN0YXRlLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmhhc1Byb3BlcnR5KHRoaXMubGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzW2l0ZW1bMF1dID0gaXRlbVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVtaW5lcyB3aGV0aGVyIGVtcHR5IHN0YXRlIGlzIHRvIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW1wdHlTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zaG93RW1wdHlTdGF0ZSA9IHRoaXMudG90YWxSb3dDb3VudCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPT09ICcnICYmXG4gICAgICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVaUNvbnRyb2woZGF0YTogYW55KTogVUlDb250cm9sIHtcbiAgICAgICAgY29uc3QgdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IFtdO1xuXG4gICAgICAgIGlmIChkYXRhPy5Db250cm9sRmllbGRzKSB7XG4gICAgICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IGRhdGEuQ29udHJvbEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9VaUNvbnRyb2xGaWVsZChmaWVsZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpQ29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNZW51SXRlbXMoKTogdm9pZCB7IC8vVE9ET1xuICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U21hcnRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ29tcG9uZW50Py5jbGVhckZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWREYXRhKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IGRhdGE6IElQZXBHZW5lcmljTGlzdEluaXREYXRhID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleFxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRvdGFsIGNvdW50XG4gICAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IGRhdGE/LnRvdGFsQ291bnQgfHwgMDtcbiAgICAgICAgdGhpcy5zZXRFbXB0eVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFWaWV3ID0gZGF0YS5kYXRhVmlldztcblxuICAgICAgICAgICAgaWYgKGRhdGEuaXRlbXM/Lmxlbmd0aCA+IDAgJiYgIWRhdGEuaXNQZXBSb3dEYXRhKSB7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnZlcmVkRGF0YSA9IGRhdGEuaXRlbXMubWFwKGl0ZW0gPT4gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbSwgZGF0YS5kYXRhVmlldywgdGhpcy51dWlkTWFwcGluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnZlcmVkRGF0YTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRGF0YUxpc3QoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlciwgcGFnZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS51cGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2Uuc2hvdygpO1xuICAgICAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgICAgICBjb25zdCBkYXRhTGlzdCA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2UudXBkYXRlKHtcbiAgICAgICAgICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPyB0aGlzLl9hcHBsaWVkRmlsdGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmcm9tSW5kZXg6IGZyb21JbmRleCxcbiAgICAgICAgICAgICAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2UuaGlkZSgpO1xuXG4gICAgICAgICAgICBpZiAoZGF0YUxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb252ZXJlZERhdGEgPSBkYXRhTGlzdC5tYXAoaXRlbSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvUGVwUm93RGF0YShpdGVtLCB0aGlzLl9kYXRhVmlldywgdGhpcy51dWlkTWFwcGluZykpO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJlZERhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyB2aXJ0dWFsIHNjcm9sbCBpdGVtcyBmcm9tIGFwaVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgb25Mb2FkSXRlbXMoZXZlbnQ6IElQZXBMaXN0TG9hZEl0ZW1zRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMudXBkYXRlRGF0YUxpc3QoZXZlbnQuZnJvbUluZGV4LCBldmVudC50b0luZGV4KTtcbiAgICAgICAgY29uc3QgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShsaXN0KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBlcExpc3Quc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXBMaXN0LnVwZGF0ZUl0ZW1zKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBwYWdpbmcgYnVsayBmcm9tIGFwaVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgb25Mb2FkUGFnZShldmVudDogSVBlcExpc3RMb2FkUGFnZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZyb21JbmRleCA9IGV2ZW50LnBhZ2VJbmRleCAqIGV2ZW50LnBhZ2VTaXplO1xuICAgICAgICBjb25zdCB0b0luZGV4ID0gTWF0aC5taW4oZnJvbUluZGV4ICsgZXZlbnQucGFnZVNpemUgLSAxLCB0aGlzLnRvdGFsUm93Q291bnQgLSAxKTtcbiAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMudXBkYXRlRGF0YUxpc3QoZnJvbUluZGV4LCB0b0luZGV4LCBldmVudC5wYWdlSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVwTGlzdC5zZXRTZWxlY3RlZElkcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlUGFnZShjb252ZXJ0ZWRMaXN0LCBldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5SWQoaWQ6IHN0cmluZyk6IE9iamVjdHNEYXRhUm93IHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldEl0ZW1EYXRhQnlJRChpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlbGVjdGVkSXRlbXMoKTogUGVwU2VsZWN0aW9uRGF0YSB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdC5nZXRTZWxlY3RlZEl0ZW1zRGF0YSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQYWdlSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcExpc3QucGFnZUluZGV4O1xuICAgIH1cblxuICAgIG9uQWN0aW9uSXRlbUNsaWNrZWQoYWN0aW9uOiBJUGVwTWVudUl0ZW1DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0TWVudU9iamVjdHMoKTtcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVIYW5kbGVyc1thY3Rpb24uc291cmNlLmtleV0ocmVzdWx0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWFyY2hDaGFuZ2VkKGV2ZW50OiBJUGVwU2VhcmNoQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0cmluZyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlZChzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyKSB7XG4gICAgICAgIC8vbG9hZGluZyBtZW51IGl0ZW1zIGFmdGVyIHBlcC1saXN0IHNlbGVjdGVkIGl0ZW1zIGFyZSB1cGRhdGVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgfVxuXG4gICAgb25CcmVhZENydW1iSXRlbUNsaWNrKGV2ZW50OiBJUGVwQnJlYWRDcnVtYkl0ZW1DbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuYnJlYWRDcnVtYkl0ZW1DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlZChldmVudDogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNvcnRpbmdDaGFuZ2UoZXZlbnQ6IElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSBldmVudDtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyc0NoYW5nZShmaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10pIHtcbiAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25MaXN0TG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0TG9hZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemUkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2xvYWRlciQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlciQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiAqbmdJZj1cImlubGluZVwiIGNsYXNzPVwiaW5saW5lLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ2FkZC1wYWRkaW5nJzogYWRkUGFkZGluZywgJ3dpdGgtc21hcnQtZmlsdGVycyc6IHNob3dTbWFydEZpbHRlciB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1hcmVhXCIgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvcEJhclwiIGNsYXNzPVwiaW5saW5lLXRvcC1iYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZENydW1ic0l0ZW1zLmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkQ3J1bWJzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic21hcnRGaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb25Mb2FkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPHBlcC1wYWdlLWxheW91dCAqbmdJZj1cIiFpbmxpbmVcIiBjbGFzcz1cIm5vbmUtaW5saW5lXCIgW2FkZFBhZGRpbmddPVwiYWRkUGFkZGluZ1wiIFtzaG93U2hhZG93XT1cInNob3dTbWFydEZpbHRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U21hcnRGaWx0ZXJcIiBwZXAtc2lkZS1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic21hcnRGaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9wQmFyXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCIhb25Mb2FkXCIgcGVwLW1haW4tYXJlYSBjbGFzcz1cIm1haW4tYXJlYS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9wZXAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjdG9wQmFyVGVtcGxhdGU+XG4gICAgPHBlcC10b3AtYmFyIFt0aXRsZV09XCJ0aXRsZVwiIFtpbmxpbmVdPVwiaW5saW5lXCI+XG4gICAgICAgIDxkaXYgaGVhZGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaGVhZGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGZvb3Rlci1zdGFydC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnQtYm90dG9tLWFyZWFdXCI+PC9uZy1jb250ZW50PiAgICAgICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmb290ZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYm90dG9tLWFyZWFdXCI+PC9uZy1jb250ZW50PiAgICAgXG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPHBlcC1saXN0LWFjdGlvbnMgKm5nSWY9XCJtZW51QWN0aW9ucy5sZW5ndGggPiAwXCIgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW2FjdGlvbnNdPVwibWVudUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uSXRlbUNsaWNrZWQoJGV2ZW50KVwiPjwvcGVwLWxpc3QtYWN0aW9ucz5cbiAgICAgICAgPHBlcC1saXN0LXRvdGFsIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiIFt0b3RhbFJvd3NdPVwidG90YWxSb3dDb3VudFwiIFt1bmtub3duQ291bnRdPVwidW5rbm93bkNvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPiAgICBcbiAgICA8cGVwLXNpZGUtYmFyICNzaWRlTmF2IFtuZ0NsYXNzXT1cInsnc21hcnQtZmlsdGVyLWFyZWEnOiBpbmxpbmV9XCI+IFxuICAgICAgICA8cGVwLXNtYXJ0LWZpbHRlcnMgI3NtYXJ0RmlsdGVyc0NvbXBvbmVudCBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZT8udGl0bGUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZW1wdHktZGVzY3JcIj57eyBsaXN0SW5wdXRzLmVtcHR5U3RhdGU/LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiIGNsYXNzPVwibGVhZi1za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiIGNsYXNzPVwibGVhZi1yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibGVhZi1za2lueVwiPlxuICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJsZWFmX3NraW55XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibGVhZi1yb3VuZFwiPlxuICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJsZWFmX3JvdW5kXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgPC9tYXQtaWNvbj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjcGVwTGlzdENvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVQsaUJBQWlCLEVBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBRUgsZ0JBQWdCLEVBSWhCLGlCQUFpQixFQU1wQixNQUFNLDhCQUE4QixDQUFDO0FBeUJ0QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjL0QsTUFBTSxPQUFPLG9CQUFvQjtJQXlLN0IsWUFDWSxxQkFBOEMsRUFDOUMsY0FBZ0MsRUFDaEMsY0FBZ0MsRUFDaEMsVUFBNEIsRUFDNUIsbUJBQTBDLEVBQzFDLGVBQWtDO1FBTGxDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBeUI7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQzFDLG9CQUFlLEdBQWYsZUFBZSxDQUFt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SVAsbUJBQW1CO3NCQURsQixNQUFNO2dCQUlQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQZXBEYXRhQ29udmVydG9yU2VydmljZSxcbiAgICBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgIE9iamVjdHNEYXRhUm93LFxuICAgIFBlcEd1aWQsXG4gICAgVUlDb250cm9sLFxuICAgIFBlcExvYWRlclNlcnZpY2UsXG4gICAgUGVwUm93RGF0YSxcbiAgICBQZXBTZXNzaW9uU2VydmljZSxcbiAgICBQZXBTY3JlZW5TaXplVHlwZVxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRDbGlja0V2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcExpc3RDb21wb25lbnQsXG4gICAgUGVwU2VsZWN0aW9uRGF0YSxcbiAgICBJUGVwTGlzdExvYWRQYWdlRXZlbnQsXG4gICAgUGVwTGlzdFNlbGVjdGlvblR5cGUsXG4gICAgSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQsXG4gICAgREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgSVBlcExpc3RMb2FkSXRlbXNFdmVudCxcbiAgICBQZXBMaXN0VGFibGVWaWV3VHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdEYXRhLFxuICAgIElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50LFxuICAgIElQZXBMaXN0SXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvbGlzdCc7XG5pbXBvcnQge1xuICAgIFBlcE1lbnVJdGVtLFxuICAgIElQZXBNZW51SXRlbUNsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL21lbnUnO1xuaW1wb3J0IHsgSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgUGVwQnJlYWRDcnVtYkl0ZW0sXG4gICAgSVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9icmVhZC1jcnVtYnMnO1xuaW1wb3J0IHsgSVBlcFNlYXJjaENsaWNrRXZlbnQsIFBlcFNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NlYXJjaCc7XG5cbmltcG9ydCB7XG4gICAgRGF0YVZpZXcsXG4gICAgR3JpZERhdGFWaWV3XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9wYXBpLXNkay9kaXN0L2VudGl0aWVzL2RhdGEtdmlldyc7XG5pbXBvcnQge1xuICAgIElQZXBHZW5lcmljTGlzdEluaXREYXRhLFxuICAgIElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UsXG4gICAgSVBlcEdlbmVyaWNMaXN0UGFnZXIsXG4gICAgSVBlcEdlbmVyaWNMaXN0QWN0aW9ucyxcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwU21hcnRGaWx0ZXJzLFxuICAgIElQZXBHZW5lcmljTGlzdEVtcHR5U3RhdGVcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgUGVwR2VuZXJpY0xpc3RTZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmljLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhVmlld0NvbnZlcnRlciB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9kYXRhLXZpZXdzJztcbmltcG9ydCB7XG4gICAgSVBlcFNtYXJ0RmlsdGVyRGF0YSxcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBQZXBTbWFydEZpbHRlcnNDb21wb25lbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnNjc3MnLCAnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBHZW5lcmljTGlzdFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2g6IFBlcFNlYXJjaENvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICBAVmlld0NoaWxkKCdzbWFydEZpbHRlcnNDb21wb25lbnQnKSBzbWFydEZpbHRlcnNDb21wb25lbnQ6IFBlcFNtYXJ0RmlsdGVyc0NvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgX3BlcExpc3RDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgncGVwTGlzdENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIHNldCBwZXBMaXN0Q29udGFpbmVyKHZhbDogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICB0aGlzLl9wZXBMaXN0Q29udGFpbmVyID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UgPSB7XG4gICAgICAgIGluaXQ6IGFzeW5jIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhVmlldzoge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnQ6IC0xLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2YWw7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgICB0aGlzLmluaXRTbWFydFNlYXJjaCgpO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25zOiBJUGVwR2VuZXJpY0xpc3RBY3Rpb25zID0ge1xuICAgICAgICBnZXQ6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIEBJbnB1dCgpXG4gICAgdXVpZE1hcHBpbmcgPSAna2V5JztcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkUGFkZGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0aXRsZSA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBpbmxpbmUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBub0RhdGFGb3VuZE1zZyA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBlbXB0eVN0YXRlOiBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25UeXBlOiBQZXBMaXN0U2VsZWN0aW9uVHlwZSA9ICdtdWx0aSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHN1cHBvcnRTb3J0aW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHN1cHBvcnRTb3J0aW5nRmllbGRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VwYXJhdG9yID0gJywnO1xuXG4gICAgQElucHV0KClcbiAgICBzb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdEYXRhIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBjYWNoZVNpemUgPSAtMTtcblxuICAgIEBJbnB1dCgpXG4gICAgaGlkZVNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcGFnZXI6IElQZXBHZW5lcmljTGlzdFBhZ2VyID0ge1xuICAgICAgICB0eXBlOiAnc2Nyb2xsJ1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgdGFibGVWaWV3VHlwZTogUGVwTGlzdFRhYmxlVmlld1R5cGUgPSAncmVndWxhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHplYnJhU3RyaXBlcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc21hcnRGaWx0ZXIodmFsOiBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcikge1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVycyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlcih2YWwpO1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHRoaXMuc21hcnRGaWx0ZXJzLmRhdGEgfHwgW107XG4gICAgICAgIHRoaXMuc2hvd1NtYXJ0RmlsdGVyID0gdGhpcy5zbWFydEZpbHRlcnMuZmllbGRzLmxlbmd0aCA+IDA7IFxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RvcEJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBicmVhZENydW1ic0l0ZW1zOiBQZXBCcmVhZENydW1iSXRlbVtdID0gbmV3IEFycmF5PFBlcEJyZWFkQ3J1bWJJdGVtPigpO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gICAgQElucHV0KClcbiAgICBzY3JvbGxQb3NpdGlvbiA9IDBcblxuICAgIEBJbnB1dCgpXG4gICAgdW5rbm93bkNvdW50ID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpdGVtQ2xpY2sgPW5ldyBFdmVudEVtaXR0ZXI8SVBlcExpc3RJdGVtQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnJlYWRDcnVtYkl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHN0YXJ0SW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50PigpXG5cbiAgICBAT3V0cHV0KClcbiAgICBsaXN0TG9hZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgc2V0IHBlcExpc3QodmFsOiBQZXBMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX3BlcExpc3QgPSB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IHBlcExpc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2l6ZSQ6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIF9sb2FkZXIkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBwcml2YXRlIF9kYXRhVmlldzogRGF0YVZpZXcgPSB7XG4gICAgICAgIFR5cGU6ICdHcmlkJ1xuICAgIH07XG4gICAgcHJpdmF0ZSBfcGVwTGlzdDogYW55O1xuICAgIG9uTG9hZCA9IHRydWU7XG4gICAgbGlzdElucHV0czogYW55O1xuICAgIHRvdGFsUm93Q291bnQgPSAtMTtcbiAgICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgICBzaG93U21hcnRGaWx0ZXIgPSBmYWxzZTtcbiAgICBzaG93RW1wdHlTdGF0ZSA9IGZhbHNlO1xuICAgIHNtYXJ0RmlsdGVyczogSVBlcFNtYXJ0RmlsdGVycyA9IHtcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIHRpdGxlOiAnRmlsdGVycydcbiAgICB9O1xuICAgIHByaXZhdGUgX2FwcGxpZWRGaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIG1lbnVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiAob2JqOiBhbnkpID0+IFByb21pc2U8dm9pZD4gfSA9IHt9O1xuICAgIG1lbnVBY3Rpb25zOiBBcnJheTxQZXBNZW51SXRlbT4gPSBbXTtcbiAgICBzY3JlZW5TaXplID0gUGVwU2NyZWVuU2l6ZVR5cGUuU007XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2RhdGFDb252ZXJ0b3JTZXJ2aWNlOiBQZXBEYXRhQ29udmVydG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbG9hZGVyU2VydmljZTogUGVwTG9hZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9nZW5lcmljTGlzdFNlcnZpY2U6IFBlcEdlbmVyaWNMaXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfc2Vzc2lvblNlcnZpY2U6IFBlcFNlc3Npb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2xvYWRlciQgPSB0aGlzLl9sb2FkZXJTZXJ2aWNlLm9uQ2hhbmdlZCQuc3Vic2NyaWJlKChzdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplJCA9IHRoaXMuX2xheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHsgICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7ICAgICAgIFxuICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5vbkxvYWQgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHsgLy9tYWtpbmcgc3VyZSBhbGwgaW5wdXQgZGF0YSBpcyBhdmFpbGFibGVcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlKSB7XG4gICAgICAgICAgICAgICAgLy9tZXJnZSBzZWxlY3RvciBpbnB1dHMgd2l0aCBjYWxsYmFjayBpbnB1dHNcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRUYWJsZUlucHV0cygpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGZyb21JbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHRvSW5kZXggPSAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdElucHV0cy5wYWdlci50eXBlID09PSAncGFnZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZyb21JbmRleCA9IHRoaXMubGlzdElucHV0cy5wYWdlci5zaXplICogdGhpcy5saXN0SW5wdXRzLnBhZ2VyLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0b0luZGV4ID0gZnJvbUluZGV4ICsgKHRoaXMubGlzdElucHV0cy5wYWdlci5zaXplIHx8IERFRkFVTFRfUEFHRV9TSVpFKSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9JbmRleCA9IDEwMDsvL1RPIERPIC0gZ2V0IHZhbHVlIGZyb20gLSB0aGlzLmN1c3RvbUxpc3QuZ2V0VG9wSXRlbXMoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxvYWREYXRhKGZyb21JbmRleCwgdG9JbmRleCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdElucHV0cz8uZW1wdHlTdGF0ZT8uc2hvdyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEVtcHR5U3RhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvL3Nob3cgZW1wdHkgc3RhdGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93RW1wdHlTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLlRJVExFJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHRU5FUklDX0xJU1QuRU1QVFlfU1RBVEUuREVTQ1JJUFRJT04nKS5zdWJzY3JpYmUodGV4dCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uID0gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgUGVwTGlzdENvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9saXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChQZXBMaXN0Q29tcG9uZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBMaXN0ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld1R5cGUgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0TGlzdFZpZXdUeXBlKHRoaXMuX2RhdGFWaWV3LlR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRhYmxlVmlld1R5cGUgPSB0aGlzLmxpc3RJbnB1dHMudGFibGVWaWV3VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS56ZWJyYVN0cmlwZXMgPSB0aGlzLmxpc3RJbnB1dHMuemVicmFTdHJpcGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2NrSXRlbUlubmVyRXZlbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zdXBwb3J0U29ydGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZ0ZpZWxkcyA9IHRoaXMubGlzdElucHV0cy5zdXBwb3J0U29ydGluZ0ZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5TRVBBUkFUT1IgPSB0aGlzLmxpc3RJbnB1dHMuc2VwYXJhdG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNvcnRpbmcgPSB0aGlzLmxpc3RJbnB1dHMuc29ydGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jYWNoZVNpemUgPSB0aGlzLmxpc3RJbnB1dHMuY2FjaGVTaXplO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0aW9uVHlwZUZvckFjdGlvbnMgPSB0aGlzLmxpc3RJbnB1dHMuc2VsZWN0aW9uVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlQWxsU2VsZWN0aW9uSW5NdWx0aSA9IHRoaXMubGlzdElucHV0cy5oaWRlU2VsZWN0QWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2hvd0NhcmRTZWxlY3Rpb24gPSB0aGlzLmxpc3RJbnB1dHMuc2VsZWN0aW9uVHlwZSAhPT0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhZ2VyVHlwZSA9IHRoaXMubGlzdElucHV0cy5wYWdlci50eXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdElucHV0cy5wYWdlci50eXBlID09PSAncGFnZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhZ2VTaXplID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyPy5zaXplIHx8IERFRkFVTFRfUEFHRV9TSVpFO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlSW5kZXggPSB0aGlzLmxpc3RJbnB1dHMucGFnZXI/LmluZGV4IHx8IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnNlbGVjdGlvblR5cGUgPT0gXCJtdWx0aVwiICYmIHRoaXMuc2VsZWN0QWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uU2VydmljZS5zZXRPYmplY3QoJ0FsbFNlbGVjdGVkJywgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ub0RhdGFGb3VuZE1zZyA9IHRoaXMubGlzdElucHV0cy5ub0RhdGFGb3VuZE1zZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdGFydEluZGV4Q2hhbmdlLnN1YnNjcmliZSgkZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleENoYW5nZS5lbWl0KCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaXRlbUNsaWNrLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRDbGljay5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DdXN0b21pemVGaWVsZENsaWNrKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkSXRlbXNDaGFuZ2VkKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2FkSXRlbXMuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZEl0ZW1zKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2FkUGFnZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkUGFnZSgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0aW5nQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNvcnRpbmdDaGFuZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxpc3RMb2FkLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkSXRlbXNDaGFuZ2VkKHRoaXMuX3BlcExpc3Quc2VsZWN0ZWRJdGVtcy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25MaXN0TG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0ZWRMaXN0OiBPYmplY3RzRGF0YVJvd1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlDb250cm9sID0gdGhpcy5nZXRVaUNvbnRyb2woRGF0YVZpZXdDb252ZXJ0ZXIudG9VSUNvbnRyb2xEYXRhKHRoaXMuX2RhdGFWaWV3KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdExpc3REYXRhKHVpQ29udHJvbCwgdGhpcy50b3RhbFJvd0NvdW50LCBjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zY3JvbGxUb0luZGV4KHRoaXMuc2Nyb2xsUG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZHMgaW5wdXRzIGluIGNhc2UgdGhleSBhcmUgcHJvdmlkZWQgYW5kIG1lcmdlIHdpdGggc2VsZWN0b3IgaW5wdXRzXG4gICAgICogQHJldHVybnMgbWVyZ2VkIHBlcC1saXN0IGlucHV0c1xuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZFRhYmxlSW5wdXRzKCkge1xuICAgICAgICB0aGlzLmxpc3RJbnB1dHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0U29ydGluZzogdGhpcy5zdXBwb3J0U29ydGluZyxcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nRmllbGRzOiB0aGlzLnN1cHBvcnRTb3J0aW5nRmllbGRzLFxuICAgICAgICAgICAgc2VwYXJhdG9yOiB0aGlzLnNlcGFyYXRvcixcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuc29ydGluZyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogdGhpcy5jYWNoZVNpemUsXG4gICAgICAgICAgICBoaWRlU2VsZWN0QWxsOiB0aGlzLmhpZGVTZWxlY3RBbGwsXG4gICAgICAgICAgICBzZWxlY3Rpb25UeXBlOiB0aGlzLnNlbGVjdGlvblR5cGUsXG4gICAgICAgICAgICBwYWdlcjogdGhpcy5wYWdlcixcbiAgICAgICAgICAgIG5vRGF0YUZvdW5kTXNnOiB0aGlzLm5vRGF0YUZvdW5kTXNnLFxuICAgICAgICAgICAgdGFibGVWaWV3VHlwZTogdGhpcy50YWJsZVZpZXdUeXBlLFxuICAgICAgICAgICAgemVicmFTdHJpcGVzOiB0aGlzLnplYnJhU3RyaXBlcyxcbiAgICAgICAgICAgIGVtcHR5U3RhdGU6IHRoaXMuZW1wdHlTdGF0ZSxcbiAgICAgICAgICAgIHNlbGVjdEFsbDogdGhpcy5zZWxlY3RBbGxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9kYXRhU291cmNlLmlucHV0cykuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLmxpc3RJbnB1dHMsIGl0ZW1bMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0c1tpdGVtWzBdXSA9IGl0ZW1bMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRlbWluZXMgd2hldGhlciBlbXB0eSBzdGF0ZSBpcyB0byBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVtcHR5U3RhdGUoKSB7XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5U3RhdGUgPSB0aGlzLnRvdGFsUm93Q291bnQgPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID09PSAnJyAmJlxuICAgICAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VWlDb250cm9sKGRhdGE6IGFueSk6IFVJQ29udHJvbCB7XG4gICAgICAgIGNvbnN0IHVpQ29udHJvbCA9IG5ldyBVSUNvbnRyb2woKTtcbiAgICAgICAgdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YT8uQ29udHJvbEZpZWxkcykge1xuICAgICAgICAgICAgdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSBkYXRhLkNvbnRyb2xGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvVWlDb250cm9sRmllbGQoZmllbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1aUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkTWVudUl0ZW1zKCk6IHZvaWQgeyAvL1RPRE9cbiAgICAgICAgaWYgKHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFjdGlvbnMoKS50aGVuKFxuICAgICAgICAgICAgICAgIHggPT4gdGhpcy5tZW51QWN0aW9ucyA9IHhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE1lbnVBY3Rpb25zKCk6IFByb21pc2U8UGVwTWVudUl0ZW1bXT4ge1xuICAgICAgICBjb25zdCByZXM6IFBlcE1lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBhd2FpdCB0aGlzLmFjdGlvbnMuZ2V0KHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzID0ge307XG4gICAgICAgICAgICBhY3Rpb25zPy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBQZXBHdWlkLm5ld0d1aWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVIYW5kbGVyc1t1dWlkXSA9IGl0ZW0uaGFuZGxlcjtcbiAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogdXVpZCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50aXRsZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1lbnVPYmplY3RzKCkge1xuICAgICAgICBjb25zdCBtZW51T2JqZWN0czogYW55ID0ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBkYXRhOiBuZXcgUGVwU2VsZWN0aW9uRGF0YSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgbWVudU9iamVjdHMuc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5kYXRhID0gdGhpcy5wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVudU9iamVjdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0cmluZyA9ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaD8uaW5pdFNlYXJjaCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNtYXJ0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyc0NvbXBvbmVudD8uY2xlYXJGaWx0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogUHJvbWlzZTxQZXBSb3dEYXRhW10+IHtcbiAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5zaG93KCk7XG4gICAgICAgIGxldCBjb252ZXJlZERhdGE6IFBlcFJvd0RhdGFbXSA9IFtdO1xuICAgICAgICBjb25zdCBkYXRhOiBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2UuaW5pdCh7XG4gICAgICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuX2FwcGxpZWRGaWx0ZXJzLmxlbmd0aCA/IHRoaXMuX2FwcGxpZWRGaWx0ZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5fc29ydGluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBmcm9tSW5kZXg6IGZyb21JbmRleCxcbiAgICAgICAgICAgIHRvSW5kZXg6IHRvSW5kZXhcbiAgICAgICAgfSk7ICAgICAgICBcbiAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5oaWRlKCk7XG5cbiAgICAgICAgLy8gU2V0IHRoZSB0b3RhbCBjb3VudFxuICAgICAgICB0aGlzLnRvdGFsUm93Q291bnQgPSBkYXRhPy50b3RhbENvdW50IHx8IDA7XG4gICAgICAgIHRoaXMuc2V0RW1wdHlTdGF0ZSgpO1xuXG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhVmlldyA9IGRhdGEuZGF0YVZpZXc7XG5cbiAgICAgICAgICAgIGlmIChkYXRhLml0ZW1zPy5sZW5ndGggPiAwICYmICFkYXRhLmlzUGVwUm93RGF0YSkgeyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb252ZXJlZERhdGEgPSBkYXRhLml0ZW1zLm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIGRhdGEuZGF0YVZpZXcsIHRoaXMudXVpZE1hcHBpbmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb252ZXJlZERhdGE7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGFzeW5jIHVwZGF0ZURhdGFMaXN0KGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIsIHBhZ2VJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogUHJvbWlzZTxQZXBSb3dEYXRhW10+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UudXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgICAgIGxldCBjb252ZXJlZERhdGE6IFBlcFJvd0RhdGFbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgZGF0YUxpc3QgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc29ydGluZzogdGhpcy5fc29ydGluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleCxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAgICAgaWYgKGRhdGFMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29udmVyZWREYXRhID0gZGF0YUxpc3QubWFwKGl0ZW0gPT4gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbSwgdGhpcy5fZGF0YVZpZXcsIHRoaXMudXVpZE1hcHBpbmcpKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICByZXR1cm4gY29udmVyZWREYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZHMgdmlydHVhbCBzY3JvbGwgaXRlbXMgZnJvbSBhcGlcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG9uTG9hZEl0ZW1zKGV2ZW50OiBJUGVwTGlzdExvYWRJdGVtc0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLnVwZGF0ZURhdGFMaXN0KGV2ZW50LmZyb21JbmRleCwgZXZlbnQudG9JbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyhjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXBMaXN0LnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVJdGVtcyhjb252ZXJ0ZWRMaXN0LCBldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZHMgcGFnaW5nIGJ1bGsgZnJvbSBhcGlcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG9uTG9hZFBhZ2UoZXZlbnQ6IElQZXBMaXN0TG9hZFBhZ2VFdmVudCkge1xuICAgICAgICBjb25zdCBmcm9tSW5kZXggPSBldmVudC5wYWdlSW5kZXggKiBldmVudC5wYWdlU2l6ZTtcbiAgICAgICAgY29uc3QgdG9JbmRleCA9IE1hdGgubWluKGZyb21JbmRleCArIGV2ZW50LnBhZ2VTaXplIC0gMSwgdGhpcy50b3RhbFJvd0NvdW50IC0gMSk7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLnVwZGF0ZURhdGFMaXN0KGZyb21JbmRleCwgdG9JbmRleCwgZXZlbnQucGFnZUluZGV4KTtcbiAgICAgICAgY29uc3QgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShsaXN0KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBlcExpc3Quc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXBMaXN0LnVwZGF0ZVBhZ2UoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUlkKGlkOiBzdHJpbmcpOiBPYmplY3RzRGF0YVJvdyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdC5nZXRJdGVtRGF0YUJ5SUQoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZEl0ZW1zKCk6IFBlcFNlbGVjdGlvbkRhdGEgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFnZUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXBMaXN0LnBhZ2VJbmRleDtcbiAgICB9XG5cbiAgICBvbkFjdGlvbkl0ZW1DbGlja2VkKGFjdGlvbjogSVBlcE1lbnVJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnNbYWN0aW9uLnNvdXJjZS5rZXldKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VhcmNoQ2hhbmdlZChldmVudDogSVBlcFNlYXJjaENsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoc2VsZWN0ZWRSb3dzQ291bnQ6IG51bWJlcikge1xuICAgICAgICAvL2xvYWRpbmcgbWVudSBpdGVtcyBhZnRlciBwZXAtbGlzdCBzZWxlY3RlZCBpdGVtcyBhcmUgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLmZpZWxkQ2xpY2suZW1pdChmaWVsZENsaWNrRXZlbnQpO1xuICAgIH1cblxuICAgIG9uQnJlYWRDcnVtYkl0ZW1DbGljayhldmVudDogSVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLmJyZWFkQ3J1bWJJdGVtQ2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25Tb3J0aW5nQ2hhbmdlKGV2ZW50OiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcnNDaGFuZ2UoZmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gZmlsdGVycztcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG9uTGlzdExvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdExvYWQuZW1pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5fcmVzaXplJCkge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9sb2FkZXIkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXIkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpbmxpbmVcIiBjbGFzcz1cImlubGluZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdhZGQtcGFkZGluZyc6IGFkZFBhZGRpbmcsICd3aXRoLXNtYXJ0LWZpbHRlcnMnOiBzaG93U21hcnRGaWx0ZXIgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYXJlYVwiID5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dUb3BCYXJcIiBjbGFzcz1cImlubGluZS10b3AtYmFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U21hcnRGaWx0ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNtYXJ0RmlsdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9uTG9hZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxwZXAtcGFnZS1sYXlvdXQgKm5nSWY9XCIhaW5saW5lXCIgY2xhc3M9XCJub25lLWlubGluZVwiIFthZGRQYWRkaW5nXT1cImFkZFBhZGRpbmdcIiBbc2hvd1NoYWRvd109XCJzaG93U21hcnRGaWx0ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCIgcGVwLXNpZGUtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNtYXJ0RmlsdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvcEJhclwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZENydW1ic0l0ZW1zLmxlbmd0aFwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkQ3J1bWJzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiIW9uTG9hZFwiIHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYWluLWFyZWEtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG48bmctdGVtcGxhdGUgI3RvcEJhclRlbXBsYXRlPlxuICAgIDxwZXAtdG9wLWJhciBbdGl0bGVdPVwidGl0bGVcIiBbaW5saW5lXT1cImlubGluZVwiPlxuICAgICAgICA8ZGl2IGhlYWRlci1zdGFydC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGhlYWRlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBmb290ZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJvdHRvbS1hcmVhXVwiPjwvbmctY29udGVudD4gICAgICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZm9vdGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0LWJvdHRvbS1hcmVhXVwiPjwvbmctY29udGVudD4gICAgIFxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDxwZXAtbGlzdC1hY3Rpb25zICpuZ0lmPVwibWVudUFjdGlvbnMubGVuZ3RoID4gMFwiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiIFthY3Rpb25zXT1cIm1lbnVBY3Rpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkl0ZW1DbGlja2VkKCRldmVudClcIj48L3BlcC1saXN0LWFjdGlvbnM+XG4gICAgICAgIDxwZXAtbGlzdC10b3RhbCAqbmdJZj1cInNjcmVlblNpemUgPCAzXCIgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW3RvdGFsUm93c109XCJ0b3RhbFJvd0NvdW50XCIgW3Vua25vd25Db3VudF09XCJ1bmtub3duQ291bnRcIj5cbiAgICAgICAgPC9wZXAtbGlzdC10b3RhbD5cbiAgICAgICAgPHBlcC1zZWFyY2ggI3NlYXJjaCAqbmdJZj1cInNob3dTZWFyY2hcIiBbdmFsdWVdPVwic2VhcmNoU3RyaW5nXCIgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCJcbiAgICAgICAgICAgIChzZWFyY2gpPVwib25TZWFyY2hDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc2VhcmNoPlxuICAgIDwvcGVwLXRvcC1iYXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NtYXJ0RmlsdGVyVGVtcGxhdGU+ICAgIFxuICAgIDxwZXAtc2lkZS1iYXIgI3NpZGVOYXYgW25nQ2xhc3NdPVwieydzbWFydC1maWx0ZXItYXJlYSc6IGlubGluZX1cIj4gXG4gICAgICAgIDxwZXAtc21hcnQtZmlsdGVycyAjc21hcnRGaWx0ZXJzQ29tcG9uZW50IFt0aXRsZV09XCJzbWFydEZpbHRlcnMudGl0bGVcIiBbZmllbGRzXT1cInNtYXJ0RmlsdGVycy5maWVsZHNcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwic21hcnRGaWx0ZXJzLmRhdGFcIiAoZmlsdGVyc0NoYW5nZSk9XCJvbkZpbHRlcnNDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3BlcC1zbWFydC1maWx0ZXJzPlxuICAgIDwvcGVwLXNpZGUtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNicmVhZENydW1ic1RlbXBsYXRlPlxuICAgIDxwZXAtYnJlYWQtY3J1bWJzIGNsYXNzPVwiYnJlYWQtY3J1bWJzXCIgW2l0ZW1zXT1cImJyZWFkQ3J1bWJzSXRlbXNcIiBbYWRkU3BhY2luZ109XCJ0cnVlXCIgW2Rpc3BsYXlUeXBlXT1cIidpdGVtcydcIlxuICAgICAgICAoaXRlbUNsaWNrKT1cIm9uQnJlYWRDcnVtYkl0ZW1DbGljaygkZXZlbnQpXCI+PC9wZXAtYnJlYWQtY3J1bWJzPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0VGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cInNob3dFbXB0eVN0YXRlXCIgY2xhc3M9XCJsaXN0LWVtcHR5LXN0YXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWVtcHR5LXRpdGxlXCI+e3sgbGlzdElucHV0cy5lbXB0eVN0YXRlPy50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZT8uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJsZWFmX3NraW55XCIgY2xhc3M9XCJsZWFmLXNraW55XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJsZWFmX3JvdW5kXCIgY2xhc3M9XCJsZWFmLXJvdW5kXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJsZWFmLXNraW55XCI+XG4gICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8L21hdC1pY29uPiAtLT5cbiAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJsZWFmLXJvdW5kXCI+XG4gICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8L21hdC1pY29uPiAtLT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNob3dFbXB0eVN0YXRlXCIgY2xhc3M9XCJsaXN0LWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICNwZXBMaXN0Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -4,7 +4,7 @@ import * as i4 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { __awaiter } from 'tslib';
6
6
  import * as i1$1 from '@pepperi-addons/ngx-lib';
7
- import { PepRowData, UIControl, PepGuid, PepNgxLibModule } from '@pepperi-addons/ngx-lib';
7
+ import { PepRowData, PepScreenSizeType, UIControl, PepGuid, PepNgxLibModule } from '@pepperi-addons/ngx-lib';
8
8
  import { Subscription } from 'rxjs';
9
9
  import * as i5 from '@pepperi-addons/ngx-lib/list';
10
10
  import { DEFAULT_PAGE_SIZE, PepSelectionData, PepListModule } from '@pepperi-addons/ngx-lib/list';
@@ -247,9 +247,7 @@ class GenericListComponent {
247
247
  this._sorting = undefined;
248
248
  this.menuHandlers = {};
249
249
  this.menuActions = [];
250
- this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
251
- //
252
- });
250
+ this.screenSize = PepScreenSizeType.SM;
253
251
  this._loader$ = this._loaderService.onChanged$.subscribe((status) => {
254
252
  //
255
253
  });
@@ -278,6 +276,11 @@ class GenericListComponent {
278
276
  ngOnInit() {
279
277
  //
280
278
  }
279
+ ngAfterViewInit() {
280
+ this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
281
+ this.screenSize = size;
282
+ });
283
+ }
281
284
  initList() {
282
285
  return __awaiter(this, void 0, void 0, function* () {
283
286
  this.onLoad = true;
@@ -630,10 +633,10 @@ class GenericListComponent {
630
633
  }
631
634
  }
632
635
  GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, deps: [{ token: i1$1.PepDataConvertorService }, { token: i1$1.PepLayoutService }, { token: i1$1.PepLoaderService }, { token: i1.TranslateService }, { token: PepGenericListService }, { token: i1$1.PepSessionService }], target: i0.ɵɵFactoryTarget.Component });
633
- GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", supportSortingFields: "supportSortingFields", separator: "separator", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition", unknownCount: "unknownCount" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType", "unknownCount"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i1$2.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
636
+ GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", supportSortingFields: "supportSortingFields", separator: "separator", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition", unknownCount: "unknownCount" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total *ngIf=\"screenSize < 3\" [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType", "unknownCount"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i1$2.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
634
637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, decorators: [{
635
638
  type: Component,
636
- args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
639
+ args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total *ngIf=\"screenSize < 3\" [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState?.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState?.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
637
640
  }], ctorParameters: function () { return [{ type: i1$1.PepDataConvertorService }, { type: i1$1.PepLayoutService }, { type: i1$1.PepLoaderService }, { type: i1.TranslateService }, { type: PepGenericListService }, { type: i1$1.PepSessionService }]; }, propDecorators: { search: [{
638
641
  type: ViewChild,
639
642
  args: ['search']