@eo-sdk/client 10.6.16 → 10.6.17

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.
Files changed (40) hide show
  1. package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
  2. package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts.map +1 -1
  3. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  4. package/app/eo-framework/object-details/object-details.component.d.ts +3 -1
  5. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  6. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  7. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  8. package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
  9. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +2 -1
  10. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
  11. package/assets/_default/i18n/de.json +1 -1
  12. package/assets/_default/i18n/en.json +1 -1
  13. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  14. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +3 -3
  15. package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -3
  16. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  17. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +1 -1
  18. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  19. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +2 -2
  20. package/esm2020/app/eo-client/process-state/process-state.component.mjs +3 -2
  21. package/esm2020/app/eo-client/result-state/result-state.component.mjs +1 -1
  22. package/esm2020/app/eo-client/version-state/version-state.component.mjs +3 -3
  23. package/esm2020/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +2 -5
  24. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +1 -1
  25. package/esm2020/app/eo-framework/media/media.component.mjs +1 -3
  26. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +15 -8
  27. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  28. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +2 -1
  29. package/esm2020/app/eo-framework/process/process-file/process-file.component.mjs +2 -2
  30. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
  31. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +2 -1
  32. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +10 -6
  33. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +6 -3
  34. package/fesm2015/eo-sdk-client.mjs +53 -40
  35. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  36. package/fesm2020/eo-sdk-client.mjs +52 -40
  37. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  38. package/package.json +2 -2
  39. package/styles.css +1 -1
  40. package/styles.scss +1 -1
@@ -135,7 +135,7 @@ let FavoriteStateComponent = class FavoriteStateComponent {
135
135
  }
136
136
  };
137
137
  FavoriteStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FavoriteStateComponent, deps: [{ token: i1.SelectionService }, { token: i2.TranslateService }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.PendingChangesService }, { token: i5.PageTitleService }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Component });
138
- FavoriteStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FavoriteStateComponent, selector: "eo-favorite-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'favorite.state'\">\n\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.favorites.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.favorites.filter.title' | translate\" [id]=\"'favorites.text'\"\n [matchFields]=\"['title']\" [filterParams]=\"textFilterParams\">\n </eo-text-filter>\n <eo-set-filter [operator]=\"'OR'\" [id]=\"'favorites.set'\"\n [title]=\"'eo.favorites.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'favorites.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button\" (click)=\"hasContent ? eoList.showActions() : false\"\n [ngClass]=\"{'disabled': !hasContent, 'actions-button': hasContent}\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event, 'DMS_OBJECT')\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_favorite.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.favorites.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [emptyState]=\"emptyState\"\n [cacheLayout]=\"'favorite.state.object-details'\" (hasContent)=\"hasContent = $event\"\n [plugins]=\"'object-details-tab.favorite' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length && !hasContent\">\n <button class=\"button\" (click)=\"remove()\" translate>eo.favorite.details.item.gone.remove</button>\n </div>\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .error .button{margin:1em;background-color:#d3d3d3}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i12.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i13.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i14.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i15.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i16.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i17.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i18.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.PluginPipe, name: "plugins" }] });
138
+ FavoriteStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FavoriteStateComponent, selector: "eo-favorite-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'favorite.state'\">\n\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.favorites.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.favorites.filter.title' | translate\" [id]=\"'favorites.text'\"\n [matchFields]=\"['title']\" [filterParams]=\"textFilterParams\">\n </eo-text-filter>\n <eo-set-filter [operator]=\"'OR'\" [id]=\"'favorites.set'\"\n [title]=\"'eo.favorites.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'favorites.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button\" (click)=\"hasContent ? eoList.showActions() : false\"\n [ngClass]=\"{'disabled': !hasContent, 'actions-button': hasContent}\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event, 'DMS_OBJECT')\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_favorite.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.favorites.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [emptyState]=\"emptyState\"\n [cacheLayout]=\"'favorite.state.object-details'\" (hasContent)=\"hasContent = $event\"\n [plugins]=\"'object-details-tab.favorite' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length && !hasContent\">\n <button class=\"button\" (click)=\"remove()\" translate>eo.favorite.details.item.gone.remove</button>\n </div>\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .error .button{margin:1em;background-color:#d3d3d3}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i12.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i13.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i14.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i15.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i16.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i17.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i18.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.PluginPipe, name: "plugins" }] });
139
139
  FavoriteStateComponent = __decorate([
140
140
  UntilDestroy()
141
141
  ], FavoriteStateComponent);
@@ -220,7 +220,7 @@ let InboxStateComponent = class InboxStateComponent {
220
220
  }
221
221
  };
222
222
  InboxStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: InboxStateComponent, deps: [{ token: i1.TranslateService }, { token: i2.SelectionService }, { token: i3.PageTitleService }, { token: i1.InboxService }, { token: i4.PendingChangesService }, { token: i5.EmptyStateService }, { token: i1.EventService }, { token: i6.ActivatedRoute }, { token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
223
- InboxStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"cFilter.resetFilter(); refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state.object-details'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i9.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i10.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i11.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i12.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i13.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i14.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i15.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i16.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i17.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i18.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i19.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i20.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i21.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i22.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i22.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }, { kind: "pipe", type: i23.PluginPipe, name: "plugins" }] });
223
+ InboxStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"cFilter.resetFilter(); refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state.object-details'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i9.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i10.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i11.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i12.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i13.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i14.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i15.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i16.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i17.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i18.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i19.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i20.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i21.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i22.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i22.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }, { kind: "pipe", type: i23.PluginPipe, name: "plugins" }] });
224
224
  InboxStateComponent = __decorate([
225
225
  UntilDestroy()
226
226
  ], InboxStateComponent);
@@ -212,7 +212,7 @@ let NotificationsStateComponent = class NotificationsStateComponent {
212
212
  }
213
213
  };
214
214
  NotificationsStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NotificationsStateComponent, deps: [{ token: i1.SelectionService }, { token: i2.TranslateService }, { token: i2.SystemService }, { token: i3.PendingChangesService }, { token: i4.EmptyStateService }, { token: i2.BackendService }, { token: i2.EventService }, { token: i2.DmsService }, { token: i5.PageTitleService }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Component });
215
- NotificationsStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: NotificationsStateComponent, selector: "eo-notifications-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'notification.state'\">\n <ng-template yvcSplitArea [size]=\"25\"><eo-list-container #eoList [applySelection]=\"{}\"\n [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.notifications.list.title</div>\n <div class=\"header-sub-title\" translate>eo.notifications.list.subtitle</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\" [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.notifications.filter.title' | translate\" [matchFields]=\"['info']\"\n [filterParams]=\"textFilterParams\" [id]=\"'notifications.text'\"></eo-text-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.title' | translate\"\n [options]=\"objectTypeFilterFields\" [id]=\"'notifications.object.type'\"></eo-set-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'notifications.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'notifications.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.notifications.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"75\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\"\n [cacheLayout]=\"'notification.state.object-details'\" [emptyState]=\"emptyState\" [plugins]=\"'object-details-tab.notifications' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length\">\n <button class=\"button secondary\" (click)=\"remove()\" translate>eo.notifications.details.item.gone.remove</button>\n <button class=\"button secondary\" (click)=\"removeSubscriptionAndResubmissions()\"\n translate>eo.notifications.details.item.gone.remove.subscriptions</button>\n </div>\n </eo-object-details>\n </ng-template>\n\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host .error .button{margin:1em}:host yvc-split-view{height:100%}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .meta{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .content .meta .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .meta .description.date{font-size:var(--font-hint)}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i12.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i13.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i14.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i15.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i16.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i17.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i18.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.PluginPipe, name: "plugins" }] });
215
+ NotificationsStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: NotificationsStateComponent, selector: "eo-notifications-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'notification.state'\">\n <ng-template yvcSplitArea [size]=\"25\"><eo-list-container #eoList [applySelection]=\"{}\"\n [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.notifications.list.title</div>\n <div class=\"header-sub-title\" translate>eo.notifications.list.subtitle</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\" [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.notifications.filter.title' | translate\" [matchFields]=\"['info']\"\n [filterParams]=\"textFilterParams\" [id]=\"'notifications.text'\"></eo-text-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.title' | translate\"\n [options]=\"objectTypeFilterFields\" [id]=\"'notifications.object.type'\"></eo-set-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'notifications.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'notifications.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.notifications.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"75\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\"\n [cacheLayout]=\"'notification.state.object-details'\" [emptyState]=\"emptyState\" [plugins]=\"'object-details-tab.notifications' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length\">\n <button class=\"button secondary\" (click)=\"remove()\" translate>eo.notifications.details.item.gone.remove</button>\n <button class=\"button secondary\" (click)=\"removeSubscriptionAndResubmissions()\"\n translate>eo.notifications.details.item.gone.remove.subscriptions</button>\n </div>\n </eo-object-details>\n </ng-template>\n\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host .error .button{margin:1em}:host yvc-split-view{height:100%}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .meta{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .content .meta .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .meta .description.date{font-size:var(--font-hint)}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i12.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i13.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i14.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i15.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i16.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i17.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i18.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.PluginPipe, name: "plugins" }] });
216
216
  NotificationsStateComponent = __decorate([
217
217
  UntilDestroy()
218
218
  ], NotificationsStateComponent);
@@ -325,7 +325,7 @@ let ObjectStateComponent = class ObjectStateComponent {
325
325
  }
326
326
  };
327
327
  ObjectStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectStateComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.PageTitleService }, { token: i3.SystemService }, { token: i3.DmsService }, { token: i4.SelectionService }, { token: i3.TranslateService }, { token: i5.ObjectStateService }, { token: i6.ActionService }, { token: i7.LocationService }, { token: i8.PendingChangesService }, { token: i3.EventService }, { token: i9.GridService }, { token: i10.LayoutService }], target: i0.ɵɵFactoryTarget.Component });
328
- ObjectStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectStateComponent, selector: "eo-object-state", outputs: { onTermFilterChange: "onTermFilterChange" }, providers: [ObjectStateService], viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<div class=\"file\" [ngClass]=\"{ready: context || context === null}\" *ngIf=\"!error; else errorTmpl\">\n\n <div class=\"file-head\" *ngIf=\"context && context.isContextFolder\">\n <div class=\"left\">\n <eo-icon class=\"type-icon\" [objectType]=\"context.type\"></eo-icon>\n <div class=\"title\" (click)=\"setupFrontPage()\" (contextmenu)=\"onContextMenuClicked($event)\">\n <div class=\"label\">{{context.title || '&nbsp;'}}</div>\n <div class=\"description\">{{context.description || '&nbsp;'}}</div>\n </div>\n </div>\n <div class=\"right\">\n <div class=\"fold\">\n <span class=\"created-date\">{{context.created.on | localeDate}}</span>\n <span class=\"created-title\">{{context.created.by.title}}</span>\n </div>\n <div class=\"actions\">\n </div>\n </div>\n </div>\n\n <div class=\"file-body\">\n <div class=\"file-body-wrap\">\n\n <ng-container *ngIf=\"context !== null; else tplDetailsOnly\">\n\n <yvc-split-view *ngIf=\"cacheLayout\" [layoutSettingsID]=\"cacheLayout\">\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"20\" [visible]=\"true\">\n <div class=\"tree-panel-error\" *ngIf=\"loadingState.tree.isError(); else tplTree\" translate>\n eo.state.object.tree.error</div>\n\n <ng-template #tplTree>\n\n <eo-list-container #eoList [loading]=\"!contextTree\" [tabs]=\"false\">\n <div class=\"eo-header dark\">\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\" translate>eo.state.object.tree.title</h2>\n <form name=\"structureForm\" class=\"tree-filter-form\" [ngClass]=\"{active: !!termFilter}\">\n <eo-form-input [skipToggle]=\"true\" [label]=\" 'eo.state.object.tree.filter.label' | translate\">\n <input [(ngModel)]=\"termFilter\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onTermFilterChange.emit($event)\" />\n </eo-form-input>\n </form>\n </div>\n </div>\n <div class=\"eo-body tree\">\n <eo-tree [tree]=\"contextTree\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.tree.state\" *ngIf=\"contextTree\" [highlightedNodes]=\"highlightedNodes\"\n [treeUpdate]=\"contextTreeUpdate\" [(ngModel)]=\"selectedNodes\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\"></eo-tree>\n <h3 *ngIf=\"contextTreeRef?.length\" title=\"{{'eo.state.object.tree.references.tooltip'|translate}}\"\n translate>eo.state.object.tree.references</h3>\n <eo-tree [tree]=\"contextTreeRef\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.treeRef.state\" *ngIf=\"contextTreeRef?.length\"\n [highlightedNodes]=\"highlightedNodes\" [treeUpdate]=\"contextTreeRefUpdate\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\"\n class=\"reference\"></eo-tree>\n </div>\n </eo-list-container>\n\n </ng-template>\n </ng-template>\n\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"35\" [visible]=\"true\">\n <eo-object-state-details *ngIf=\"context\" [context]=\"context\" [frontPageData]=\"frontPageData\"\n [visible]=\"frontPage\" (onTabChange)=\"setupFrontPage(true)\" [plugins]=\"'object-state-details-tab.object' | plugins\">\n </eo-object-state-details>\n\n <eo-result-list *ngIf=\"!frontPage && searchResult\" [selectFirst]=\"false\" [title]=\"gridTitle\"\n [reference]=\"selectedNode?.isReference\" [searchResult]=\"searchResult\" [configType]=\"configType\"\n [configContext]=\"\" [emptyMessage]=\"'eo.state.object.list.error'\" (onRefresh)=\"refreshList()\">\n </eo-result-list>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"45\" [visible]=\"true\">\n <ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container>\n </ng-template>\n </yvc-split-view>\n\n </ng-container>\n\n <ng-template #tplDetailsOnly><ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container></ng-template>\n\n <ng-template #tplObjectDetails>\n <eo-object-details [applySelection]=\"{}\" [reference]=\"isReferenceActive\"\n [cacheLayout]=\"'object.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.object' | plugins\">\n </eo-object-details>\n </ng-template>\n </div>\n </div>\n</div>\n\n<ng-template #errorTmpl>\n <eo-error404></eo-error404>\n</ng-template>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding)}:host .eo-body.tree h3{margin:0;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) 0 var(--app-pane-padding);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);color:var(--text-color-caption);border-top:1px solid var(--list-item-border-color)}:host .file{height:100%;display:flex;flex-flow:column}:host .file .file-head,:host .file .file-body{opacity:0;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}:host .file.ready .file-head,:host .file.ready .file-body{opacity:1}:host .file .empty-state{background:rgba(var(--color-white-rgb),.3);height:100%;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .file.undocked .empty-state{background:var(--main-background)}:host .file-head{color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 4);display:flex;flex-flow:row nowrap;width:100%}:host .file-head eo-icon{padding:var(--app-pane-padding);box-sizing:content-box;flex:none}:host .file-head .left,:host .file-head .right{border-bottom:4px solid var(--color-primary-3);box-sizing:border-box}:host .file-head .left{flex:0 0 auto;display:flex;flex-flow:row nowrap;background:var(--color-white);max-width:calc(100% - 350px)}:host .file-head .left div.title{flex:1;padding:var(--app-pane-padding) 0;display:inline-grid;min-height:0;min-width:0;cursor:pointer}[dir=ltr] :host .file-head .left div.title{padding-right:calc(var(--app-pane-padding) * 2);padding-left:0}[dir=rtl] :host .file-head .left div.title{padding-left:calc(var(--app-pane-padding) * 2);padding-right:0}:host .file-head .left div.title .label,:host .file-head .left div.title .description{display:inline-block;max-width:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .file-head .left div.title .label{font-size:var(--font-title)}:host .file-head .right{flex:1 1 auto;display:flex;flex-flow:column;min-width:350px}:host .file-head .right .fold{flex:0 0 auto;background:var(--main-background);color:var(--text-color-caption);text-align:right;padding-bottom:calc(var(--app-pane-padding) / 2);display:flex;justify-content:flex-end}[dir=rtl] :host .file-head .right .fold{text-align:right;text-align:left}:host .file-head .right .fold .created-date{padding-right:5px}:host .file-head .right .actions{background:var(--color-white);flex:1 1 auto;display:flex;align-items:center;padding:0 var(--app-pane-padding);justify-content:flex-end;min-height:50px}:host .file-body{flex:1 1 auto;position:relative}:host .file-body .file-body-wrap{position:absolute;inset:0;overflow:hidden}:host .file-body .file-body-wrap .frontPage{position:absolute;inset:0;overflow:hidden}:host ::ng-deep .tree .tree-panel-error{display:flex;height:100%;flex-flow:column;justify-content:center;align-items:center;color:var(--text-color-caption)}:host ::ng-deep .tree .eo-head{background-color:var(--color-primary-3)}:host ::ng-deep .tree .eo-head .eo-header-info{padding:0}:host ::ng-deep .tree .eo-head .eo-header-info h2{flex:1 1 auto;color:var(--color-white)}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form{width:61%;flex:0 0 auto;margin-bottom:var(--app-pane-padding);min-width:200px;align-self:flex-end}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form input{background-color:transparent;border:0;outline:0}:host ::ng-deep .tree eo-result-list .eo-head{background-color:var(--panel-background)}:host ::ng-deep yvc-split-view{height:100%}:host ::ng-deep eo-tree{padding:var(--app-pane-padding)}:host ::ng-deep eo-object-details{background:var(--panel-background-grey)}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i12.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i14.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i15.ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { kind: "component", type: i16.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i17.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i18.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.Error404Component, selector: "eo-error404" }, { kind: "component", type: i21.ObjectStateDetailsComponent, selector: "eo-object-state-details", inputs: ["plugins", "context", "selectedItem", "seenItems", "frontPageData", "visible"], outputs: ["onTabChange"] }, { kind: "component", type: i22.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i22.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }, { kind: "pipe", type: i23.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i24.PluginPipe, name: "plugins" }], animations: [panelLoadingAnimations] });
328
+ ObjectStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectStateComponent, selector: "eo-object-state", outputs: { onTermFilterChange: "onTermFilterChange" }, providers: [ObjectStateService], viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<div class=\"file\" [ngClass]=\"{ready: context || context === null}\" *ngIf=\"!error; else errorTmpl\">\n\n <div class=\"file-head\" *ngIf=\"context && context.isContextFolder\">\n <div class=\"left\">\n <eo-icon class=\"type-icon\" [objectType]=\"context.type\"></eo-icon>\n <div class=\"title\" (click)=\"setupFrontPage()\" (contextmenu)=\"onContextMenuClicked($event)\">\n <div class=\"label\">{{context.title || '&nbsp;'}}</div>\n <div class=\"description\">{{context.description || '&nbsp;'}}</div>\n </div>\n </div>\n <div class=\"right\">\n <div class=\"fold\">\n <span class=\"created-date\">{{context.created.on | localeDate}}</span>\n <span class=\"created-title\">{{context.created.by.title}}</span>\n </div>\n <div class=\"actions\">\n </div>\n </div>\n </div>\n\n <div class=\"file-body\">\n <div class=\"file-body-wrap\">\n\n <ng-container *ngIf=\"context !== null; else tplDetailsOnly\">\n\n <yvc-split-view *ngIf=\"cacheLayout\" [layoutSettingsID]=\"cacheLayout\">\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"20\" [visible]=\"true\">\n <div class=\"tree-panel-error\" *ngIf=\"loadingState.tree.isError(); else tplTree\" translate>\n eo.state.object.tree.error</div>\n\n <ng-template #tplTree>\n\n <eo-list-container #eoList [loading]=\"!contextTree\" [tabs]=\"false\">\n <div class=\"eo-header dark\">\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\" translate>eo.state.object.tree.title</h2>\n <form name=\"structureForm\" class=\"tree-filter-form\" [ngClass]=\"{active: !!termFilter}\">\n <eo-form-input [skipToggle]=\"true\" [label]=\" 'eo.state.object.tree.filter.label' | translate\">\n <input [(ngModel)]=\"termFilter\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onTermFilterChange.emit($event)\" />\n </eo-form-input>\n </form>\n </div>\n </div>\n <div class=\"eo-body tree\">\n <eo-tree [tree]=\"contextTree\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.tree.state\" *ngIf=\"contextTree\" [highlightedNodes]=\"highlightedNodes\"\n [treeUpdate]=\"contextTreeUpdate\" [(ngModel)]=\"selectedNodes\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\"></eo-tree>\n <h3 *ngIf=\"contextTreeRef?.length\" title=\"{{'eo.state.object.tree.references.tooltip'|translate}}\"\n translate>eo.state.object.tree.references</h3>\n <eo-tree [tree]=\"contextTreeRef\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.treeRef.state\" *ngIf=\"contextTreeRef?.length\"\n [highlightedNodes]=\"highlightedNodes\" [treeUpdate]=\"contextTreeRefUpdate\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\"\n class=\"reference\"></eo-tree>\n </div>\n </eo-list-container>\n\n </ng-template>\n </ng-template>\n\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"35\" [visible]=\"true\">\n <eo-object-state-details *ngIf=\"context\" [context]=\"context\" [frontPageData]=\"frontPageData\"\n [visible]=\"frontPage\" (onTabChange)=\"setupFrontPage(true)\" [plugins]=\"'object-state-details-tab.object' | plugins\">\n </eo-object-state-details>\n\n <eo-result-list *ngIf=\"!frontPage && searchResult\" [selectFirst]=\"false\" [title]=\"gridTitle\"\n [reference]=\"selectedNode?.isReference\" [searchResult]=\"searchResult\" [configType]=\"configType\"\n [configContext]=\"\" [emptyMessage]=\"'eo.state.object.list.error'\" (onRefresh)=\"refreshList()\">\n </eo-result-list>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"45\" [visible]=\"true\">\n <ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container>\n </ng-template>\n </yvc-split-view>\n\n </ng-container>\n\n <ng-template #tplDetailsOnly><ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container></ng-template>\n\n <ng-template #tplObjectDetails>\n <eo-object-details [applySelection]=\"{}\" [reference]=\"isReferenceActive\"\n [cacheLayout]=\"'object.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.object' | plugins\">\n </eo-object-details>\n </ng-template>\n </div>\n </div>\n</div>\n\n<ng-template #errorTmpl>\n <eo-error404></eo-error404>\n</ng-template>", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding)}:host .eo-body.tree h3{margin:0;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) 0 var(--app-pane-padding);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);color:var(--text-color-caption);border-top:1px solid var(--list-item-border-color)}:host .file{height:100%;display:flex;flex-flow:column}:host .file .file-head,:host .file .file-body{opacity:0;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}:host .file.ready .file-head,:host .file.ready .file-body{opacity:1}:host .file .empty-state{background:rgba(var(--color-white-rgb),.3);height:100%;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .file.undocked .empty-state{background:var(--main-background)}:host .file-head{color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 4);display:flex;flex-flow:row nowrap;width:100%}:host .file-head eo-icon{padding:var(--app-pane-padding);box-sizing:content-box;flex:none}:host .file-head .left,:host .file-head .right{border-bottom:4px solid var(--color-primary-3);box-sizing:border-box}:host .file-head .left{flex:0 0 auto;display:flex;flex-flow:row nowrap;background:var(--color-white);max-width:calc(100% - 350px)}:host .file-head .left div.title{flex:1;padding:var(--app-pane-padding) 0;display:inline-grid;min-height:0;min-width:0;cursor:pointer}[dir=ltr] :host .file-head .left div.title{padding-right:calc(var(--app-pane-padding) * 2);padding-left:0}[dir=rtl] :host .file-head .left div.title{padding-left:calc(var(--app-pane-padding) * 2);padding-right:0}:host .file-head .left div.title .label,:host .file-head .left div.title .description{display:inline-block;max-width:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .file-head .left div.title .label{font-size:var(--font-title)}:host .file-head .right{flex:1 1 auto;display:flex;flex-flow:column;min-width:350px}:host .file-head .right .fold{flex:0 0 auto;background:var(--main-background);color:var(--text-color-caption);text-align:right;padding-bottom:calc(var(--app-pane-padding) / 2);display:flex;justify-content:flex-end}[dir=rtl] :host .file-head .right .fold{text-align:right;text-align:left}:host .file-head .right .fold .created-date{padding-right:5px}:host .file-head .right .actions{background:var(--color-white);flex:1 1 auto;display:flex;align-items:center;padding:0 var(--app-pane-padding);justify-content:flex-end;min-height:50px}:host .file-body{flex:1 1 auto;position:relative}:host .file-body .file-body-wrap{position:absolute;inset:0;overflow:hidden}:host .file-body .file-body-wrap .frontPage{position:absolute;inset:0;overflow:hidden}:host ::ng-deep .tree .tree-panel-error{display:flex;height:100%;flex-flow:column;justify-content:center;align-items:center;color:var(--text-color-caption)}:host ::ng-deep .tree .eo-head{background-color:var(--color-primary-3)}:host ::ng-deep .tree .eo-head .eo-header-info{padding:0}:host ::ng-deep .tree .eo-head .eo-header-info h2{flex:1 1 auto;color:var(--color-white)}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form{width:61%;flex:0 0 auto;margin-bottom:var(--app-pane-padding);min-width:200px;align-self:flex-end}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form input{background-color:transparent;border:0;outline:0}:host ::ng-deep .tree eo-result-list .eo-head{background-color:var(--panel-background)}:host ::ng-deep yvc-split-view{height:100%}:host ::ng-deep eo-tree{padding:var(--app-pane-padding)}:host ::ng-deep eo-object-details{background:var(--panel-background-grey)}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i12.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i12.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i13.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i14.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i15.ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { kind: "component", type: i16.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: i17.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i18.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i19.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i20.Error404Component, selector: "eo-error404" }, { kind: "component", type: i21.ObjectStateDetailsComponent, selector: "eo-object-state-details", inputs: ["plugins", "context", "selectedItem", "seenItems", "frontPageData", "visible"], outputs: ["onTabChange"] }, { kind: "component", type: i22.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i22.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }, { kind: "pipe", type: i23.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i24.PluginPipe, name: "plugins" }], animations: [panelLoadingAnimations] });
329
329
  ObjectStateComponent = __decorate([
330
330
  UntilDestroy()
331
331
  ], ObjectStateComponent);
@@ -339,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
339
339
  }], onTermFilterChange: [{
340
340
  type: Output
341
341
  }] } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXN0YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUvb2JqZWN0LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUvb2JqZWN0LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEVBQXdCLFVBQVUsRUFBMkUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9JLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFXbkUsT0FBTyxFQUFDLFlBQVksRUFBRSxzQkFBc0IsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBRWpILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVV6RSxJQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFvQjtJQXNDL0IsWUFBb0IsS0FBcUIsRUFDL0IsWUFBOEIsRUFDOUIsYUFBNEIsRUFDNUIsVUFBc0IsRUFDdEIsU0FBMkIsRUFDNUIsU0FBMkIsRUFDM0IsV0FBK0IsRUFDOUIsYUFBNEIsRUFDNUIsUUFBeUIsRUFDekIsY0FBcUMsRUFDckMsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsYUFBNEI7UUFabEIsVUFBSyxHQUFMLEtBQUss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QUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUNsQixtQ0FBbUM7b0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1A7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1Qsd0VBQXdFO1FBQ3hFLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7aUhBbldVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlHQUhwQixDQUFDLGtCQUFrQixDQUFDLDRIQzNCakMsMDNKQTZGYyx1M1BEakVBLENBQUMsc0JBQXNCLENBQUM7QUFFekIsb0JBQW9CO0lBUmhDLFlBQVksRUFBRTtHQVFGLG9CQUFvQixDQXFXaEM7U0FyV1ksb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsa0JBQWtCLENBQUMsY0FDbkIsQ0FBQyxzQkFBc0IsQ0FBQzt3Y0FJZixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBbUJULGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc1NlcnZpY2UsIEVuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgT2JqZWN0VHlwZSwgU2VhcmNoUmVzdWx0LCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7Zm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtHcmlkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge0xheW91dFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2xheW91dC9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge0xvY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvbG9jYXRpb24vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbi1zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7UGFuZWxMb2FkaW5nLCBwYW5lbExvYWRpbmdBbmltYXRpb25zfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvdWkvYW5pbWF0aW9ucy9wYW5lbC1sb2FkaW5nLmFuaW1hdGlvbic7XG5pbXBvcnQge0Zyb250UGFnZURhdGEsIE9iamVjdFNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vb2JqZWN0LXN0YXRlLXNlcnZpY2Uvb2JqZWN0LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge09iamVjdFN0YXRlU2VydmljZX0gZnJvbSAnLi4vb2JqZWN0LXN0YXRlLXNlcnZpY2Uvb2JqZWN0LXN0YXRlLnNlcnZpY2UnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3Qtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3Qtc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbT2JqZWN0U3RhdGVTZXJ2aWNlXSxcbiAgYW5pbWF0aW9uczogW3BhbmVsTG9hZGluZ0FuaW1hdGlvbnNdXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdFN0YXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG5cbiAgZXJyb3IgPSBmYWxzZTtcbiAgY29udGV4dDogRG1zT2JqZWN0O1xuICBzZWxlY3RlZEl0ZW06IERtc09iamVjdDtcbiAgZnJvbnRQYWdlOiBib29sZWFuO1xuICBmcm9udFBhZ2VEYXRhOiBGcm9udFBhZ2VEYXRhO1xuICBjb250ZXh0VHJlZTogVHJlZU5vZGVbXTtcbiAgY29udGV4dFRyZWVVcGRhdGU6IFRyZWVOb2RlW107XG4gIGNvbnRleHRUcmVlUmVmOiBUcmVlTm9kZVtdO1xuICBjb250ZXh0VHJlZVJlZlVwZGF0ZTogVHJlZU5vZGVbXTtcbiAgc2VsZWN0ZWROb2RlczogVHJlZU5vZGVbXTtcbiAgc2VsZWN0ZWROb2RlOiBUcmVlTm9kZTtcbiAgaGlnaGxpZ2h0ZWROb2Rlczogc3RyaW5nW107XG4gIGlzUmVmZXJlbmNlQWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgZXhwYW5kZWROb2RlSWRzOiBzdHJpbmdbXSA9IFtdO1xuICB0ZXJtRmlsdGVyOiBzdHJpbmc7XG4gIGFsbFR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25maWdUeXBlOiBPYmplY3RUeXBlO1xuICBAT3V0cHV0KCkgb25UZXJtRmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgZ3JpZFRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5R3JpZCA9IHRydWU7XG5cbiAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHR5cGVOYW1lID0gJyc7XG4gIGNhY2hlTGF5b3V0ID0gJyc7XG5cbiAgbG9hZGluZ1N0YXRlID0ge1xuICAgIHRyZWU6IG5ldyBQYW5lbExvYWRpbmcoKSxcbiAgICB0cmVlUmVmOiBuZXcgUGFuZWxMb2FkaW5nKCksXG4gICAgbGlzdDogbmV3IFBhbmVsTG9hZGluZygpLFxuICAgIGRldGFpbHM6IG5ldyBQYW5lbExvYWRpbmcoKSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIG9iamVjdFN0YXRlOiBPYmplY3RTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UpIHtcblxuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldEJhc2VUaXRsZShudWxsKTtcbiAgICB0aGlzLmdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPnt9O1xuXG4gICAgdGhpcy5vblRlcm1GaWx0ZXJDaGFuZ2VcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSlcbiAgICAgIC5zdWJzY3JpYmUodiA9PiB0aGlzLnNldHVwRnJvbnRQYWdlKHRydWUpKTtcblxuICAgIC8vIHN1YnNjcmliZSBmb3IgZGF0YSBmcm9tIHRoZSBjb25uZWN0ZWQgc2VydmljZVxuICAgIHRoaXMub2JqZWN0U3RhdGVcbiAgICAgIC5saXN0JFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IE9iamVjdFNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICB0aGlzLmZyb250UGFnZSA9ICFyZXM7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAvLyBzZXR1cCB0aGUgZ3JpZCB3aXRoIHRoZSBuZXcgZGF0YVxuICAgICAgICAgIGxldCB7bmFtZSwgcmVzdWx0fSA9IHJlcztcbiAgICAgICAgICB0aGlzLmVtcHR5R3JpZCA9IHJlc3VsdC5jb3VudC52YWx1ZSA9PT0gMDtcbiAgICAgICAgICB0aGlzLmdyaWRUaXRsZSA9IG5hbWU7XG4gICAgICAgICAgdGhpcy5jb25maWdUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUocmVzdWx0LnR5cGVOYW1lKSB8fCB7cW5hbWU6IHJlc3VsdC50eXBlTmFtZX0gYXMgT2JqZWN0VHlwZTtcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlLmxpc3QucmVhZHkoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5vYmplY3RTdGF0ZS50cmVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmJ1aWxkQ29udGV4dFRyZWUocmVzLmZvbGRlcikpO1xuXG4gICAgdGhpcy5vYmplY3RTdGF0ZS50cmVlUmVmJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmJ1aWxkQ29udGV4dFRyZWVSZWYocmVzLmZvbGRlcikpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IERtc09iamVjdCkgPT4ge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0KGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUuZGV0YWlscy5yZWFkeSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuaWQgPT09IGV2dC5kYXRhLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmZyb250UGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZXR1cEZyb250UGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHRUcmVlKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiBldmVudC5kYXRhICYmIHRoaXMuY29udGV4dC5pZCA9PT0gZXZlbnQuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMuY29udGV4dCA9IGV2ZW50LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZnJvbnRQYWdlKSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEZyb250UGFnZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHRUcmVlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1BBU1RFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5jbGlwYm9hcmQucGFzdGUucmVzdWx0bGlzdC5oZWFkbGluZScpO1xuICAgICAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAgICAgLnNlbGVjdFRyZWVOb2RlKDxhbnk+e30sIDxhbnk+e25hbWV9LCB7aWQ6IGV2dC5kYXRhLm1hcChkID0+IGQuaWQpfSkuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ29udGV4dFRyZWUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFzUGVuZGluZ0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2soKTtcbiAgfVxuXG4gIG9uRXhwYW5kZWROb2Rlc0NoYW5nZWQoZXhwYW5kZWROb2Rlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmV4cGFuZGVkTm9kZUlkcyA9IGV4cGFuZGVkTm9kZXM7XG4gIH1cblxuICAvLyBzZWxlY3QgYW4gZW50cnkgZnJvbSB0aGUgdHJlZVxuICBvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICBpZiAobm9kZS5kYXRhLnR5cGUpIHtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0LCB0aGlzLnNlbGVjdGVkTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlQ29udGV4dChub2RlLmlzUmVmZXJlbmNlIHx8IHRoaXMuYWxsVHlwZXMuaW5jbHVkZXMobm9kZS5kYXRhLnR5cGUpID8gW25vZGUuZGF0YS50eXBlXSA6IHRoaXMuYWxsVHlwZXMpO1xuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUubGlzdFxuICAgICAgICAuc3Vic2NyaWJlKG5vZGUuaXNSZWZlcmVuY2UgP1xuICAgICAgICAgIHRoaXMub2JqZWN0U3RhdGUuc2VsZWN0VHJlZU5vZGUodGhpcy5jb250ZXh0LCBub2RlLCB7dGVybTogdGhpcy50ZXJtRmlsdGVyfSwgJ3JlZmVyZW5jZXZpZXcnKSA6XG4gICAgICAgICAgdGhpcy5vYmplY3RTdGF0ZS5zZWxlY3RUcmVlTm9kZSh0aGlzLmNvbnRleHQsIG5vZGUsIHt0ZXJtOiB0aGlzLnRlcm1GaWx0ZXJ9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBGcm9udFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbnRleHRNZW51Q2xpY2tlZChldnQsIGRvYz8pIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKFtkb2MgfHwgdGhpcy5jb250ZXh0XSwgJ0RNU19PQkpFQ1QnKTtcbiAgfVxuXG4gIHJlZnJlc2hMaXN0KCkge1xuICAgIHRoaXMub25UcmVlU2VsZWN0aW9uQ2hhbmdlZCh0aGlzLnNlbGVjdGVkTm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoaXRlbTogRG1zT2JqZWN0LCBzZWxlY3RlZElkPykge1xuICAgIGlmIChpdGVtLmlzQ29udGV4dEZvbGRlcikge1xuICAgICAgLy8gaWYgdGhlcmUgYWxyZWFkeSBpcyBhIGNvbnRleHQgc2V0LCB3ZSBuZWVkIHRvIGxlYXZlIGxvY2F0aW9uIGZvciB0aGUgb2xkIGNvbnRleHQgZmlyc3RcbiAgICAgIC8vIG90aGVyd2lzZSBVcGxvYWRUYXJnZXRzIHdpbGwgbm90IGJlIHVucmVnaXN0ZXJlZCBjb3JyZWN0bHlcbiAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250ZXh0ID0gaXRlbTtcbiAgICAgIHRoaXMuY2FjaGVMYXlvdXQgPSAnb2JqZWN0LnN0YXRlLS0nICsgaXRlbS50eXBlTmFtZTtcbiAgICAgIC8vIGFkZCB0aGlzIGxvY2F0aW9uIHRvIHRoZSBsb2NhdGlvbiBzZXJ2aWNlLCB3aGljaCB3aWxsIHRyYWNrIGFjdGl2ZSBsb2NhdGlvbnNcbiAgICAgIC8vIGFuZCBoYW5kbGUgYSBoaXN0b3J5IG9mIHZpc2l0ZWQgbG9jYXRpb25zLlxuICAgICAgdGhpcy5sb2NhdGlvbi5lbnRlcih0aGlzLmNvbnRleHQsIHRoaXMuc2VsZWN0ZWROb2RlKTtcblxuICAgICAgdGhpcy5vYmplY3RTdGF0ZS5sb2FkVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LmlkLCB0aGlzLmNvbnRleHQudHlwZU5hbWUsIHtkZWZpbml0aW9uOiBbe2ZpZWxkOiAndHlwZScsIGtleTogJ1R5cGVzJywgc2l6ZTogMTAwMH1dfSlcbiAgICAgICAgLnN1YnNjcmliZSh0eXBlcyA9PiAodGhpcy5hbGxUeXBlcyA9ICh0eXBlcy5mb2xkZXJbMF0uZm9sZGVyIHx8IFtdKS5tYXAodCA9PiB0LnR5cGUpKSk7XG5cbiAgICAgIHRoaXMuZmV0Y2hUcmVlRGF0YSgnJywgc2VsZWN0ZWRJZCk7XG4gICAgICB0aGlzLnNldHVwRnJvbnRQYWdlKHRydWUpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZldGNoIHRoZSBjb250ZXh0IGZvbGRlclxuICAgICAgaWYgKGl0ZW0uY29udGV4dEZvbGRlcikge1xuICAgICAgICB0aGlzLmNhY2hlTGF5b3V0ID0gJ29iamVjdC5zdGF0ZS0tJyArIGl0ZW0uY29udGV4dEZvbGRlci50eXBlTmFtZTtcbiAgICAgICAgdGhpcy5kbXNTZXJ2aWNlXG4gICAgICAgICAgLmdldERtc09iamVjdChpdGVtLmNvbnRleHRGb2xkZXIuaWQsIGl0ZW0uY29udGV4dEZvbGRlci50eXBlTmFtZSwgbnVsbCwgJ0RFVEFJTFMnKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3MocmVzLCBpdGVtLmlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGp1c3QgdGhlIGRvY3VtZW50IGluIHJvb3RcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYWNoZUxheW91dCA9ICcnO1xuICAgICAgICAvLyBoaWRlIGVtcHR5IHRyZWUgJiBsaXN0XG4gICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5oaWRlQXJlYXMoKGEsIGkpID0+IGkgPCAyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLnZpc2liaWxpdHlVcGRhdGUoKTtcbiAgfVxuXG4gIHNldHVwRnJvbnRQYWdlKHVwZGF0ZVNlbGVjdGlvbiA9IGZhbHNlLCB1cGRhdGVUcmVlID0gZmFsc2UpIHtcbiAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAuc2VsZWN0RnJvbnRQYWdlKHRoaXMuY29udGV4dClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5mcm9udFBhZ2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmZyb250UGFnZURhdGEgPSBkYXRhO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb24uZm9jdXModGhpcy5jb250ZXh0KTtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0ZVRyZWUpIHtcbiAgICAgIHRoaXMuZmV0Y2hUcmVlRGF0YSh0aGlzLnRlcm1GaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hUcmVlRGF0YSh0ZXJtRmlsdGVyPzogc3RyaW5nLCBzZWxlY3RlZElkPzogYW55KSB7XG4gICAgdGhpcy5oaWdobGlnaHQoc2VsZWN0ZWRJZCk7XG4gICAgdGhpcy5sb2FkaW5nU3RhdGUudHJlZS5zdWJzY3JpYmUodGhpcy5vYmplY3RTdGF0ZS51cGRhdGVUcmVlQnlRdWVyeSh0aGlzLmNvbnRleHQsIHt0ZXJtOiB0ZXJtRmlsdGVyfSkpO1xuICAgIHRoaXMubG9hZGluZ1N0YXRlLnRyZWVSZWYuc3Vic2NyaWJlKHRoaXMub2JqZWN0U3RhdGUudXBkYXRlVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LCB7dGVybTogdGVybUZpbHRlcn0sICdyZWZlcmVuY2V2aWV3JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHQoc2VsZWN0ZWRJZCkge1xuICAgIGlmIChzZWxlY3RlZElkICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgZm9ya0pvaW4oW1xuICAgICAgICB0aGlzLm9iamVjdFN0YXRlLmxvYWRUcmVlQnlRdWVyeSh0aGlzLmNvbnRleHQuaWQsIHRoaXMuY29udGV4dC50eXBlTmFtZSwge2lkOiBzZWxlY3RlZElkfSksXG4gICAgICAgIHRoaXMub2JqZWN0U3RhdGUubG9hZFRyZWVCeVF1ZXJ5KHRoaXMuY29udGV4dC5pZCwgdGhpcy5jb250ZXh0LnR5cGVOYW1lLCB7aWQ6IHNlbGVjdGVkSWR9LCAncmVmZXJlbmNldmlldycpXG4gICAgICBdKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTm9kZXMgPSB0aGlzLmhpZ2hsaWdodE5vZGVzKFsuLi5yZXNbMF0uZm9sZGVyLCAuLi5yZXNbMV0uZm9sZGVyXSk7XG4gICAgICAgIHRoaXMuaXNSZWZlcmVuY2VBY3RpdmUgPSAhIShyZXNbMV0udG90YWwudmFsdWUgJiYgIXJlc1swXS50b3RhbC52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWdobGlnaHRlZE5vZGVzID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZXh0VHJlZSgpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAgIC5sb2FkVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LmlkLCB0aGlzLmNvbnRleHQudHlwZU5hbWUsIHt0ZXJtOiB0aGlzLnRlcm1GaWx0ZXJ9KVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmNvbnRleHRUcmVlVXBkYXRlID0gcmVzLmZvbGRlci5tYXAoZiA9PiB0aGlzLmFkZFRyZWVOb2RlKGYsIFtdKSkpO1xuICAgICAgdGhpcy5vYmplY3RTdGF0ZVxuICAgICAgICAubG9hZFRyZWVCeVF1ZXJ5KHRoaXMuY29udGV4dC5pZCwgdGhpcy5jb250ZXh0LnR5cGVOYW1lLCB7dGVybTogdGhpcy50ZXJtRmlsdGVyfSwgJ3JlZmVyZW5jZXZpZXcnKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmNvbnRleHRUcmVlUmVmVXBkYXRlID0gcmVzLmZvbGRlci5tYXAoZiA9PiB0aGlzLmFkZFRyZWVOb2RlKGYsIFtdLCB0cnVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlnaGxpZ2h0Tm9kZXMoZm9sZGVyID0gW10sIG5vZGVzID0gW10pIHtcbiAgICBmb2xkZXIuZm9yRWFjaChmID0+IHtcbiAgICAgIGlmIChmLmNvdW50KSB7XG4gICAgICAgIG5vZGVzLnB1c2goZi5rZXkpO1xuICAgICAgfVxuICAgICAgaWYgKGYuZm9sZGVyKSB7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0Tm9kZXMoZi5mb2xkZXIsIG5vZGVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29udGV4dFRyZWUoZm9sZGVyID0gW10pIHtcbiAgICB0aGlzLmNvbnRleHRUcmVlVXBkYXRlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHRUcmVlID0gZm9sZGVyLm1hcChmID0+IHRoaXMuYWRkVHJlZU5vZGUoZiwgW10pKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250ZXh0VHJlZVJlZihmb2xkZXIgPSBbXSkge1xuICAgIHRoaXMuY29udGV4dFRyZWVSZWZVcGRhdGUgPSBudWxsO1xuICAgIHRoaXMuY29udGV4dFRyZWVSZWYgPSBmb2xkZXIubWFwKGYgPT4gdGhpcy5hZGRUcmVlTm9kZShmLCBbXSwgdHJ1ZSkpO1xuXG4gIH1cblxuICBwcml2YXRlIGFkZFRyZWVOb2RlKG5vZGVEYXRhLCBwYXRoOiBzdHJpbmdbXSwgaXNSZWZlcmVuY2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHtrZXksIHRpdGxlLCBmb2xkZXIsIGV4cGFuZGVkLCBjb3VudCwgc3RhdHN9ID0gbm9kZURhdGE7XG4gICAgLy8gaW1wb3J0YW50IHRvIGNyZWF0ZSBjbG9uZSBoZXJlLCBiZWNhdXNlIG90aGVyd2lzZSBwYXRoIHdpbGwgYmUgbWVzc2VkIHVwXG4gICAgY29uc3QgcCA9IHBhdGguY29uY2F0KFt0aXRsZV0pO1xuICAgIGxldCBub2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgIGlkOiBrZXksXG4gICAgICBuYW1lOiB0aXRsZSxcbiAgICAgIHBhdGg6IHAsXG4gICAgICBjaGlsZHJlbjogKGZvbGRlciB8fCBbXSkubWFwKGYgPT4gdGhpcy5hZGRUcmVlTm9kZShmLCBwLCBpc1JlZmVyZW5jZSkpLFxuICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkIHx8ICEhfnRoaXMuZXhwYW5kZWROb2RlSWRzLmluZGV4T2Yoa2V5KSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICBpc1JlZmVyZW5jZSxcbiAgICAgIGJhZGdlczogKHN0YXRzIHx8IFtdKS5tYXAoc3RhdCA9PiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgdmFsdWU6IHN0YXQudmFsdWUgKyAnICcgKyBzdGF0LnRpdGxlLFxuICAgICAgICBjc3NDbGFzczogJ3N0YXRzJ1xuICAgICAgfSkpLFxuICAgICAgZGF0YTogbm9kZURhdGFcbiAgICB9O1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBub2RlLmJhZGdlcy5wdXNoKHt2YWx1ZTogY291bnR9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGUudXJsXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZUxheW91dCA9ICcnO1xuICAgICAgICAvLyB0aGlzLmxheW91dFNlcnZpY2UuaGlkZUFyZWFzKCgpID0+IGZhbHNlKTtcbiAgICAgICAgY29uc3Qge3BhcmFtcywgcXVlcnlQYXJhbXN9ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICAgICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgICAgIHRoaXMudHlwZU5hbWUgPSBxdWVyeVBhcmFtc1sndHlwZSddIHx8ICcnO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzKHtpZDogcGFyYW1zLmlkLCB0eXBlTmFtZTogdGhpcy50eXBlTmFtZX0pO1xuICAgICAgICAgIHRoaXMuZG1zU2VydmljZVxuICAgICAgICAgICAgLmdldERtc09iamVjdChwYXJhbXMuaWQsIHRoaXMudHlwZU5hbWUsIG51bGwsICdERVRBSUxTJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKHJlcyk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzKHJlcyk7XG4gICAgICAgICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5zZXRBcmVhcyhbXSk7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQsIHdlIHRlbGwgdGhlIGxvY2F0aW9uIHNlcnZpY2UgdGhhdCB3ZVxuICAgIC8vIGxlZnQgdGhlIGxvY2F0aW9uXG4gICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImZpbGVcIiBbbmdDbGFzc109XCJ7cmVhZHk6IGNvbnRleHQgfHwgY29udGV4dCA9PT0gbnVsbH1cIiAqbmdJZj1cIiFlcnJvcjsgZWxzZSBlcnJvclRtcGxcIj5cblxuICA8ZGl2IGNsYXNzPVwiZmlsZS1oZWFkXCIgKm5nSWY9XCJjb250ZXh0ICYmIGNvbnRleHQuaXNDb250ZXh0Rm9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwidHlwZS1pY29uXCIgW29iamVjdFR5cGVdPVwiY29udGV4dC50eXBlXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgKGNsaWNrKT1cInNldHVwRnJvbnRQYWdlKClcIiAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudUNsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e2NvbnRleHQudGl0bGUgfHwgJyZuYnNwOyd9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e2NvbnRleHQuZGVzY3JpcHRpb24gfHwgJyZuYnNwOyd9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9sZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0ZWQtZGF0ZVwiPnt7Y29udGV4dC5jcmVhdGVkLm9uIHwgbG9jYWxlRGF0ZX19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0ZWQtdGl0bGVcIj57e2NvbnRleHQuY3JlYXRlZC5ieS50aXRsZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWxlLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1ib2R5LXdyYXBcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQgIT09IG51bGw7IGVsc2UgdHBsRGV0YWlsc09ubHlcIj5cblxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJjYWNoZUxheW91dFwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cImNhY2hlTGF5b3V0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbcGFuZWxDbGFzc109XCIndHJlZSdcIiBbc2l6ZV09XCIyMFwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLXBhbmVsLWVycm9yXCIgKm5nSWY9XCJsb2FkaW5nU3RhdGUudHJlZS5pc0Vycm9yKCk7IGVsc2UgdHBsVHJlZVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgZW8uc3RhdGUub2JqZWN0LnRyZWUuZXJyb3I8L2Rpdj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxUcmVlPlxuXG4gICAgICAgICAgICAgIDxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFtsb2FkaW5nXT1cIiFjb250ZXh0VHJlZVwiIFt0YWJzXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlciBkYXJrXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCIgdHJhbnNsYXRlPmVvLnN0YXRlLm9iamVjdC50cmVlLnRpdGxlPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbmFtZT1cInN0cnVjdHVyZUZvcm1cIiBjbGFzcz1cInRyZWUtZmlsdGVyLWZvcm1cIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAhIXRlcm1GaWx0ZXJ9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWZvcm0taW5wdXQgW3NraXBUb2dnbGVdPVwidHJ1ZVwiIFtsYWJlbF09XCIgJ2VvLnN0YXRlLm9iamVjdC50cmVlLmZpbHRlci5sYWJlbCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInRlcm1GaWx0ZXJcIiBtYXhsZW5ndGg9XCIyNTBcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXJtRmlsdGVyQ2hhbmdlLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keSB0cmVlXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8tdHJlZSBbdHJlZV09XCJjb250ZXh0VHJlZVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogZmFsc2UsIGRpc2FibGVEZXNlbGVjdGlvbjogdHJ1ZX1cIlxuICAgICAgICAgICAgICAgICAgICBbQHBhbmVsTG9hZGluZ109XCJsb2FkaW5nU3RhdGUudHJlZS5zdGF0ZVwiICpuZ0lmPVwiY29udGV4dFRyZWVcIiBbaGlnaGxpZ2h0ZWROb2Rlc109XCJoaWdobGlnaHRlZE5vZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyZWVVcGRhdGVdPVwiY29udGV4dFRyZWVVcGRhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIj48L2VvLXRyZWU+XG4gICAgICAgICAgICAgICAgICA8aDMgKm5nSWY9XCJjb250ZXh0VHJlZVJlZj8ubGVuZ3RoXCIgdGl0bGU9XCJ7eydlby5zdGF0ZS5vYmplY3QudHJlZS5yZWZlcmVuY2VzLnRvb2x0aXAnfHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLm9iamVjdC50cmVlLnJlZmVyZW5jZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgPGVvLXRyZWUgW3RyZWVdPVwiY29udGV4dFRyZWVSZWZcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IGZhbHNlLCBkaXNhYmxlRGVzZWxlY3Rpb246IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgW0BwYW5lbExvYWRpbmddPVwibG9hZGluZ1N0YXRlLnRyZWVSZWYuc3RhdGVcIiAqbmdJZj1cImNvbnRleHRUcmVlUmVmPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0ZWROb2Rlc109XCJoaWdobGlnaHRlZE5vZGVzXCIgW3RyZWVVcGRhdGVdPVwiY29udGV4dFRyZWVSZWZVcGRhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZmVyZW5jZVwiPjwvZW8tdHJlZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9lby1saXN0LWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbcGFuZWxDbGFzc109XCIndHJlZSdcIiBbc2l6ZV09XCIzNVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxlby1vYmplY3Qtc3RhdGUtZGV0YWlscyAqbmdJZj1cImNvbnRleHRcIiBbY29udGV4dF09XCJjb250ZXh0XCIgW2Zyb250UGFnZURhdGFdPVwiZnJvbnRQYWdlRGF0YVwiXG4gICAgICAgICAgICAgIFt2aXNpYmxlXT1cImZyb250UGFnZVwiIChvblRhYkNoYW5nZSk9XCJzZXR1cEZyb250UGFnZSh0cnVlKVwiIFtwbHVnaW5zXT1cIidvYmplY3Qtc3RhdGUtZGV0YWlscy10YWIub2JqZWN0JyB8IHBsdWdpbnNcIj5cbiAgICAgICAgICAgIDwvZW8tb2JqZWN0LXN0YXRlLWRldGFpbHM+XG5cbiAgICAgICAgICAgIDxlby1yZXN1bHQtbGlzdCAqbmdJZj1cIiFmcm9udFBhZ2UgJiYgc2VhcmNoUmVzdWx0XCIgW3NlbGVjdEZpcnN0XT1cImZhbHNlXCIgW3RpdGxlXT1cImdyaWRUaXRsZVwiXG4gICAgICAgICAgICAgIFtyZWZlcmVuY2VdPVwic2VsZWN0ZWROb2RlPy5pc1JlZmVyZW5jZVwiIFtzZWFyY2hSZXN1bHRdPVwic2VhcmNoUmVzdWx0XCIgW2NvbmZpZ1R5cGVdPVwiY29uZmlnVHlwZVwiXG4gICAgICAgICAgICAgIFtjb25maWdDb250ZXh0XT1cIlwiIFtlbXB0eU1lc3NhZ2VdPVwiJ2VvLnN0YXRlLm9iamVjdC5saXN0LmVycm9yJ1wiIChvblJlZnJlc2gpPVwicmVmcmVzaExpc3QoKVwiPlxuICAgICAgICAgICAgPC9lby1yZXN1bHQtbGlzdD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0NVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxPYmplY3REZXRhaWxzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtc3BsaXQtdmlldz5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsRGV0YWlsc09ubHk+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbE9iamVjdERldGFpbHNcIj48L25nLWNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3RwbE9iamVjdERldGFpbHM+XG4gICAgICAgIDxlby1vYmplY3QtZGV0YWlscyBbYXBwbHlTZWxlY3Rpb25dPVwie31cIiBbcmVmZXJlbmNlXT1cImlzUmVmZXJlbmNlQWN0aXZlXCJcbiAgICAgICAgICBbY2FjaGVMYXlvdXRdPVwiJ29iamVjdC5zdGF0ZS0tJyArIHR5cGVOYW1lICsgJy5vYmplY3QtZGV0YWlscydcIiBbcGx1Z2luc109XCInb2JqZWN0LWRldGFpbHMtdGFiLm9iamVjdCcgfCBwbHVnaW5zXCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWRldGFpbHM+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Vycm9yVG1wbD5cbiAgPGVvLWVycm9yNDA0PjwvZW8tZXJyb3I0MDQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXN0YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUvb2JqZWN0LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUvb2JqZWN0LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEVBQXdCLFVBQVUsRUFBMkUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9JLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFXbkUsT0FBTyxFQUFDLFlBQVksRUFBRSxzQkFBc0IsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBRWpILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVV6RSxJQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFvQjtJQXNDL0IsWUFBb0IsS0FBcUIsRUFDL0IsWUFBOEIsRUFDOUIsYUFBNEIsRUFDNUIsVUFBc0IsRUFDdEIsU0FBMkIsRUFDNUIsU0FBMkIsRUFDM0IsV0FBK0IsRUFDOUIsYUFBNEIsRUFDNUIsUUFBeUIsRUFDekIsY0FBcUMsRUFDckMsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsYUFBNEI7UUFabEIsVUFBSyxHQUFMLEtBQUss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QUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUNsQixtQ0FBbUM7b0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1A7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1Qsd0VBQXdFO1FBQ3hFLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7aUhBbldVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlHQUhwQixDQUFDLGtCQUFrQixDQUFDLDRIQzNCakMsMDNKQTZGYywrNFBEakVBLENBQUMsc0JBQXNCLENBQUM7QUFFekIsb0JBQW9CO0lBUmhDLFlBQVksRUFBRTtHQVFGLG9CQUFvQixDQXFXaEM7U0FyV1ksb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsa0JBQWtCLENBQUMsY0FDbkIsQ0FBQyxzQkFBc0IsQ0FBQzt3Y0FJZixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBbUJULGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc1NlcnZpY2UsIEVuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgT2JqZWN0VHlwZSwgU2VhcmNoUmVzdWx0LCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7Zm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtHcmlkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge0xheW91dFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2xheW91dC9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge0xvY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvbG9jYXRpb24vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbi1zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7UGFuZWxMb2FkaW5nLCBwYW5lbExvYWRpbmdBbmltYXRpb25zfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvdWkvYW5pbWF0aW9ucy9wYW5lbC1sb2FkaW5nLmFuaW1hdGlvbic7XG5pbXBvcnQge0Zyb250UGFnZURhdGEsIE9iamVjdFNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vb2JqZWN0LXN0YXRlLXNlcnZpY2Uvb2JqZWN0LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge09iamVjdFN0YXRlU2VydmljZX0gZnJvbSAnLi4vb2JqZWN0LXN0YXRlLXNlcnZpY2Uvb2JqZWN0LXN0YXRlLnNlcnZpY2UnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3Qtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3Qtc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbT2JqZWN0U3RhdGVTZXJ2aWNlXSxcbiAgYW5pbWF0aW9uczogW3BhbmVsTG9hZGluZ0FuaW1hdGlvbnNdXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdFN0YXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG5cbiAgZXJyb3IgPSBmYWxzZTtcbiAgY29udGV4dDogRG1zT2JqZWN0O1xuICBzZWxlY3RlZEl0ZW06IERtc09iamVjdDtcbiAgZnJvbnRQYWdlOiBib29sZWFuO1xuICBmcm9udFBhZ2VEYXRhOiBGcm9udFBhZ2VEYXRhO1xuICBjb250ZXh0VHJlZTogVHJlZU5vZGVbXTtcbiAgY29udGV4dFRyZWVVcGRhdGU6IFRyZWVOb2RlW107XG4gIGNvbnRleHRUcmVlUmVmOiBUcmVlTm9kZVtdO1xuICBjb250ZXh0VHJlZVJlZlVwZGF0ZTogVHJlZU5vZGVbXTtcbiAgc2VsZWN0ZWROb2RlczogVHJlZU5vZGVbXTtcbiAgc2VsZWN0ZWROb2RlOiBUcmVlTm9kZTtcbiAgaGlnaGxpZ2h0ZWROb2Rlczogc3RyaW5nW107XG4gIGlzUmVmZXJlbmNlQWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgZXhwYW5kZWROb2RlSWRzOiBzdHJpbmdbXSA9IFtdO1xuICB0ZXJtRmlsdGVyOiBzdHJpbmc7XG4gIGFsbFR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25maWdUeXBlOiBPYmplY3RUeXBlO1xuICBAT3V0cHV0KCkgb25UZXJtRmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgZ3JpZFRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5R3JpZCA9IHRydWU7XG5cbiAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHR5cGVOYW1lID0gJyc7XG4gIGNhY2hlTGF5b3V0ID0gJyc7XG5cbiAgbG9hZGluZ1N0YXRlID0ge1xuICAgIHRyZWU6IG5ldyBQYW5lbExvYWRpbmcoKSxcbiAgICB0cmVlUmVmOiBuZXcgUGFuZWxMb2FkaW5nKCksXG4gICAgbGlzdDogbmV3IFBhbmVsTG9hZGluZygpLFxuICAgIGRldGFpbHM6IG5ldyBQYW5lbExvYWRpbmcoKSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIG9iamVjdFN0YXRlOiBPYmplY3RTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UpIHtcblxuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldEJhc2VUaXRsZShudWxsKTtcbiAgICB0aGlzLmdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPnt9O1xuXG4gICAgdGhpcy5vblRlcm1GaWx0ZXJDaGFuZ2VcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSlcbiAgICAgIC5zdWJzY3JpYmUodiA9PiB0aGlzLnNldHVwRnJvbnRQYWdlKHRydWUpKTtcblxuICAgIC8vIHN1YnNjcmliZSBmb3IgZGF0YSBmcm9tIHRoZSBjb25uZWN0ZWQgc2VydmljZVxuICAgIHRoaXMub2JqZWN0U3RhdGVcbiAgICAgIC5saXN0JFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IE9iamVjdFNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICB0aGlzLmZyb250UGFnZSA9ICFyZXM7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAvLyBzZXR1cCB0aGUgZ3JpZCB3aXRoIHRoZSBuZXcgZGF0YVxuICAgICAgICAgIGxldCB7bmFtZSwgcmVzdWx0fSA9IHJlcztcbiAgICAgICAgICB0aGlzLmVtcHR5R3JpZCA9IHJlc3VsdC5jb3VudC52YWx1ZSA9PT0gMDtcbiAgICAgICAgICB0aGlzLmdyaWRUaXRsZSA9IG5hbWU7XG4gICAgICAgICAgdGhpcy5jb25maWdUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUocmVzdWx0LnR5cGVOYW1lKSB8fCB7cW5hbWU6IHJlc3VsdC50eXBlTmFtZX0gYXMgT2JqZWN0VHlwZTtcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlLmxpc3QucmVhZHkoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5vYmplY3RTdGF0ZS50cmVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmJ1aWxkQ29udGV4dFRyZWUocmVzLmZvbGRlcikpO1xuXG4gICAgdGhpcy5vYmplY3RTdGF0ZS50cmVlUmVmJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmJ1aWxkQ29udGV4dFRyZWVSZWYocmVzLmZvbGRlcikpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IERtc09iamVjdCkgPT4ge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0KGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUuZGV0YWlscy5yZWFkeSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuaWQgPT09IGV2dC5kYXRhLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmZyb250UGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZXR1cEZyb250UGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHRUcmVlKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiBldmVudC5kYXRhICYmIHRoaXMuY29udGV4dC5pZCA9PT0gZXZlbnQuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMuY29udGV4dCA9IGV2ZW50LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZnJvbnRQYWdlKSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEZyb250UGFnZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHRUcmVlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1BBU1RFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5jbGlwYm9hcmQucGFzdGUucmVzdWx0bGlzdC5oZWFkbGluZScpO1xuICAgICAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAgICAgLnNlbGVjdFRyZWVOb2RlKDxhbnk+e30sIDxhbnk+e25hbWV9LCB7aWQ6IGV2dC5kYXRhLm1hcChkID0+IGQuaWQpfSkuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ29udGV4dFRyZWUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFzUGVuZGluZ0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2soKTtcbiAgfVxuXG4gIG9uRXhwYW5kZWROb2Rlc0NoYW5nZWQoZXhwYW5kZWROb2Rlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmV4cGFuZGVkTm9kZUlkcyA9IGV4cGFuZGVkTm9kZXM7XG4gIH1cblxuICAvLyBzZWxlY3QgYW4gZW50cnkgZnJvbSB0aGUgdHJlZVxuICBvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICBpZiAobm9kZS5kYXRhLnR5cGUpIHtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0LCB0aGlzLnNlbGVjdGVkTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlQ29udGV4dChub2RlLmlzUmVmZXJlbmNlIHx8IHRoaXMuYWxsVHlwZXMuaW5jbHVkZXMobm9kZS5kYXRhLnR5cGUpID8gW25vZGUuZGF0YS50eXBlXSA6IHRoaXMuYWxsVHlwZXMpO1xuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUubGlzdFxuICAgICAgICAuc3Vic2NyaWJlKG5vZGUuaXNSZWZlcmVuY2UgP1xuICAgICAgICAgIHRoaXMub2JqZWN0U3RhdGUuc2VsZWN0VHJlZU5vZGUodGhpcy5jb250ZXh0LCBub2RlLCB7dGVybTogdGhpcy50ZXJtRmlsdGVyfSwgJ3JlZmVyZW5jZXZpZXcnKSA6XG4gICAgICAgICAgdGhpcy5vYmplY3RTdGF0ZS5zZWxlY3RUcmVlTm9kZSh0aGlzLmNvbnRleHQsIG5vZGUsIHt0ZXJtOiB0aGlzLnRlcm1GaWx0ZXJ9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBGcm9udFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbnRleHRNZW51Q2xpY2tlZChldnQsIGRvYz8pIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKFtkb2MgfHwgdGhpcy5jb250ZXh0XSwgJ0RNU19PQkpFQ1QnKTtcbiAgfVxuXG4gIHJlZnJlc2hMaXN0KCkge1xuICAgIHRoaXMub25UcmVlU2VsZWN0aW9uQ2hhbmdlZCh0aGlzLnNlbGVjdGVkTm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoaXRlbTogRG1zT2JqZWN0LCBzZWxlY3RlZElkPykge1xuICAgIGlmIChpdGVtLmlzQ29udGV4dEZvbGRlcikge1xuICAgICAgLy8gaWYgdGhlcmUgYWxyZWFkeSBpcyBhIGNvbnRleHQgc2V0LCB3ZSBuZWVkIHRvIGxlYXZlIGxvY2F0aW9uIGZvciB0aGUgb2xkIGNvbnRleHQgZmlyc3RcbiAgICAgIC8vIG90aGVyd2lzZSBVcGxvYWRUYXJnZXRzIHdpbGwgbm90IGJlIHVucmVnaXN0ZXJlZCBjb3JyZWN0bHlcbiAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250ZXh0ID0gaXRlbTtcbiAgICAgIHRoaXMuY2FjaGVMYXlvdXQgPSAnb2JqZWN0LnN0YXRlLS0nICsgaXRlbS50eXBlTmFtZTtcbiAgICAgIC8vIGFkZCB0aGlzIGxvY2F0aW9uIHRvIHRoZSBsb2NhdGlvbiBzZXJ2aWNlLCB3aGljaCB3aWxsIHRyYWNrIGFjdGl2ZSBsb2NhdGlvbnNcbiAgICAgIC8vIGFuZCBoYW5kbGUgYSBoaXN0b3J5IG9mIHZpc2l0ZWQgbG9jYXRpb25zLlxuICAgICAgdGhpcy5sb2NhdGlvbi5lbnRlcih0aGlzLmNvbnRleHQsIHRoaXMuc2VsZWN0ZWROb2RlKTtcblxuICAgICAgdGhpcy5vYmplY3RTdGF0ZS5sb2FkVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LmlkLCB0aGlzLmNvbnRleHQudHlwZU5hbWUsIHtkZWZpbml0aW9uOiBbe2ZpZWxkOiAndHlwZScsIGtleTogJ1R5cGVzJywgc2l6ZTogMTAwMH1dfSlcbiAgICAgICAgLnN1YnNjcmliZSh0eXBlcyA9PiAodGhpcy5hbGxUeXBlcyA9ICh0eXBlcy5mb2xkZXJbMF0uZm9sZGVyIHx8IFtdKS5tYXAodCA9PiB0LnR5cGUpKSk7XG5cbiAgICAgIHRoaXMuZmV0Y2hUcmVlRGF0YSgnJywgc2VsZWN0ZWRJZCk7XG4gICAgICB0aGlzLnNldHVwRnJvbnRQYWdlKHRydWUpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZldGNoIHRoZSBjb250ZXh0IGZvbGRlclxuICAgICAgaWYgKGl0ZW0uY29udGV4dEZvbGRlcikge1xuICAgICAgICB0aGlzLmNhY2hlTGF5b3V0ID0gJ29iamVjdC5zdGF0ZS0tJyArIGl0ZW0uY29udGV4dEZvbGRlci50eXBlTmFtZTtcbiAgICAgICAgdGhpcy5kbXNTZXJ2aWNlXG4gICAgICAgICAgLmdldERtc09iamVjdChpdGVtLmNvbnRleHRGb2xkZXIuaWQsIGl0ZW0uY29udGV4dEZvbGRlci50eXBlTmFtZSwgbnVsbCwgJ0RFVEFJTFMnKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3MocmVzLCBpdGVtLmlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGp1c3QgdGhlIGRvY3VtZW50IGluIHJvb3RcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYWNoZUxheW91dCA9ICcnO1xuICAgICAgICAvLyBoaWRlIGVtcHR5IHRyZWUgJiBsaXN0XG4gICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5oaWRlQXJlYXMoKGEsIGkpID0+IGkgPCAyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLnZpc2liaWxpdHlVcGRhdGUoKTtcbiAgfVxuXG4gIHNldHVwRnJvbnRQYWdlKHVwZGF0ZVNlbGVjdGlvbiA9IGZhbHNlLCB1cGRhdGVUcmVlID0gZmFsc2UpIHtcbiAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAuc2VsZWN0RnJvbnRQYWdlKHRoaXMuY29udGV4dClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5mcm9udFBhZ2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmZyb250UGFnZURhdGEgPSBkYXRhO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb24uZm9jdXModGhpcy5jb250ZXh0KTtcbiAgICAgIHRoaXMubG9jYXRpb24uZW50ZXIodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0ZVRyZWUpIHtcbiAgICAgIHRoaXMuZmV0Y2hUcmVlRGF0YSh0aGlzLnRlcm1GaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hUcmVlRGF0YSh0ZXJtRmlsdGVyPzogc3RyaW5nLCBzZWxlY3RlZElkPzogYW55KSB7XG4gICAgdGhpcy5oaWdobGlnaHQoc2VsZWN0ZWRJZCk7XG4gICAgdGhpcy5sb2FkaW5nU3RhdGUudHJlZS5zdWJzY3JpYmUodGhpcy5vYmplY3RTdGF0ZS51cGRhdGVUcmVlQnlRdWVyeSh0aGlzLmNvbnRleHQsIHt0ZXJtOiB0ZXJtRmlsdGVyfSkpO1xuICAgIHRoaXMubG9hZGluZ1N0YXRlLnRyZWVSZWYuc3Vic2NyaWJlKHRoaXMub2JqZWN0U3RhdGUudXBkYXRlVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LCB7dGVybTogdGVybUZpbHRlcn0sICdyZWZlcmVuY2V2aWV3JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHQoc2VsZWN0ZWRJZCkge1xuICAgIGlmIChzZWxlY3RlZElkICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgZm9ya0pvaW4oW1xuICAgICAgICB0aGlzLm9iamVjdFN0YXRlLmxvYWRUcmVlQnlRdWVyeSh0aGlzLmNvbnRleHQuaWQsIHRoaXMuY29udGV4dC50eXBlTmFtZSwge2lkOiBzZWxlY3RlZElkfSksXG4gICAgICAgIHRoaXMub2JqZWN0U3RhdGUubG9hZFRyZWVCeVF1ZXJ5KHRoaXMuY29udGV4dC5pZCwgdGhpcy5jb250ZXh0LnR5cGVOYW1lLCB7aWQ6IHNlbGVjdGVkSWR9LCAncmVmZXJlbmNldmlldycpXG4gICAgICBdKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTm9kZXMgPSB0aGlzLmhpZ2hsaWdodE5vZGVzKFsuLi5yZXNbMF0uZm9sZGVyLCAuLi5yZXNbMV0uZm9sZGVyXSk7XG4gICAgICAgIHRoaXMuaXNSZWZlcmVuY2VBY3RpdmUgPSAhIShyZXNbMV0udG90YWwudmFsdWUgJiYgIXJlc1swXS50b3RhbC52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWdobGlnaHRlZE5vZGVzID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZXh0VHJlZSgpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLm9iamVjdFN0YXRlXG4gICAgICAgIC5sb2FkVHJlZUJ5UXVlcnkodGhpcy5jb250ZXh0LmlkLCB0aGlzLmNvbnRleHQudHlwZU5hbWUsIHt0ZXJtOiB0aGlzLnRlcm1GaWx0ZXJ9KVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmNvbnRleHRUcmVlVXBkYXRlID0gcmVzLmZvbGRlci5tYXAoZiA9PiB0aGlzLmFkZFRyZWVOb2RlKGYsIFtdKSkpO1xuICAgICAgdGhpcy5vYmplY3RTdGF0ZVxuICAgICAgICAubG9hZFRyZWVCeVF1ZXJ5KHRoaXMuY29udGV4dC5pZCwgdGhpcy5jb250ZXh0LnR5cGVOYW1lLCB7dGVybTogdGhpcy50ZXJtRmlsdGVyfSwgJ3JlZmVyZW5jZXZpZXcnKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmNvbnRleHRUcmVlUmVmVXBkYXRlID0gcmVzLmZvbGRlci5tYXAoZiA9PiB0aGlzLmFkZFRyZWVOb2RlKGYsIFtdLCB0cnVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlnaGxpZ2h0Tm9kZXMoZm9sZGVyID0gW10sIG5vZGVzID0gW10pIHtcbiAgICBmb2xkZXIuZm9yRWFjaChmID0+IHtcbiAgICAgIGlmIChmLmNvdW50KSB7XG4gICAgICAgIG5vZGVzLnB1c2goZi5rZXkpO1xuICAgICAgfVxuICAgICAgaWYgKGYuZm9sZGVyKSB7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0Tm9kZXMoZi5mb2xkZXIsIG5vZGVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29udGV4dFRyZWUoZm9sZGVyID0gW10pIHtcbiAgICB0aGlzLmNvbnRleHRUcmVlVXBkYXRlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHRUcmVlID0gZm9sZGVyLm1hcChmID0+IHRoaXMuYWRkVHJlZU5vZGUoZiwgW10pKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250ZXh0VHJlZVJlZihmb2xkZXIgPSBbXSkge1xuICAgIHRoaXMuY29udGV4dFRyZWVSZWZVcGRhdGUgPSBudWxsO1xuICAgIHRoaXMuY29udGV4dFRyZWVSZWYgPSBmb2xkZXIubWFwKGYgPT4gdGhpcy5hZGRUcmVlTm9kZShmLCBbXSwgdHJ1ZSkpO1xuXG4gIH1cblxuICBwcml2YXRlIGFkZFRyZWVOb2RlKG5vZGVEYXRhLCBwYXRoOiBzdHJpbmdbXSwgaXNSZWZlcmVuY2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHtrZXksIHRpdGxlLCBmb2xkZXIsIGV4cGFuZGVkLCBjb3VudCwgc3RhdHN9ID0gbm9kZURhdGE7XG4gICAgLy8gaW1wb3J0YW50IHRvIGNyZWF0ZSBjbG9uZSBoZXJlLCBiZWNhdXNlIG90aGVyd2lzZSBwYXRoIHdpbGwgYmUgbWVzc2VkIHVwXG4gICAgY29uc3QgcCA9IHBhdGguY29uY2F0KFt0aXRsZV0pO1xuICAgIGxldCBub2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgIGlkOiBrZXksXG4gICAgICBuYW1lOiB0aXRsZSxcbiAgICAgIHBhdGg6IHAsXG4gICAgICBjaGlsZHJlbjogKGZvbGRlciB8fCBbXSkubWFwKGYgPT4gdGhpcy5hZGRUcmVlTm9kZShmLCBwLCBpc1JlZmVyZW5jZSkpLFxuICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkIHx8ICEhfnRoaXMuZXhwYW5kZWROb2RlSWRzLmluZGV4T2Yoa2V5KSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICBpc1JlZmVyZW5jZSxcbiAgICAgIGJhZGdlczogKHN0YXRzIHx8IFtdKS5tYXAoc3RhdCA9PiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgdmFsdWU6IHN0YXQudmFsdWUgKyAnICcgKyBzdGF0LnRpdGxlLFxuICAgICAgICBjc3NDbGFzczogJ3N0YXRzJ1xuICAgICAgfSkpLFxuICAgICAgZGF0YTogbm9kZURhdGFcbiAgICB9O1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBub2RlLmJhZGdlcy5wdXNoKHt2YWx1ZTogY291bnR9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGUudXJsXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZUxheW91dCA9ICcnO1xuICAgICAgICAvLyB0aGlzLmxheW91dFNlcnZpY2UuaGlkZUFyZWFzKCgpID0+IGZhbHNlKTtcbiAgICAgICAgY29uc3Qge3BhcmFtcywgcXVlcnlQYXJhbXN9ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICAgICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgICAgIHRoaXMudHlwZU5hbWUgPSBxdWVyeVBhcmFtc1sndHlwZSddIHx8ICcnO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzKHtpZDogcGFyYW1zLmlkLCB0eXBlTmFtZTogdGhpcy50eXBlTmFtZX0pO1xuICAgICAgICAgIHRoaXMuZG1zU2VydmljZVxuICAgICAgICAgICAgLmdldERtc09iamVjdChwYXJhbXMuaWQsIHRoaXMudHlwZU5hbWUsIG51bGwsICdERVRBSUxTJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKHJlcyk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzKHJlcyk7XG4gICAgICAgICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5zZXRBcmVhcyhbXSk7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQsIHdlIHRlbGwgdGhlIGxvY2F0aW9uIHNlcnZpY2UgdGhhdCB3ZVxuICAgIC8vIGxlZnQgdGhlIGxvY2F0aW9uXG4gICAgdGhpcy5sb2NhdGlvbi5sZWF2ZSgpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImZpbGVcIiBbbmdDbGFzc109XCJ7cmVhZHk6IGNvbnRleHQgfHwgY29udGV4dCA9PT0gbnVsbH1cIiAqbmdJZj1cIiFlcnJvcjsgZWxzZSBlcnJvclRtcGxcIj5cblxuICA8ZGl2IGNsYXNzPVwiZmlsZS1oZWFkXCIgKm5nSWY9XCJjb250ZXh0ICYmIGNvbnRleHQuaXNDb250ZXh0Rm9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwidHlwZS1pY29uXCIgW29iamVjdFR5cGVdPVwiY29udGV4dC50eXBlXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgKGNsaWNrKT1cInNldHVwRnJvbnRQYWdlKClcIiAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudUNsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e2NvbnRleHQudGl0bGUgfHwgJyZuYnNwOyd9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e2NvbnRleHQuZGVzY3JpcHRpb24gfHwgJyZuYnNwOyd9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9sZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0ZWQtZGF0ZVwiPnt7Y29udGV4dC5jcmVhdGVkLm9uIHwgbG9jYWxlRGF0ZX19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0ZWQtdGl0bGVcIj57e2NvbnRleHQuY3JlYXRlZC5ieS50aXRsZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWxlLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1ib2R5LXdyYXBcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQgIT09IG51bGw7IGVsc2UgdHBsRGV0YWlsc09ubHlcIj5cblxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJjYWNoZUxheW91dFwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cImNhY2hlTGF5b3V0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbcGFuZWxDbGFzc109XCIndHJlZSdcIiBbc2l6ZV09XCIyMFwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLXBhbmVsLWVycm9yXCIgKm5nSWY9XCJsb2FkaW5nU3RhdGUudHJlZS5pc0Vycm9yKCk7IGVsc2UgdHBsVHJlZVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgZW8uc3RhdGUub2JqZWN0LnRyZWUuZXJyb3I8L2Rpdj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxUcmVlPlxuXG4gICAgICAgICAgICAgIDxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFtsb2FkaW5nXT1cIiFjb250ZXh0VHJlZVwiIFt0YWJzXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlciBkYXJrXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCIgdHJhbnNsYXRlPmVvLnN0YXRlLm9iamVjdC50cmVlLnRpdGxlPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbmFtZT1cInN0cnVjdHVyZUZvcm1cIiBjbGFzcz1cInRyZWUtZmlsdGVyLWZvcm1cIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAhIXRlcm1GaWx0ZXJ9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWZvcm0taW5wdXQgW3NraXBUb2dnbGVdPVwidHJ1ZVwiIFtsYWJlbF09XCIgJ2VvLnN0YXRlLm9iamVjdC50cmVlLmZpbHRlci5sYWJlbCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInRlcm1GaWx0ZXJcIiBtYXhsZW5ndGg9XCIyNTBcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXJtRmlsdGVyQ2hhbmdlLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keSB0cmVlXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8tdHJlZSBbdHJlZV09XCJjb250ZXh0VHJlZVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogZmFsc2UsIGRpc2FibGVEZXNlbGVjdGlvbjogdHJ1ZX1cIlxuICAgICAgICAgICAgICAgICAgICBbQHBhbmVsTG9hZGluZ109XCJsb2FkaW5nU3RhdGUudHJlZS5zdGF0ZVwiICpuZ0lmPVwiY29udGV4dFRyZWVcIiBbaGlnaGxpZ2h0ZWROb2Rlc109XCJoaWdobGlnaHRlZE5vZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyZWVVcGRhdGVdPVwiY29udGV4dFRyZWVVcGRhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIj48L2VvLXRyZWU+XG4gICAgICAgICAgICAgICAgICA8aDMgKm5nSWY9XCJjb250ZXh0VHJlZVJlZj8ubGVuZ3RoXCIgdGl0bGU9XCJ7eydlby5zdGF0ZS5vYmplY3QudHJlZS5yZWZlcmVuY2VzLnRvb2x0aXAnfHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLm9iamVjdC50cmVlLnJlZmVyZW5jZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgPGVvLXRyZWUgW3RyZWVdPVwiY29udGV4dFRyZWVSZWZcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IGZhbHNlLCBkaXNhYmxlRGVzZWxlY3Rpb246IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgW0BwYW5lbExvYWRpbmddPVwibG9hZGluZ1N0YXRlLnRyZWVSZWYuc3RhdGVcIiAqbmdJZj1cImNvbnRleHRUcmVlUmVmPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0ZWROb2Rlc109XCJoaWdobGlnaHRlZE5vZGVzXCIgW3RyZWVVcGRhdGVdPVwiY29udGV4dFRyZWVSZWZVcGRhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZmVyZW5jZVwiPjwvZW8tdHJlZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9lby1saXN0LWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbcGFuZWxDbGFzc109XCIndHJlZSdcIiBbc2l6ZV09XCIzNVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxlby1vYmplY3Qtc3RhdGUtZGV0YWlscyAqbmdJZj1cImNvbnRleHRcIiBbY29udGV4dF09XCJjb250ZXh0XCIgW2Zyb250UGFnZURhdGFdPVwiZnJvbnRQYWdlRGF0YVwiXG4gICAgICAgICAgICAgIFt2aXNpYmxlXT1cImZyb250UGFnZVwiIChvblRhYkNoYW5nZSk9XCJzZXR1cEZyb250UGFnZSh0cnVlKVwiIFtwbHVnaW5zXT1cIidvYmplY3Qtc3RhdGUtZGV0YWlscy10YWIub2JqZWN0JyB8IHBsdWdpbnNcIj5cbiAgICAgICAgICAgIDwvZW8tb2JqZWN0LXN0YXRlLWRldGFpbHM+XG5cbiAgICAgICAgICAgIDxlby1yZXN1bHQtbGlzdCAqbmdJZj1cIiFmcm9udFBhZ2UgJiYgc2VhcmNoUmVzdWx0XCIgW3NlbGVjdEZpcnN0XT1cImZhbHNlXCIgW3RpdGxlXT1cImdyaWRUaXRsZVwiXG4gICAgICAgICAgICAgIFtyZWZlcmVuY2VdPVwic2VsZWN0ZWROb2RlPy5pc1JlZmVyZW5jZVwiIFtzZWFyY2hSZXN1bHRdPVwic2VhcmNoUmVzdWx0XCIgW2NvbmZpZ1R5cGVdPVwiY29uZmlnVHlwZVwiXG4gICAgICAgICAgICAgIFtjb25maWdDb250ZXh0XT1cIlwiIFtlbXB0eU1lc3NhZ2VdPVwiJ2VvLnN0YXRlLm9iamVjdC5saXN0LmVycm9yJ1wiIChvblJlZnJlc2gpPVwicmVmcmVzaExpc3QoKVwiPlxuICAgICAgICAgICAgPC9lby1yZXN1bHQtbGlzdD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0NVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxPYmplY3REZXRhaWxzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtc3BsaXQtdmlldz5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsRGV0YWlsc09ubHk+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbE9iamVjdERldGFpbHNcIj48L25nLWNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3RwbE9iamVjdERldGFpbHM+XG4gICAgICAgIDxlby1vYmplY3QtZGV0YWlscyBbYXBwbHlTZWxlY3Rpb25dPVwie31cIiBbcmVmZXJlbmNlXT1cImlzUmVmZXJlbmNlQWN0aXZlXCJcbiAgICAgICAgICBbY2FjaGVMYXlvdXRdPVwiJ29iamVjdC5zdGF0ZS0tJyArIHR5cGVOYW1lICsgJy5vYmplY3QtZGV0YWlscydcIiBbcGx1Z2luc109XCInb2JqZWN0LWRldGFpbHMtdGFiLm9iamVjdCcgfCBwbHVnaW5zXCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWRldGFpbHM+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Vycm9yVG1wbD5cbiAgPGVvLWVycm9yNDA0PjwvZW8tZXJyb3I0MDQ+XG48L25nLXRlbXBsYXRlPiJdfQ==