@eo-sdk/client 11.10.0-rc.1 → 11.10.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +1 -0
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/notifications-state/notifications-state.component.d.ts +1 -0
- package/app/eo-client/notifications-state/notifications-state.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +1 -0
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/ui/overlay/overlay.component.d.ts +3 -2
- package/app/eo-framework/ui/overlay/overlay.component.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +1 -0
- package/assets/_default/i18n/en.json +2 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +9 -3
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +9 -3
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +1 -1
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +9 -3
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +1 -1
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +1 -1
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +1 -1
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +1 -1
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +15 -9
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +12 -4
- package/fesm2022/eo-sdk-client.mjs +57 -25
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -175,6 +175,12 @@ let InboxStateComponent = class InboxStateComponent {
|
|
|
175
175
|
rowSelection: 'single'
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
|
+
onFilterOverlayToggle(open) {
|
|
179
|
+
this.eoGrid.api?.setGridOption('suppressCellFocus', open);
|
|
180
|
+
if (!open) {
|
|
181
|
+
this.eoGrid.selectRow(0);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
178
184
|
cellRenderer(params) {
|
|
179
185
|
let label = '';
|
|
180
186
|
if (Object.keys(InboxTypes).includes(params.data.type)) {
|
|
@@ -263,7 +269,7 @@ let InboxStateComponent = class InboxStateComponent {
|
|
|
263
269
|
this.actionService.showActions([], 'COMPONENT_SPECIFIC_ACTIONS');
|
|
264
270
|
}
|
|
265
271
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", 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 }, { token: i7.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\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 <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\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>\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 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;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: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.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: i10.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i11.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i12.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i13.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i14.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i15.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i16.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i17.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i18.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: i19.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i20.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: "directive", type: i21.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i22.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i23.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i24.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i24.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i25.PluginPipe, name: "plugins" }] }); }
|
|
272
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\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\" (onToggle)=\"onFilterOverlayToggle($event)\">\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 <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\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>\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 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;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: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.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: i10.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i11.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i12.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i13.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i14.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i15.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i16.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i17.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i18.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: i19.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i20.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: "directive", type: i21.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i22.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i23.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i24.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i24.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i25.PluginPipe, name: "plugins" }] }); }
|
|
267
273
|
};
|
|
268
274
|
InboxStateComponent = __decorate([
|
|
269
275
|
UntilDestroy()
|
|
@@ -271,9 +277,9 @@ InboxStateComponent = __decorate([
|
|
|
271
277
|
export { InboxStateComponent };
|
|
272
278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InboxStateComponent, decorators: [{
|
|
273
279
|
type: Component,
|
|
274
|
-
args: [{ selector: 'eo-inbox-state', template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\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 <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\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>\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 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;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"] }]
|
|
280
|
+
args: [{ selector: 'eo-inbox-state', template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\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\" (onToggle)=\"onFilterOverlayToggle($event)\">\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 <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\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>\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 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;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"] }]
|
|
275
281
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.SelectionService }, { type: i3.PageTitleService }, { type: i1.InboxService }, { type: i4.PendingChangesService }, { type: i5.EmptyStateService }, { type: i1.EventService }, { type: i6.ActivatedRoute }, { type: i1.LocalStorageService }, { type: i7.ActionService }], propDecorators: { eoGrid: [{
|
|
276
282
|
type: ViewChild,
|
|
277
283
|
args: ['eoGrid']
|
|
278
284
|
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUMsVUFBVSxFQUEyRixNQUFNLGNBQWMsQ0FBQztBQUNsSSxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBT25FLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlFQUF5RSxDQUFDO0FBRzVHLE9BQU8sRUFBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUS9HLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBc0M5QixZQUFtQixTQUEyQixFQUNyQyxTQUEyQixFQUMxQixZQUE4QixFQUMvQixZQUEwQixFQUN6QixjQUFxQyxFQUNyQyxLQUF3QixFQUN4QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixjQUFtQyxFQUNuQyxhQUE0QjtRQVRuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENB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MUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xEZWYsIEdyaWRPcHRpb25zfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2UsIEluYm94SXRlbSwgSW5ib3hTZXJ2aWNlLCBJbmJveFN0YXRlLCBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge0N1c3RvbVNvcnRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvY3VzdG9tLXNvcnQvY3VzdG9tLXNvcnQuY29tcG9uZW50JztcbmltcG9ydCB7SVNldEZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9maWx0ZXIvc2V0RmlsdGVycy9zZXQtZmlsdGVycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtHcmlkQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0luYm94VHlwZXMsIEluYm94VHlwZXNGaWx0ZXJ9IGZyb20gJy4vaW5ib3gudHlwZXMuZW51bSc7XG5pbXBvcnQge1JldHVyblRhc2tBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvcmV0dXJuLXRhc2stYWN0aW9uL3JldHVybi10YXNrLWFjdGlvbic7XG5pbXBvcnQge0FjdGlvblNlcnZpY2UsIEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsnO1xuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1pbmJveC1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luYm94LXN0YXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW5ib3hTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudCB7XG5cbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBzb3J0RmllbGRzOiBDb2xEZWZbXTtcbiAgaW5ib3hGaWx0ZXJGaWVsZHM6IElTZXRGaWx0ZXJbXSA9IFtdO1xuICB0eXBlRmlsdGVyRmllbGRzOiBJU2V0RmlsdGVyW10gPSBbXTtcbiAgaW5ib3hTZWxlY3Rpb25JZCA9ICdpbmJveCc7XG4gIGluYm94RG1zT2JqZWN0U2VsZWN0aW9uSWQgPSAnaW5ib3hfZG1zJztcbiAgaW5ib3hTZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2U7XG4gIHNlbGVjdEZpcnN0ID0gdHJ1ZTtcbiAgaWRNYXRjaCA9IHRydWU7XG4gIGdyaWREYXRhO1xuICBkZWZhdWx0RmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcbiAgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG4gIGluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICBzdG9yYWdlS2V5TGFzdEl0ZW1JRCA9ICdlby5pbmJveC5sYXN0SXRlbUlEJztcblxuICAvLyBkZWZpbmUgYSBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCBmb3IgdGhlIGluYm94IHN0YXRlXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5pbmJveC1zdGF0ZScsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94Lmxpc3QudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLmluYm94Lmxpc3QudGl0bGUnLFxuICAgIGZvY3VzZWQ6IHRydWUsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycpLFxuICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycsXG4gICAgICBzaG9ydGN1dDogJ1QnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXB0eTogRW1wdHlTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9uU2VydmljZTogQWN0aW9uU2VydmljZSkge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldEJhc2VUaXRsZSh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5saXN0LnRpdGxlJykpO1xuICAgIC8vc2Vjb25kYXJ5IHNlbGVjdGlvbiBpbnN0YW5jZSBmb3IgaW5ib3ggaXRlbXNcbiAgICB0aGlzLmluYm94U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uY3JlYXRlTmV3KHRoaXMuaW5ib3hTZWxlY3Rpb25JZCk7XG4gICAgdGhpcy5zZWxlY3Rpb24uY3JlYXRlTmV3KHRoaXMuaW5ib3hEbXNPYmplY3RTZWxlY3Rpb25JZCk7XG5cbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcyA9IHtjb250ZXh0OiB7ZGVmYXVsdFZhbHVlOiBwYXJhbXMuaWR9fTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5pbmJveFNlcnZpY2UuaW5ib3hTdGF0ZSRcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IEluYm94U3RhdGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZW9HcmlkKSB7XG4gICAgICAgICAgLy8gdG9kbzogdGVtcG9yYXJ5IGZpeCB1bnRpbCBzdGF0dXMgc2VydmljZSB1cGRhdGVcbiAgICAgICAgICAvLyB0aGlzLmluYm94Q2hhbmdlZCA9IHRoaXMuZW9HcmlkLmNvbnRleHRDb3VudCAhPT0gc3RhdGUudG90YWxtZXNzYWdlcztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvbkNvdW50Q2hhbmdlZChldnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dCAmJiB0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dC5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIGlmIChldnQucm93Q291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy5pZE1hdGNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmluYm94U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVvR3JpZC5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1BlbmRpbmdDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKCk7XG4gIH1cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICB0aGlzLmluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZShmYWxzZSk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2UuZ2V0SXRlbXMoKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICB9XG5cbiAgaXRlbUZpbHRlckZpZWxkcyhub2RlLCBpdGVtKSB7XG4gICAgY29uc3QgdmFsdWUgPSBub2RlLmRhdGFbSW5ib3hUeXBlc0ZpbHRlcltpdGVtXV07XG4gICAgY29uc3QgYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPSB0aGlzLmluYm94RmlsdGVyRmllbGRzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gJ2FjY2VwdGVkVGFza3MnKS52YWx1ZVxuICAgICAgJiYgdGhpcy5pbmJveEZpbHRlckZpZWxkcy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09ICd1bmFjY2VwdGVkVGFza3MnKS52YWx1ZTtcbiAgICBzd2l0Y2ggKEluYm94VHlwZXNGaWx0ZXJbaXRlbV0pIHtcbiAgICAgIGNhc2UgSW5ib3hUeXBlc0ZpbHRlci5vdmVyZHVlOlxuICAgICAgICByZXR1cm4gbm9kZS5kYXRhLmlzT3ZlcmR1ZSgpO1xuICAgICAgY2FzZSBJbmJveFR5cGVzRmlsdGVyLmFic2VudDpcbiAgICAgICAgcmV0dXJuICEhdmFsdWU7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIuYWNjZXB0ZWRUYXNrczpcbiAgICAgICAgcmV0dXJuIGFjY2VwdGVkQW5kVW5hY2NlcHRlZENvbWJpbmVkID8gbm9kZS5kYXRhLnR5cGUgPT09ICdCUE0nIDogbm9kZS5kYXRhLnR5cGUgPT09ICdCUE0nICYmICEhbm9kZS5kYXRhLmFjY2VwdGVkO1xuICAgICAgY2FzZSBJbmJveFR5cGVzRmlsdGVyLnVuYWNjZXB0ZWRUYXNrczpcbiAgICAgICAgcmV0dXJuIGFjY2VwdGVkQW5kVW5hY2NlcHRlZENvbWJpbmVkID8gbm9kZS5kYXRhLnR5cGUgPT09ICdCUE0nIDogbm9kZS5kYXRhLnR5cGUgPT09ICdCUE0nICYmICFub2RlLmRhdGEuYWNjZXB0ZWQ7XG4gICAgfVxuICB9XG5cbiAgZmllbGRGaWx0ZXJzKCkge1xuICAgIHRoaXMudHlwZUZpbHRlckZpZWxkcyA9IE9iamVjdC5rZXlzKEluYm94VHlwZXMpLm1hcChpdGVtID0+ICh7XG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uaW5ib3guJHtpdGVtfWApLFxuICAgICAgZmlsdGVyOiAobm9kZSkgPT4gbm9kZS5kYXRhLnR5cGUgPT09IGl0ZW0sXG4gICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIGlkOiBpdGVtXG4gICAgfSkpO1xuXG4gICAgdGhpcy5pbmJveEZpbHRlckZpZWxkcyA9IE9iamVjdC5rZXlzKEluYm94VHlwZXNGaWx0ZXIpLm1hcChpdGVtID0+ICh7XG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uaW5ib3guZmlsdGVyLiR7aXRlbX1gKSxcbiAgICAgIGZpbHRlcjogKG5vZGUpID0+IHRoaXMuaXRlbUZpbHRlckZpZWxkcyhub2RlLCBpdGVtKSxcbiAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIGlkOiBpdGVtXG4gICAgfSkpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZmllbGRGaWx0ZXJzKCk7XG4gIH1cblxuICB1cGRhdGVHcmlkKGRhdGE6IEluYm94SXRlbVtdKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eVN0YXRlID0gdGhpcy5lbXB0eS5nZXRFbXB0eVN0YXRlKGRhdGEgPyBkYXRhLmxlbmd0aCA6IC0xLCB1bmRlZmluZWQsICdpY19uby1maWxlLnN2ZycpO1xuXG4gICAgaWYgKHRoaXMuZW9HcmlkICYmIHRoaXMuZW9HcmlkLmlzUmVhZHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVvR3JpZC51cGRhdGVSb3dEYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG5cbiAgICBsZXQgY29sRGVmczogQ29sRGVmW10gPSBbe1xuICAgICAgaGVhZGVyTmFtZTogJycsXG4gICAgICBmaWVsZDogJ19fY3VzdG9tJyxcbiAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jZWxsUmVuZGVyZXIsXG4gICAgICBmaWx0ZXI6IGZhbHNlXG4gICAgICAvLyBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IEluYm94UmVuZGVyZXJDb21wb25lbnRcbiAgICB9XTtcblxuICAgIHRoaXMuc29ydEZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICdyZWNlaXZlZCcsIGhlYWRlck5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LnNvcnQuZGF0ZScpLCBzb3J0OiBudWxsLFxuICAgICAgICB2YWx1ZUdldHRlcjogKHApID0+IChwLmRhdGFbcC5jb2xEZWYuZmllbGRdIHx8ICcnKS5tYXRjaCgvXFwrXFxkXFxkOlxcZFxcZC8pID8gbmV3IERhdGUocC5kYXRhW3AuY29sRGVmLmZpZWxkXSkudG9JU09TdHJpbmcoKSA6IHAuZGF0YVtwLmNvbERlZi5maWVsZF1cbiAgICAgIH0sXG4gICAgICB7ZmllbGQ6ICd0aXRsZScsIGhlYWRlck5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LnNvcnQudGl0bGUnKSwgc29ydDogbnVsbH0sXG4gICAgICB7ZmllbGQ6ICdkZXNjcmlwdGlvbicsIGhlYWRlck5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LnNvcnQuZGVzY3JpcHRpb24nKSwgc29ydDogbnVsbH1cbiAgICBdO1xuXG4gICAgbGV0IHNvcnRDb2xEZWZzID0gQ3VzdG9tU29ydENvbXBvbmVudC5zb3J0Q29sRGVmcyh0aGlzLnNvcnRGaWVsZHMpO1xuXG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgIGNvbnRleHQ6IHtjb3VudDogZGF0YS5sZW5ndGh9LFxuICAgICAgcm93RGF0YTogZGF0YSxcbiAgICAgIGNvbHVtbkRlZnM6IGNvbERlZnMuY29uY2F0KHNvcnRDb2xEZWZzKSxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICByb3dIZWlnaHQ6IDgwLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJ1xuICAgIH07XG4gIH1cblxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XG5cbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBpZiAoT2JqZWN0LmtleXMoSW5ib3hUeXBlcykuaW5jbHVkZXMocGFyYW1zLmRhdGEudHlwZSkpIHtcbiAgICAgIGxhYmVsID0gcGFyYW1zLmNvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoYGVvLmluYm94LiR7cGFyYW1zLmRhdGEudHlwZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSBgYXNzZXRzL19kZWZhdWx0L3N2Zy9pY18ke0luYm94VHlwZXNbcGFyYW1zLmRhdGEudHlwZV19LnN2Z2A7XG5cbiAgICBsZXQgaWNvbiA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignaWNvbicsIHBhcmFtcywge3ZhbHVlOiB7dXJsLCBsYWJlbH19KTtcbiAgICBsZXQgc2hvcnREYXRlID0gcGFyYW1zLmNvbnRleHQuY3IucmVuZGVyKCdkYXRlVGltZScsIHBhcmFtcywge3ZhbHVlOiBwYXJhbXMuZGF0YS5yZWNlaXZlZCwgcGF0dGVybjogJ2VvU2hvcnREYXRlJ30pO1xuICAgIGxldCBzaG9ydFRpbWUgPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2RhdGVUaW1lJywgcGFyYW1zLCB7dmFsdWU6IHBhcmFtcy5kYXRhLnJlY2VpdmVkLCBwYXR0ZXJuOiAnZW9TaG9ydFRpbWUnfSk7XG4gICAgbGV0IGR1ZXRpbWUgPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2RhdGVUaW1lJywgcGFyYW1zLCB7dmFsdWU6IHBhcmFtcy5kYXRhLmR1ZXRpbWV9KTtcbiAgICBjb25zdCB0aXRsZUNsYXNzID0gcGFyYW1zLmRhdGEuYWNjZXB0ZWQgPyAndGl0bGUnIDogJ3RpdGxlLWJvbGQnO1xuXG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtJHtwYXJhbXMuZGF0YS5mb2xkZXIgPyAnIGZvbGRlcicgOiAnJ31cIiB1bnNlbGVjdGFibGU+XG4gICAgICAgICAgICAgICR7aWNvbn1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29udGVudCc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nJHt0aXRsZUNsYXNzfSc+JHtwYXJhbXMuZGF0YS50aXRsZSB8fCAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdkZXNjcmlwdGlvbic+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdub3RlcyR7cGFyYW1zLmRhdGEuaXNPdmVyZHVlKCkgPyAnIHBhc3REdWUnIDogJyd9Jz5cbiAgICAgICAgICAgICAgICAgICR7cGFyYW1zLmRhdGEuZHVldGltZSA/ICc8c3BhbiBjbGFzcz1cInBlcmlvZFwiPicgKyBkdWV0aW1lICsgJzwvc3Bhbj4nIDogJyd9XG4gICAgICAgICAgICAgICAgICAke3BhcmFtcy5kYXRhLmlzZGVwdXR5ID8gJzxzcGFuPicgKyBwYXJhbXMuY29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3guaXRlbS5ub3RlLmFic2VuY2UnKSArICc8L3NwYW4+JyA6ICcnfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZVwiPiR7c2hvcnREYXRlfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+JHtzaG9ydFRpbWV9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIHRoaXMuaW5ib3hTZXJ2aWNlXG4gICAgICAuaW5ib3hJdGVtc0dyaWREYXRhJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBJbmJveEl0ZW1bXSkgPT4ge1xuXG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQodGhpcy5ncmlkRGF0YSk7XG4gICAgICAgIHRoaXMuZW9HcmlkPy5hcGkucmVkcmF3Um93cygpO1xuXG4gICAgICAgIGNvbnN0IGxhc3RJbmJveEl0ZW1JRCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlEKTtcbiAgICAgICAgaWYgKGxhc3RJbmJveEl0ZW1JRCAmJiB0aGlzLmdyaWREYXRhLmZpbmQoaSA9PiBpLmlkID09PSBsYXN0SW5ib3hJdGVtSUQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lb0dyaWQuc2VsZWN0Um93KGxhc3RJbmJveEl0ZW1JRCksIDUwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LklOQk9YX0lURU1fTE9DS0VEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEluYm94SXRlbUlEID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQpO1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZpbmQoaSA9PiBpLmlkID09PSBsYXN0SW5ib3hJdGVtSUQpLmFjY2VwdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lb0dyaWQuYXBpLnJlZHJhd1Jvd3MoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LklOQk9YX0lURU1fVU5MT0NLRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0SW5ib3hJdGVtSUQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5TGFzdEl0ZW1JRCk7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZmluZChpID0+IGkuaWQgPT09IGxhc3RJbmJveEl0ZW1JRCkuYWNjZXB0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lb0dyaWQuYXBpLnJlZHJhd1Jvd3MoKTtcbiAgICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byB0aGUgb25GaW5pc2gkIG9ic2VydmFibGUgb2YgdGhlIGFjdGlvblNlcnZpY2UuXG4gICAgICogV2hlbiB0aGUgb2JzZXJ2YWJsZSBlbWl0cyBhIHZhbHVlLCB0aGUgcmVmcmVzaEdyaWQgbWV0aG9kIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uub25GaW5pc2gkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgIC8vIENsZWFycyBhbnkgYWN0aW9ucyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGlzIGNvbXBvbmVudC5cbiAgICB0aGlzLmFjdGlvblNlcnZpY2UuY2xlYXJDb21wb25lbnRTcGVjaWZpY0FjdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBkaXNwbGF5cyBjb21wb25lbnQtc3BlY2lmaWMgYWN0aW9ucy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhbiBhcnJheSBvZiBhY3Rpb25zLCBzZXRzIHRoZW0gYXMgY29tcG9uZW50LXNwZWNpZmljIGFjdGlvbnNcbiAgICogdXNpbmcgdGhlIGFjdGlvblNlcnZpY2UsIGFuZCB0aGVuIGRpc3BsYXlzIHRoZXNlIGFjdGlvbnMgb24gdGhlIHBhZ2UuXG4gICAqL1xuICBzaG93QWN0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW1xuICAgICAge1xuICAgICAgICBhY3Rpb246IG5ldyBSZXR1cm5UYXNrQWN0aW9uQ29tcG9uZW50KHRoaXMudHJhbnNsYXRlKSxcbiAgICAgIH1cbiAgICBdO1xuICAgIHRoaXMuYWN0aW9uU2VydmljZS5zZXRDb21wb25lbnRTcGVjaWZpY0FjdGlvbnMoYWN0aW9ucyk7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKFtdLCAnQ09NUE9ORU5UX1NQRUNJRklDX0FDVElPTlMnKTtcbiAgfVxuXG59XG4iLCI8eXZjLXNwbGl0LXZpZXcgW2xheW91dFNldHRpbmdzSURdPVwiJ2luYm94LnN0YXRlJ1wiIFtlb1Nob3J0Y3V0c109XCJzaG9ydGN1dHNcIj5cbiAgPCEtLSBsaXN0IC0tPlxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgPGVvLWxpc3QtY29udGFpbmVyICNlb0xpc3QgW2FwcGx5U2VsZWN0aW9uXT1cIntvdXQ6IGluYm94U2VsZWN0aW9uSWR9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyXCI+XG5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2luYm94LnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIiB0cmFuc2xhdGU+ZW8uaW5ib3gubGlzdC50aXRsZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcmVmcmVzaC1idXR0b25cIiBbbmdDbGFzc109XCJ7aW5ib3hDaGFuZ2VkOiBpbmJveENoYW5nZWR9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjRmlsdGVyLnJlc2V0RmlsdGVyKCk7IHJlZnJlc2hHcmlkKClcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuXG4gICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgY2xhc3M9XCJvdmVybGF5LWZpbHRlclwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbHRlci5zdmcnXCIgW2ljb25UaXRsZV09XCInZW8ubGlzdC5maWx0ZXInIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8ZW8tY3VzdG9tLWZpbHRlciAjY0ZpbHRlciAoY2hhbmdlKT1cImNGaWx0ZXIudXBkYXRlR3JpZChlb0xpc3QuZW9HcmlkU3ViamVjdCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8ZW8tdGV4dC1maWx0ZXIgW3RpdGxlXT1cIidlby5pbmJveC5maWx0ZXIudGl0bGUnIHwgdHJhbnNsYXRlXCIgW2ZpbHRlclBhcmFtc109XCJkZWZhdWx0RmlsdGVyUGFyYW1zXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ2luYm94LnRleHQnXCIgW21hdGNoRmllbGRzXT1cIlsndGl0bGUnLCdkZXNjcmlwdGlvbicsJ2lkJ11cIiBbZW5hYmxlU2F2ZV09XCJ0cnVlXCI+PC9lby10ZXh0LWZpbHRlcj5cbiAgICAgICAgICAgICAgPGVvLXNldC1maWx0ZXIgY2xhc3M9XCJ0eXBlLWZpbHRlcnNcIiBbb3BlcmF0b3JdPVwiJ09SJ1wiIFtpZF09XCInaW5ib3gudHlwZSdcIiBbZmlsdGVyUGFyYW1zXT1cImRlZmF1bHRGaWx0ZXJQYXJhbXNcIiBbb3B0aW9uc109XCJ0eXBlRmlsdGVyRmllbGRzXCI+PC9lby1zZXQtZmlsdGVyPlxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBjbGFzcz1cImluYm94LWZpbHRlcnNcIiBbb3BlcmF0b3JdPVwiJ0FORCdcIiBbaWRdPVwiJ2luYm94LnNldCdcIiBbZmlsdGVyUGFyYW1zXT1cImRlZmF1bHRGaWx0ZXJQYXJhbXNcIiBbb3B0aW9uc109XCJpbmJveEZpbHRlckZpZWxkc1wiPjwvZW8tc2V0LWZpbHRlcj5cbiAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb1NvcnQgY2xhc3M9XCJvdmVybGF5LXNvcnRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zb3J0LnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ubGlzdC5zb3J0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPGVvLWN1c3RvbS1zb3J0ICNjU29ydCBbaWRdPVwiJ2luYm94LnNvcnQnXCIgKGNoYW5nZSk9XCJjU29ydC51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAoYWN0aXZlKT1cIm9Tb3J0Lm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCIgW3NvcnRGaWVsZHNdPVwic29ydEZpZWxkc1wiPjwvZW8tY3VzdG9tLXNvcnQ+XG4gICAgICAgICAgPC9lby1vdmVybGF5PlxuXG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYWN0aW9ucy1idXR0b25cIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiIFtpY29uVGl0bGVdPVwiJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCI+PC9lby1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgICA8ZW8tZ3JpZCAjZW9HcmlkICpuZ0lmPVwiZ3JpZE9wdGlvbnM/LnJvd0RhdGFcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiBbZnVsbFdpZHRoXT1cInRydWVcIiBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0Zvb3Rlcl09XCJ0cnVlXCIgW3NlbGVjdEZpcnN0XT1cInNlbGVjdEZpcnN0XCIgW29wdGlvbnNdPVwie2ZpbHRlckFjdGl2ZTogb0ZpbHRlci5hY3RpdmV9XCJcbiAgICAgICAgICAoZW9HcmlkQ291bnRDaGFuZ2VkKT1cImVvTGlzdC5vbkNvdW50Q2hhbmdlZCgkZXZlbnQpO29uQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWRTZWxlY3Rpb25DaGFuZ2VkKT1cImVvTGlzdC5vblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVvR3JpZEZvY3VzQ2hhbmdlZCk9XCJlb0xpc3Qub25Gb2N1c0NoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAgW2VtcHR5U3RhdGVdPVwie2ljb246ICdpY19pbmJveC5zdmcnLCB0ZXh0OiBvRmlsdGVyLmFjdGl2ZSA/ICdlby5uby5maWx0ZXIucmVzdWx0JyA6ICdlby5pbmJveC5saXN0LmVtcHR5J31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8ZW8tcmVzZXQtZmlsdGVyIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjRmlsdGVyLnJlc2V0RmlsdGVyKCk7Y1NvcnQucmVzZXQoKTtyZWZyZXNoR3JpZCgpXCI+PC9lby1yZXNldC1maWx0ZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9lby1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1saXN0LWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBpbmJveCBkZXRhaWxzIC0tPlxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgPGVvLWluYm94LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hTZWxlY3Rpb25JZCwgb3V0OiBpbmJveERtc09iamVjdFNlbGVjdGlvbklkfVwiXG4gICAgICBbZW1wdHlTdGF0ZV09XCJlbXB0eVN0YXRlXCIgW3BsdWdpbnNdPVwiJ2luYm94LWRldGFpbHMtdGFiLmluYm94JyB8IHBsdWdpbnNcIj5cbiAgICA8L2VvLWluYm94LWRldGFpbHM+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gb2JqZWN0IGRldGFpbHMgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIj5cbiAgICA8ZW8tb2JqZWN0LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hEbXNPYmplY3RTZWxlY3Rpb25JZH1cIiBbY2FjaGVMYXlvdXRdPVwiJ2luYm94LnN0YXRlLm9iamVjdC1kZXRhaWxzJ1wiXG4gICAgW3BsdWdpbnNdPVwiJ29iamVjdC1kZXRhaWxzLXRhYi5pbmJveCcgfCBwbHVnaW5zXCI+XG4gICAgPC9lby1vYmplY3QtZGV0YWlscz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwveXZjLXNwbGl0LXZpZXc+XG4iXX0=
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUMsVUFBVSxFQUEyRixNQUFNLGNBQWMsQ0FBQztBQUNsSSxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBT25FLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlFQUF5RSxDQUFDO0FBRzVHLE9BQU8sRUFBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUS9HLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBc0M5QixZQUFtQixTQUEyQixFQUNyQyxTQUEyQixFQUMxQixZQUE4QixFQUMvQixZQUEwQixFQUN6QixjQUFxQyxFQUNyQyxLQUF3QixFQUN4QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixjQUFtQyxFQUNuQyxhQUE0QjtRQVRuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENB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V0FBVyxDQUFDLEVBQUUsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBclJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdKQ3ZCaEMsNnNJQXlFQTs7QURsRGEsbUJBQW1CO0lBTi9CLFlBQVksRUFBRTtHQU1GLG1CQUFtQixDQXVSL0I7OzJGQXZSWSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3dXQXdDTCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0VuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgSW5ib3hJdGVtLCBJbmJveFNlcnZpY2UsIEluYm94U3RhdGUsIExvY2FsU3RvcmFnZVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge0VtcHR5U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7U2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7Q3VzdG9tU29ydENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9jdXN0b20tc29ydC9jdXN0b20tc29ydC5jb21wb25lbnQnO1xuaW1wb3J0IHtJU2V0RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2ZpbHRlci9zZXRGaWx0ZXJzL3NldC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7SW5ib3hUeXBlcywgSW5ib3hUeXBlc0ZpbHRlcn0gZnJvbSAnLi9pbmJveC50eXBlcy5lbnVtJztcbmltcG9ydCB7UmV0dXJuVGFza0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9yZXR1cm4tdGFzay1hY3Rpb24vcmV0dXJuLXRhc2stYWN0aW9uJztcbmltcG9ydCB7QWN0aW9uU2VydmljZSwgR2xvYmFsU2hvcnRjdXRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yayc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWluYm94LXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luYm94LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5ib3gtc3RhdGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbmJveFN0YXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50IHtcblxuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIHNvcnRGaWVsZHM6IENvbERlZltdO1xuICBpbmJveEZpbHRlckZpZWxkczogSVNldEZpbHRlcltdID0gW107XG4gIHR5cGVGaWx0ZXJGaWVsZHM6IElTZXRGaWx0ZXJbXSA9IFtdO1xuICBpbmJveFNlbGVjdGlvbklkID0gJ2luYm94JztcbiAgaW5ib3hEbXNPYmplY3RTZWxlY3Rpb25JZCA9ICdpbmJveF9kbXMnO1xuICBpbmJveFNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZTtcbiAgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBpZE1hdGNoID0gdHJ1ZTtcbiAgZ3JpZERhdGE7XG4gIGRlZmF1bHRGaWx0ZXJQYXJhbXM6IGFueSA9IHt9O1xuICBlbXB0eVN0YXRlOiBFbXB0eVN0YXRlID0ge2ljb246ICdpY19uby1maWxlLnN2ZycsIHRleHQ6ICcnLCBjbGFzc05hbWU6ICcnfTtcbiAgaW5ib3hDaGFuZ2VkID0gZmFsc2U7XG4gIHN0b3JhZ2VLZXlMYXN0SXRlbUlEID0gJ2VvLmluYm94Lmxhc3RJdGVtSUQnO1xuXG4gIC8vIGRlZmluZSBhIEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50IGZvciB0aGUgaW5ib3ggc3RhdGVcbiAgc2hvcnRjdXRzOiBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCA9IHtcbiAgICBpZDogJ2VvLmluYm94LXN0YXRlJyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3gubGlzdC50aXRsZScpLFxuICAgIGxhYmVsS2V5OiAnZW8uaW5ib3gubGlzdC50aXRsZScsXG4gICAgZm9jdXNlZDogdHJ1ZSxcbiAgICBhY3Rpb25zOiBbe1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmFjdGlvbi50YXNrJyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmFjdGlvbi50YXNrJyxcbiAgICAgIHNob3J0Y3V0OiAnVCcsXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5zaG93QWN0aW9ucygpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XVxuICB9O1xuXG4gIEBWaWV3Q2hpbGQoJ2VvR3JpZCcpIGVvR3JpZDogR3JpZENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHVibGljIGluYm94U2VydmljZTogSW5ib3hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIGVtcHR5OiBFbXB0eVN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94Lmxpc3QudGl0bGUnKSk7XG4gICAgLy9zZWNvbmRhcnkgc2VsZWN0aW9uIGluc3RhbmNlIGZvciBpbmJveCBpdGVtc1xuICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5jcmVhdGVOZXcodGhpcy5pbmJveFNlbGVjdGlvbklkKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jcmVhdGVOZXcodGhpcy5pbmJveERtc09iamVjdFNlbGVjdGlvbklkKTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyUGFyYW1zID0ge2NvbnRleHQ6IHtkZWZhdWx0VmFsdWU6IHBhcmFtcy5pZH19O1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmluYm94U2VydmljZS5pbmJveFN0YXRlJFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogSW5ib3hTdGF0ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lb0dyaWQpIHtcbiAgICAgICAgICAvLyB0b2RvOiB0ZW1wb3JhcnkgZml4IHVudGlsIHN0YXR1cyBzZXJ2aWNlIHVwZGF0ZVxuICAgICAgICAgIC8vIHRoaXMuaW5ib3hDaGFuZ2VkID0gdGhpcy5lb0dyaWQuY29udGV4dENvdW50ICE9PSBzdGF0ZS50b3RhbG1lc3NhZ2VzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uQ291bnRDaGFuZ2VkKGV2dDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0ICYmIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSkge1xuICAgICAgaWYgKGV2dC5yb3dDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLmlkTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyUGFyYW1zLmNvbnRleHQuZGVmYXVsdFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbmJveFNlbGVjdGlvbi5kaXNhYmxlKCk7XG4gICAgICAgIHRoaXMuZW9HcmlkLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyUGFyYW1zLmNvbnRleHQuZGVmYXVsdFZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzUGVuZGluZ0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2soKTtcbiAgfVxuXG4gIHJlZnJlc2hHcmlkKCkge1xuICAgIHRoaXMuaW5ib3hDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5pbmJveFNlbGVjdGlvbi5kaXNhYmxlKGZhbHNlKTtcbiAgICB0aGlzLmluYm94U2VydmljZS5nZXRJdGVtcygpLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnJlZnJlc2hJbmJveFN0YXRlKCk7XG4gIH1cblxuICBpdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5vZGUuZGF0YVtJbmJveFR5cGVzRmlsdGVyW2l0ZW1dXTtcbiAgICBjb25zdCBhY2NlcHRlZEFuZFVuYWNjZXB0ZWRDb21iaW5lZCA9IHRoaXMuaW5ib3hGaWx0ZXJGaWVsZHMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSAnYWNjZXB0ZWRUYXNrcycpLnZhbHVlXG4gICAgICAmJiB0aGlzLmluYm94RmlsdGVyRmllbGRzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gJ3VuYWNjZXB0ZWRUYXNrcycpLnZhbHVlO1xuICAgIHN3aXRjaCAoSW5ib3hUeXBlc0ZpbHRlcltpdGVtXSkge1xuICAgICAgY2FzZSBJbmJveFR5cGVzRmlsdGVyLm92ZXJkdWU6XG4gICAgICAgIHJldHVybiBub2RlLmRhdGEuaXNPdmVyZHVlKCk7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIuYWJzZW50OlxuICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICAgIGNhc2UgSW5ib3hUeXBlc0ZpbHRlci5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgISFub2RlLmRhdGEuYWNjZXB0ZWQ7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIudW5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgIW5vZGUuZGF0YS5hY2NlcHRlZDtcbiAgICB9XG4gIH1cblxuICBmaWVsZEZpbHRlcnMoKSB7XG4gICAgdGhpcy50eXBlRmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlcykubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC4ke2l0ZW19YCksXG4gICAgICBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudHlwZSA9PT0gaXRlbSxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG5cbiAgICB0aGlzLmluYm94RmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlc0ZpbHRlcikubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC5maWx0ZXIuJHtpdGVtfWApLFxuICAgICAgZmlsdGVyOiAobm9kZSkgPT4gdGhpcy5pdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG4gIH1cblxuICByZXNldEZpbHRlcnMoKSB7XG4gICAgdGhpcy5maWVsZEZpbHRlcnMoKTtcbiAgfVxuXG4gIHVwZGF0ZUdyaWQoZGF0YTogSW5ib3hJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoZGF0YSA/IGRhdGEubGVuZ3RoIDogLTEsIHVuZGVmaW5lZCwgJ2ljX25vLWZpbGUuc3ZnJyk7XG5cbiAgICBpZiAodGhpcy5lb0dyaWQgJiYgdGhpcy5lb0dyaWQuaXNSZWFkeSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW9HcmlkLnVwZGF0ZVJvd0RhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNldEZpbHRlcnMoKTtcblxuICAgIGxldCBjb2xEZWZzOiBDb2xEZWZbXSA9IFt7XG4gICAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICAgIGZpZWxkOiAnX19jdXN0b20nLFxuICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmNlbGxSZW5kZXJlcixcbiAgICAgIGZpbHRlcjogZmFsc2VcbiAgICAgIC8vIGNlbGxSZW5kZXJlckZyYW1ld29yazogSW5ib3hSZW5kZXJlckNvbXBvbmVudFxuICAgIH1dO1xuXG4gICAgdGhpcy5zb3J0RmllbGRzID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZDogJ3JlY2VpdmVkJywgaGVhZGVyTmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3guc29ydC5kYXRlJyksIHNvcnQ6IG51bGwsXG4gICAgICAgIHZhbHVlR2V0dGVyOiAocCkgPT4gKHAuZGF0YVtwLmNvbERlZi5maWVsZF0gfHwgJycpLm1hdGNoKC9cXCtcXGRcXGQ6XFxkXFxkLykgPyBuZXcgRGF0ZShwLmRhdGFbcC5jb2xEZWYuZmllbGRdKS50b0lTT1N0cmluZygpIDogcC5kYXRhW3AuY29sRGVmLmZpZWxkXVxuICAgICAgfSxcbiAgICAgIHtmaWVsZDogJ3RpdGxlJywgaGVhZGVyTmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3guc29ydC50aXRsZScpLCBzb3J0OiBudWxsfSxcbiAgICAgIHtmaWVsZDogJ2Rlc2NyaXB0aW9uJywgaGVhZGVyTmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3guc29ydC5kZXNjcmlwdGlvbicpLCBzb3J0OiBudWxsfVxuICAgIF07XG5cbiAgICBsZXQgc29ydENvbERlZnMgPSBDdXN0b21Tb3J0Q29tcG9uZW50LnNvcnRDb2xEZWZzKHRoaXMuc29ydEZpZWxkcyk7XG5cbiAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgY29udGV4dDoge2NvdW50OiBkYXRhLmxlbmd0aH0sXG4gICAgICByb3dEYXRhOiBkYXRhLFxuICAgICAgY29sdW1uRGVmczogY29sRGVmcy5jb25jYXQoc29ydENvbERlZnMpLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIHJvd0hlaWdodDogODAsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnXG4gICAgfTtcbiAgfVxuXG4gIG9uRmlsdGVyT3ZlcmxheVRvZ2dsZShvcGVuOiBib29sZWFuKSB7XG4gICAgdGhpcy5lb0dyaWQuYXBpPy5zZXRHcmlkT3B0aW9uKCdzdXBwcmVzc0NlbGxGb2N1cycsIG9wZW4pO1xuICAgIGlmICghb3Blbikge1xuICAgICAgdGhpcy5lb0dyaWQuc2VsZWN0Um93KDApO1xuICAgIH1cbiAgfVxuXG4gIGNlbGxSZW5kZXJlcihwYXJhbXMpIHtcblxuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGlmIChPYmplY3Qua2V5cyhJbmJveFR5cGVzKS5pbmNsdWRlcyhwYXJhbXMuZGF0YS50eXBlKSkge1xuICAgICAgbGFiZWwgPSBwYXJhbXMuY29udGV4dC50cmFuc2xhdGUuaW5zdGFudChgZW8uaW5ib3guJHtwYXJhbXMuZGF0YS50eXBlfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IGBhc3NldHMvX2RlZmF1bHQvc3ZnL2ljXyR7SW5ib3hUeXBlc1twYXJhbXMuZGF0YS50eXBlXX0uc3ZnYDtcblxuICAgIGxldCBpY29uID0gcGFyYW1zLmNvbnRleHQuY3IucmVuZGVyKCdpY29uJywgcGFyYW1zLCB7dmFsdWU6IHt1cmwsIGxhYmVsfX0pO1xuICAgIGxldCBzaG9ydERhdGUgPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2RhdGVUaW1lJywgcGFyYW1zLCB7dmFsdWU6IHBhcmFtcy5kYXRhLnJlY2VpdmVkLCBwYXR0ZXJuOiAnZW9TaG9ydERhdGUnfSk7XG4gICAgbGV0IHNob3J0VGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEucmVjZWl2ZWQsIHBhdHRlcm46ICdlb1Nob3J0VGltZSd9KTtcbiAgICBsZXQgZHVldGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEuZHVldGltZX0pO1xuICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSBwYXJhbXMuZGF0YS5hY2NlcHRlZCA/ICd0aXRsZScgOiAndGl0bGUtYm9sZCc7XG5cbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0ke3BhcmFtcy5kYXRhLmZvbGRlciA/ICcgZm9sZGVyJyA6ICcnfVwiIHVuc2VsZWN0YWJsZT5cbiAgICAgICAgICAgICAgJHtpY29ufVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb250ZW50Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPScke3RpdGxlQ2xhc3N9Jz4ke3BhcmFtcy5kYXRhLnRpdGxlIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2Rlc2NyaXB0aW9uJz4ke3BhcmFtcy5kYXRhLmRlc2NyaXB0aW9uIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J25vdGVzJHtwYXJhbXMuZGF0YS5pc092ZXJkdWUoKSA/ICcgcGFzdER1ZScgOiAnJ30nPlxuICAgICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS5kdWV0aW1lID8gJzxzcGFuIGNsYXNzPVwicGVyaW9kXCI+JyArIGR1ZXRpbWUgKyAnPC9zcGFuPicgOiAnJ31cbiAgICAgICAgICAgICAgICAgICR7cGFyYW1zLmRhdGEuaXNkZXB1dHkgPyAnPHNwYW4+JyArIHBhcmFtcy5jb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5pdGVtLm5vdGUuYWJzZW5jZScpICsgJzwvc3Bhbj4nIDogJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+JHtzaG9ydERhdGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj4ke3Nob3J0VGltZX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2VcbiAgICAgIC5pbmJveEl0ZW1zR3JpZERhdGEkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IEluYm94SXRlbVtdKSA9PiB7XG5cbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmdyaWREYXRhKTtcbiAgICAgICAgdGhpcy5lb0dyaWQ/LmFwaS5yZWRyYXdSb3dzKCk7XG5cbiAgICAgICAgY29uc3QgbGFzdEluYm94SXRlbUlEID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQpO1xuICAgICAgICBpZiAobGFzdEluYm94SXRlbUlEICYmIHRoaXMuZ3JpZERhdGEuZmluZChpID0+IGkuaWQgPT09IGxhc3RJbmJveEl0ZW1JRCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmVvR3JpZC5zZWxlY3RSb3cobGFzdEluYm94SXRlbUlEKSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9MT0NLRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0SW5ib3hJdGVtSUQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5TGFzdEl0ZW1JRCk7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZmluZChpID0+IGkuaWQgPT09IGxhc3RJbmJveEl0ZW1JRCkuYWNjZXB0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmVvR3JpZC5hcGkucmVkcmF3Um93cygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9VTkxPQ0tFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmJveEl0ZW1JRCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlEKTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5maW5kKGkgPT4gaS5pZCA9PT0gbGFzdEluYm94SXRlbUlEKS5hY2NlcHRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVvR3JpZC5hcGkucmVkcmF3Um93cygpO1xuICAgICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHRoZSBvbkZpbmlzaCQgb2JzZXJ2YWJsZSBvZiB0aGUgYWN0aW9uU2VydmljZS5cbiAgICAgKiBXaGVuIHRoZSBvYnNlcnZhYmxlIGVtaXRzIGEgdmFsdWUsIHRoZSByZWZyZXNoR3JpZCBtZXRob2QgaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHRoaXMuYWN0aW9uU2VydmljZS5vbkZpbmlzaCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgLy8gQ2xlYXJzIGFueSBhY3Rpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoaXMgY29tcG9uZW50LlxuICAgIHRoaXMuYWN0aW9uU2VydmljZS5jbGVhckNvbXBvbmVudFNwZWNpZmljQWN0aW9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW5kIGRpc3BsYXlzIGNvbXBvbmVudC1zcGVjaWZpYyBhY3Rpb25zLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGFycmF5IG9mIGFjdGlvbnMsIHNldHMgdGhlbSBhcyBjb21wb25lbnQtc3BlY2lmaWMgYWN0aW9uc1xuICAgKiB1c2luZyB0aGUgYWN0aW9uU2VydmljZSwgYW5kIHRoZW4gZGlzcGxheXMgdGhlc2UgYWN0aW9ucyBvbiB0aGUgcGFnZS5cbiAgICovXG4gIHNob3dBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogbmV3IFJldHVyblRhc2tBY3Rpb25Db21wb25lbnQodGhpcy50cmFuc2xhdGUpLFxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNldENvbXBvbmVudFNwZWNpZmljQWN0aW9ucyhhY3Rpb25zKTtcbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMoW10sICdDT01QT05FTlRfU1BFQ0lGSUNfQUNUSU9OUycpO1xuICB9XG5cbn1cbiIsIjx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCInaW5ib3guc3RhdGUnXCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8IS0tIGxpc3QgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMzBcIj5cbiAgICA8ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbYXBwbHlTZWxlY3Rpb25dPVwie291dDogaW5ib3hTZWxlY3Rpb25JZH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cblxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfaW5ib3guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiIHRyYW5zbGF0ZT5lby5pbmJveC5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtuZ0NsYXNzXT1cIntpbmJveENoYW5nZWQ6IGluYm94Q2hhbmdlZH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNGaWx0ZXIucmVzZXRGaWx0ZXIoKTsgcmVmcmVzaEdyaWQoKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb0ZpbHRlciBjbGFzcz1cIm92ZXJsYXktZmlsdGVyXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIiBbaWNvblRpdGxlXT1cIidlby5saXN0LmZpbHRlcicgfCB0cmFuc2xhdGVcIiAob25Ub2dnbGUpPVwib25GaWx0ZXJPdmVybGF5VG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxlby1jdXN0b20tZmlsdGVyICNjRmlsdGVyIChjaGFuZ2UpPVwiY0ZpbHRlci51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWRTdWJqZWN0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGFjdGl2ZSk9XCJvRmlsdGVyLm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLmluYm94LmZpbHRlci50aXRsZScgfCB0cmFuc2xhdGVcIiBbZmlsdGVyUGFyYW1zXT1cImRlZmF1bHRGaWx0ZXJQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtpZF09XCInaW5ib3gudGV4dCdcIiBbbWF0Y2hGaWVsZHNdPVwiWyd0aXRsZScsJ2Rlc2NyaXB0aW9uJywnaWQnXVwiIFtlbmFibGVTYXZlXT1cInRydWVcIj48L2VvLXRleHQtZmlsdGVyPlxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBjbGFzcz1cInR5cGUtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInT1InXCIgW2lkXT1cIidpbmJveC50eXBlJ1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cInR5cGVGaWx0ZXJGaWVsZHNcIj48L2VvLXNldC1maWx0ZXI+XG4gICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIGNsYXNzPVwiaW5ib3gtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInQU5EJ1wiIFtpZF09XCInaW5ib3guc2V0J1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cImluYm94RmlsdGVyRmllbGRzXCI+PC9lby1zZXQtZmlsdGVyPlxuICAgICAgICAgICAgPC9lby1jdXN0b20tZmlsdGVyPlxuICAgICAgICAgIDwvZW8tb3ZlcmxheT5cblxuICAgICAgICAgIDxlby1vdmVybGF5ICNvU29ydCBjbGFzcz1cIm92ZXJsYXktc29ydFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NvcnQuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5saXN0LnNvcnQnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8ZW8tY3VzdG9tLXNvcnQgI2NTb3J0IFtpZF09XCInaW5ib3guc29ydCdcIiAoY2hhbmdlKT1cImNTb3J0LnVwZGF0ZUdyaWQoZW9MaXN0LmVvR3JpZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhY3RpdmUpPVwib1NvcnQub25BY3RpdmVDaGFuZ2VkKCRldmVudClcIiBbc29ydEZpZWxkc109XCJzb3J0RmllbGRzXCI+PC9lby1jdXN0b20tc29ydD5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhY3Rpb25zLWJ1dHRvblwiIChjbGljayk9XCJzaG93QWN0aW9ucygpXCIgW2ljb25UaXRsZV09XCInZW8uc2hvcnRjdXRzLmFjdGlvbi50YXNrJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG4gICAgICAgIDxlby1ncmlkICNlb0dyaWQgKm5nSWY9XCJncmlkT3B0aW9ucz8ucm93RGF0YVwiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInRydWVcIiBbc2VsZWN0Rmlyc3RdPVwic2VsZWN0Rmlyc3RcIiBbb3B0aW9uc109XCJ7ZmlsdGVyQWN0aXZlOiBvRmlsdGVyLmFjdGl2ZX1cIlxuICAgICAgICAgIChlb0dyaWRDb3VudENoYW5nZWQpPVwiZW9MaXN0Lm9uQ291bnRDaGFuZ2VkKCRldmVudCk7b25Db3VudENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVvR3JpZFNlbGVjdGlvbkNoYW5nZWQpPVwiZW9MaXN0Lm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZW9HcmlkRm9jdXNDaGFuZ2VkKT1cImVvTGlzdC5vbkZvY3VzQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgICAgPGVvLXRvdGFsLWNvdW50IFtncmlkQ291bnRdPVwiZW9MaXN0LmdyaWRDb3VudFwiIFtvdXRzaWRlR3JpZF09XCJmYWxzZVwiIGNsYXNzPVwiZmxleC1yb3dcIj48L2VvLXRvdGFsLWNvdW50PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5XCI+XG4gICAgICAgICAgICA8ZW8tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICBbZW1wdHlTdGF0ZV09XCJ7aWNvbjogJ2ljX2luYm94LnN2ZycsIHRleHQ6IG9GaWx0ZXIuYWN0aXZlID8gJ2VvLm5vLmZpbHRlci5yZXN1bHQnIDogJ2VvLmluYm94Lmxpc3QuZW1wdHknfVwiPjwvZW8tZXJyb3ItbWVzc2FnZT5cbiAgICAgICAgICAgIDxlby1yZXNldC1maWx0ZXIgW2lzRmlsdGVyQWN0aXZlXT1cIm9GaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNGaWx0ZXIucmVzZXRGaWx0ZXIoKTtjU29ydC5yZXNldCgpO3JlZnJlc2hHcmlkKClcIj48L2VvLXJlc2V0LWZpbHRlcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2VvLWdyaWQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLWxpc3QtY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8IS0tIGluYm94IGRldGFpbHMgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMzBcIj5cbiAgICA8ZW8taW5ib3gtZGV0YWlscyBbYXBwbHlTZWxlY3Rpb25dPVwie2luOiBpbmJveFNlbGVjdGlvbklkLCBvdXQ6IGluYm94RG1zT2JqZWN0U2VsZWN0aW9uSWR9XCJcbiAgICAgIFtlbXB0eVN0YXRlXT1cImVtcHR5U3RhdGVcIiBbcGx1Z2luc109XCInaW5ib3gtZGV0YWlscy10YWIuaW5ib3gnIHwgcGx1Z2luc1wiPlxuICAgIDwvZW8taW5ib3gtZGV0YWlscz5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBvYmplY3QgZGV0YWlscyAtLT5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0MFwiPlxuICAgIDxlby1vYmplY3QtZGV0YWlscyBbYXBwbHlTZWxlY3Rpb25dPVwie2luOiBpbmJveERtc09iamVjdFNlbGVjdGlvbklkfVwiIFtjYWNoZUxheW91dF09XCInaW5ib3guc3RhdGUub2JqZWN0LWRldGFpbHMnXCJcbiAgICBbcGx1Z2luc109XCInb2JqZWN0LWRldGFpbHMtdGFiLmluYm94JyB8IHBsdWdpbnNcIj5cbiAgICA8L2VvLW9iamVjdC1kZXRhaWxzPlxuICA8L25nLXRlbXBsYXRlPlxuPC95dmMtc3BsaXQtdmlldz5cbiJdfQ==
|
|
@@ -134,6 +134,12 @@ let NotificationsStateComponent = class NotificationsStateComponent {
|
|
|
134
134
|
rowHeight: 80
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
|
+
onFilterOverlayToggle(open) {
|
|
138
|
+
this.eoGrid.api?.setGridOption('suppressCellFocus', open);
|
|
139
|
+
if (!open) {
|
|
140
|
+
this.eoGrid.selectRow(0);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
137
143
|
cellRenderer(params) {
|
|
138
144
|
const icon = params.context.cr.render('icon', params, {
|
|
139
145
|
value: {
|
|
@@ -211,7 +217,7 @@ let NotificationsStateComponent = class NotificationsStateComponent {
|
|
|
211
217
|
this.selection.clear();
|
|
212
218
|
}
|
|
213
219
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", 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 }); }
|
|
214
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", 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;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" }] }); }
|
|
220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", 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\" (onToggle)=\"onFilterOverlayToggle($event)\">\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;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"], outputs: ["onToggle"] }, { 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" }] }); }
|
|
215
221
|
};
|
|
216
222
|
NotificationsStateComponent = __decorate([
|
|
217
223
|
UntilDestroy()
|
|
@@ -219,9 +225,9 @@ NotificationsStateComponent = __decorate([
|
|
|
219
225
|
export { NotificationsStateComponent };
|
|
220
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NotificationsStateComponent, decorators: [{
|
|
221
227
|
type: Component,
|
|
222
|
-
args: [{ selector: 'eo-notifications-state', 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;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"] }]
|
|
228
|
+
args: [{ selector: 'eo-notifications-state', 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\" (onToggle)=\"onFilterOverlayToggle($event)\">\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;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"] }]
|
|
223
229
|
}], ctorParameters: () => [{ type: i1.SelectionService }, { type: i2.TranslateService }, { type: i2.SystemService }, { type: i3.PendingChangesService }, { type: i4.EmptyStateService }, { type: i2.BackendService }, { type: i2.EventService }, { type: i2.DmsService }, { type: i5.PageTitleService }, { type: i2.UserService }], propDecorators: { eoGrid: [{
|
|
224
230
|
type: ViewChild,
|
|
225
231
|
args: ['eoGrid']
|
|
226
232
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWNsaWVudC9ub3RpZmljYXRpb25zLXN0YXRlL25vdGlmaWNhdGlvbnMtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvbm90aWZpY2F0aW9ucy1zdGF0ZS9ub3RpZmljYXRpb25zLXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUVrQixVQUFVLEVBQzJCLEtBQUssRUFDbEUsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFLMUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0VBQXNFLENBQUM7QUFDekcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkVBQTJFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXRHLElBQU0sMkJBQTJCLEdBQWpDLE1BQU0sMkJBQTJCO0lBYXRDLFlBQW1CLFNBQTJCLEVBQ3JDLFNBQTJCLEVBQzNCLE1BQXFCLEVBQ3BCLGNBQXFDLEVBQ3JDLEtBQXdCLEVBQ3hCLE9BQXVCLEVBQ3ZCLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ3RCLFlBQThCLEVBQy9CLFdBQXdCO1FBVGQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNw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QUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQW5OVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnS0MxQnhDLHE0SUE4RUE7O0FEcERhLDJCQUEyQjtJQU52QyxZQUFZLEVBQUU7R0FNRiwyQkFBMkIsQ0FvTnZDOzsyRkFwTlksMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHdCQUF3Qjs4VkFlYixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLCBEbXNPYmplY3QsXG4gIERtc1BhcmFtcywgRG1zU2VydmljZSwgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVc2VyU2VydmljZSwgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge0N1c3RvbVNvcnRDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvY3VzdG9tLXNvcnQvY3VzdG9tLXNvcnQuY29tcG9uZW50JztcbmltcG9ydCB7U2V0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2ZpbHRlci9zZXRGaWx0ZXJzL3NldC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7SVNldEZpbHRlcn0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9maWx0ZXIvc2V0RmlsdGVycy9zZXQtZmlsdGVycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtHcmlkQ29tcG9uZW50fSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0lOb3RpZmljYXRpb25TdGF0ZSwgSVJlc3VibWlzc2lvbiwgSVN1YnNjcmlwdGlvbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXN0YXRlLmludGVyZmFjZSc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW5vdGlmaWNhdGlvbnMtc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbnMtc3RhdGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50LCBPbkRlc3Ryb3kge1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgc29ydEZpZWxkczogQ29sRGVmW107XG4gIHR5cGVGaWx0ZXJGaWVsZHM6IElTZXRGaWx0ZXJbXTtcbiAgb2JqZWN0VHlwZUZpbHRlckZpZWxkczogSVNldEZpbHRlcltdO1xuICBzZWxlY3RlZEl0ZW1zOiBEbXNPYmplY3RbXTtcbiAgZ3JpZERhdGE7XG4gIGVtcHR5U3RhdGU6IEVtcHR5U3RhdGUgPSBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB0ZXh0RmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRtc1NlcnZpY2U6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldEJhc2VUaXRsZSh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5ub3RpZmljYXRpb25zLmxpc3QudGl0bGUnKSk7XG4gIH1cblxuICBoYXNQZW5kaW5nQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzaygpO1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9uRGF0YSgpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuZ2V0Tm90aWZpY2F0aW9ucygpXG4gICAgICAuc3Vic2NyaWJlKChbc3ViLCByZVN1Yl06IFtJU3Vic2NyaXB0aW9uW10sIElSZXN1Ym1pc3Npb25bXV0pID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IFsuLi5zdWIsIC4uLnJlU3ViXTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmdyaWREYXRhKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaEdyaWQoKSB7XG4gICAgdGhpcy5nZXROb3RpZmljYXRpb25EYXRhKCk7XG4gIH1cblxuICBwYXJzZURtc1BhcmFtcyhkYXRhKTogRG1zUGFyYW1zIHtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhLnRhcmdldCA/IHsgaWQ6IGRhdGEudGFyZ2V0LmlkLCB0eXBlOiBkYXRhLnRhcmdldC50eXBlIH0gOiBudWxsO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLnNlbGVjdGlvbi5nZXRGb2N1cygpO1xuICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlbW92ZU5vdGlmaWNhdGlvbnMoZm9jdXNlZC5pZCwgZm9jdXNlZC5tZXNzYWdldHlwZSlcbiAgICAgICAgLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfREVMRVRFRCwgZm9jdXNlZCkpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkFuZFJlc3VibWlzc2lvbnMoKXtcbiAgICBjb25zdCBmb2N1c2VkID0gdGhpcy5zZWxlY3Rpb24uZ2V0Rm9jdXMoKTtcbiAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdChmb2N1c2VkLnRhcmdldC5pZCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSkuc3Vic2NyaWJlKGRtc09iamVjdCA9PiB7XG4gICAgICAgIHRoaXMuZG1zU2VydmljZS5yZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChmb2N1c2VkLnRhcmdldC5pZCwgZG1zT2JqZWN0KS5waXBlKGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuZG1zU2VydmljZS5yZW1vdmVTdWJzY3JpcHRpb25CeUlkKGRtc09iamVjdC5zdWJzY3JpcHRpb25zWzBdLmlkLCBkbXNPYmplY3QpLnBpcGUoY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpKS5zdWJzY3JpYmUoKVxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVELCBmb2N1c2VkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLnR5cGVGaWx0ZXJzKHRoaXMuZ3JpZERhdGEpO1xuICB9XG5cbiAgdHlwZUZpbHRlcihkYXRhKSB7XG4gICAgY29uc3QgdW5pcXVlQnlUeXBlID0gU2V0RmlsdGVyQ29tcG9uZW50LnVuaXFCeShkYXRhLCAndGFyZ2V0LnR5cGUnLCB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpKTtcbiAgICB0aGlzLnR5cGVGaWx0ZXJGaWVsZHMgPSB1bmlxdWVCeVR5cGUubWFwKCh0eXBlKSA9PiBPYmplY3QuYXNzaWduKHtcbiAgICAgIGxhYmVsOiB0eXBlLmxhYmVsLFxuICAgICAgdmFsdWU6IHRydWUsXG4gICAgICBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudGFyZ2V0LnR5cGUgPT09IHR5cGUucW5hbWUsXG4gICAgICBpZDogdHlwZS5xbmFtZVxuICAgIH0pKS5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICB9XG5cbiAgb2JqZWN0VHlwZUZpbHRlcihkYXRhKSB7XG4gICAgY29uc3QgdW5pcXVlQnlNZXNzYWdlVHlwZTogSU5vdGlmaWNhdGlvblN0YXRlW10gPSBTZXRGaWx0ZXJDb21wb25lbnQudW5pcUJ5UHJvcGVydHkoZGF0YSwgJ21lc3NhZ2V0eXBlJyk7XG4gICAgdGhpcy5vYmplY3RUeXBlRmlsdGVyRmllbGRzID0gdW5pcXVlQnlNZXNzYWdlVHlwZS5tYXAodHlwZSA9PiBPYmplY3QuYXNzaWduKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5ub3RpZmljYXRpb25zLmZpbHRlci4ke3R5cGUubWVzc2FnZXR5cGUudG9Mb3dlckNhc2UoKX0ubGFiZWxgKSxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgZmlsdGVyOiAobm9kZSkgPT4gbm9kZS5kYXRhLm1lc3NhZ2V0eXBlID09PSB0eXBlLm1lc3NhZ2V0eXBlLFxuICAgICAgaWQ6IHR5cGUubWVzc2FnZXR5cGVcbiAgICB9KSkuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcbiAgfVxuXG4gIHR5cGVGaWx0ZXJzKGRhdGEpIHtcbiAgICB0aGlzLnR5cGVGaWx0ZXIoZGF0YSk7XG4gICAgdGhpcy5vYmplY3RUeXBlRmlsdGVyKGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlR3JpZChkYXRhOiBJTm90aWZpY2F0aW9uU3RhdGUgfCBhbnkpIHtcbiAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoZGF0YSA/IGRhdGEubGVuZ3RoIDogLTEpO1xuXG4gICAgaWYgKHRoaXMuZW9HcmlkICYmIHRoaXMuZW9HcmlkLmlzUmVhZHkpIHtcbiAgICAgIHRoaXMuZW9HcmlkLnVwZGF0ZVJvd0RhdGEoZGF0YSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldEZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2V0RmlsdGVycygpO1xuXG4gICAgY29uc3QgY29sRGVmczogQ29sRGVmW10gPSBbXG4gICAgICB7XG4gICAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgICBmaWVsZDogJ19fY3VzdG9tJyxcbiAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmNlbGxSZW5kZXJlcixcbiAgICAgICAgZmlsdGVyOiBmYWxzZVxuICAgICAgfV07XG5cbiAgICB0aGlzLnRleHRGaWx0ZXJQYXJhbXMgPSB7IGNvbnRleHQ6IHsgZGVmYXVsdFZhbHVlOiAnJyB9IH07XG4gICAgdGhpcy5zb3J0RmllbGRzID0gW1xuICAgICAgeyBmaWVsZDogJ2R1ZScsIGhlYWRlck5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm5vdGlmaWNhdGlvbnMuc29ydC5kdWUnKSwgc29ydDogbnVsbCB9LFxuICAgICAgeyBmaWVsZDogJ2luZm8nLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5ub3RpZmljYXRpb25zLnNvcnQudGl0bGUnKSwgc29ydDogbnVsbCB9LFxuICAgICAgeyBmaWVsZDogJ21lc3NhZ2V0eXBlJywgaGVhZGVyTmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ubm90aWZpY2F0aW9ucy5zb3J0LnR5cGUnKSwgc29ydDogbnVsbCB9XG4gICAgXTtcblxuICAgIGNvbnN0IHNvcnRDb2xEZWZzID0gQ3VzdG9tU29ydENvbXBvbmVudC5zb3J0Q29sRGVmcyh0aGlzLnNvcnRGaWVsZHMpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb250ZXh0OiB7IGNvdW50OiBkYXRhLmxlbmd0aCB9LFxuICAgICAgcm93RGF0YTogZGF0YSxcbiAgICAgIGNvbHVtbkRlZnM6IGNvbERlZnMuY29uY2F0KHNvcnRDb2xEZWZzKSxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICByb3dIZWlnaHQ6IDgwXG4gICAgfTtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcihwYXJhbXMpIHtcblxuICAgIGNvbnN0IGljb24gPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2ljb24nLCBwYXJhbXMsIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHVybDogYGFzc2V0cy9fZGVmYXVsdC9zdmcvaWNfJHtwYXJhbXMuZGF0YS5tZXNzYWdldHlwZS50b0xvd2VyQ2FzZSgpfS5zdmdgLFxuICAgICAgICBsYWJlbDogcGFyYW1zLmNvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoYGVvLm5vdGlmaWNhdGlvbnMuZmlsdGVyLiR7cGFyYW1zLmRhdGEubWVzc2FnZXR5cGUudG9Mb3dlckNhc2UoKX0ubGFiZWxgKVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9sZGVyID0gcGFyYW1zLmRhdGEudGFyZ2V0LmlzZm9sZGVyID8gJ2ZvbGRlcicgOiAnJztcbiAgICBjb25zdCBjcmVhdGVkVGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHsgdmFsdWU6IHBhcmFtcy5kYXRhLmR1ZSB9KTtcblxuICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImxpc3QtaXRlbSAke2ZvbGRlcn1cIiBtZXNzYWdldHlwZT1cIiR7cGFyYW1zLmRhdGEubWVzc2FnZXR5cGV9XCIgdW5zZWxlY3RhYmxlPlxuICAgICAgICAgICAgICAke2ljb259XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtwYXJhbXMuZGF0YS5pbmZvIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS50YXJnZXQuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2Rlc2NyaXB0aW9uIGRhdGUnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmlvZFwiPiR7Y3JlYXRlZFRpbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IHJlbW92ZWRFbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoZW50cnksIGkpID0+IHtcbiAgICAgICAgICBpZiAoZW50cnkudGFyZ2V0LmlkID09PSBldmVudC5kYXRhLmlkKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkuc3Vic2NyaWJlZGFjdGlvbnMpIHsvLyBpZiBzdWJzY3JpcHRpb24gZW50cnlcbiAgICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnN1YnNjcmlwdGlvbnMuZmluZChzID0+IHMuaWQgPT09IGVudHJ5LmlkKSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZWRFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEucmVzdWJtaXNzaW9ucy5maW5kKHMgPT4gcy5pZCA9PT0gZW50cnkuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5kYXRhLnJlc3VibWlzc2lvbnMuY29uY2F0KGV2ZW50LmRhdGEuc3Vic2NyaXB0aW9ucykuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuZ3JpZERhdGEuZmluZChnRCA9PiBnRC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgaXRlbS50YXJnZXQgPSB7XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBldmVudC5kYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5pZCxcbiAgICAgICAgICAgICAgaXNmb2xkZXI6IGV2ZW50LmRhdGEuaXNmb2xkZXIsXG4gICAgICAgICAgICAgIHRpdGxlOiBldmVudC5kYXRhLnRpdGxlLFxuICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGVOYW1lXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSB0aGlzLmdyaWREYXRhLmZpbHRlcihlbnRyeSA9PiAhcmVtb3ZlZEVudHJpZXMuZmluZChyRW50cnkgPT4gckVudHJ5LmlkID09PSBlbnRyeS5pZCkpO1xuICAgICAgICBpZiAodGhpcy5lb0dyaWQgJiYgdGhpcy5lb0dyaWQuaXNSZWFkeSkge1xuICAgICAgICAgIHRoaXMuZW9HcmlkLnVwZGF0ZVJvd0RhdGEodGhpcy5ncmlkRGF0YSk7XG4gICAgICAgICAgdGhpcy5lb0dyaWQuc2VsZWN0Um93KHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSwgW3RoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX0RFTEVURUQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZW9HcmlkKSB7XG4gICAgICAgICAgdGhpcy5lb0dyaWQudXBkYXRlUm93cyh0aGlzLmJhY2tlbmQudXBkYXRlKFtyZXMuZGF0YV0sIFt7IGlkOiByZXMuZGF0YS5pZCB9XSkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgfVxufVxuIiwiPHl2Yy1zcGxpdC12aWV3IFtsYXlvdXRTZXR0aW5nc0lEXT1cIidub3RpZmljYXRpb24uc3RhdGUnXCI+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMjVcIj48ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbYXBwbHlTZWxlY3Rpb25dPVwie31cIlxuICAgICAgW3BhcnNlRG1zUGFyYW1zXT1cInBhcnNlRG1zUGFyYW1zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyXCI+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19pbmJveC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCIgdHJhbnNsYXRlPmVvLm5vdGlmaWNhdGlvbnMubGlzdC50aXRsZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlXCIgdHJhbnNsYXRlPmVvLm5vdGlmaWNhdGlvbnMubGlzdC5zdWJ0aXRsZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcmVmcmVzaC1idXR0b25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNGaWx0ZXIucmVzZXRGaWx0ZXIoKTtjU29ydC5yZXNldCgpO3JlZnJlc2hHcmlkKClcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuXG4gICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJvdmVybGF5LWZpbHRlclwiIFtpY29uVGl0bGVdPVwiJ2VvLmxpc3QuZmlsdGVyJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPGVvLWN1c3RvbS1maWx0ZXIgI2NGaWx0ZXIgKGNoYW5nZSk9XCJjRmlsdGVyLnVwZGF0ZUdyaWQoZW9MaXN0LmVvR3JpZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8ZW8tdGV4dC1maWx0ZXIgW3RpdGxlXT1cIidlby5ub3RpZmljYXRpb25zLmZpbHRlci50aXRsZScgfCB0cmFuc2xhdGVcIiBbbWF0Y2hGaWVsZHNdPVwiWydpbmZvJ11cIlxuICAgICAgICAgICAgICAgIFtmaWx0ZXJQYXJhbXNdPVwidGV4dEZpbHRlclBhcmFtc1wiIFtpZF09XCInbm90aWZpY2F0aW9ucy50ZXh0J1wiPjwvZW8tdGV4dC1maWx0ZXI+XG5cbiAgICAgICAgICAgICAgPGVvLXNldC1maWx0ZXIgW29wZXJhdG9yXT1cIidPUidcIiBbdGl0bGVdPVwiJ2VvLm5vdGlmaWNhdGlvbnMuZmlsdGVyLnNlY3Rpb24udGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvYmplY3RUeXBlRmlsdGVyRmllbGRzXCIgW2lkXT1cIidub3RpZmljYXRpb25zLm9iamVjdC50eXBlJ1wiPjwvZW8tc2V0LWZpbHRlcj5cblxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBbb3BlcmF0b3JdPVwiJ09SJ1wiIFt0aXRsZV09XCInZW8ubm90aWZpY2F0aW9ucy5maWx0ZXIuc2VjdGlvbi5vYmplY3R0eXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidHlwZUZpbHRlckZpZWxkc1wiIFtpZF09XCInbm90aWZpY2F0aW9ucy50eXBlJ1wiPjwvZW8tc2V0LWZpbHRlcj5cbiAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb1NvcnQgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc29ydC5zdmcnXCIgY2xhc3M9XCJvdmVybGF5LXNvcnRcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ubGlzdC5zb3J0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPGVvLWN1c3RvbS1zb3J0ICNjU29ydCBbaWRdPVwiJ25vdGlmaWNhdGlvbnMuc29ydCdcIiAoY2hhbmdlKT1cImNTb3J0LnVwZGF0ZUdyaWQoZW9MaXN0LmVvR3JpZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhY3RpdmUpPVwib1NvcnQub25BY3RpdmVDaGFuZ2VkKCRldmVudClcIiBbc29ydEZpZWxkc109XCJzb3J0RmllbGRzXCI+PC9lby1jdXN0b20tc29ydD5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhY3Rpb25zLWJ1dHRvblwiIChjbGljayk9XCJlb0xpc3Quc2hvd0FjdGlvbnMoKVwiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QuYWN0aW9ucy50aXRsZScgfCB0cmFuc2xhdGVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG4gICAgICAgIDxlby1ncmlkICNlb0dyaWQgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCIgKm5nSWY9XCJncmlkT3B0aW9uc1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInRydWVcIiAoZW9HcmlkQ291bnRDaGFuZ2VkKT1cImVvTGlzdC5vbkNvdW50Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZW9HcmlkQ29udGV4dE1lbnVDbGljayk9XCJlb0xpc3Qub25Db250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAoZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCk9XCJlb0xpc3Qub25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWREb3VibGVDbGljayk9XCJlb0xpc3Qub25Eb3VibGVDbGljaygkZXZlbnQpXCIgKGVvR3JpZEZvY3VzQ2hhbmdlZCk9XCJlb0xpc3Qub25Gb2N1c0NoYW5nZWQoJGV2ZW50KVwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgICAgPGVvLXRvdGFsLWNvdW50IFtncmlkQ291bnRdPVwiZW9MaXN0LmdyaWRDb3VudFwiIFtvdXRzaWRlR3JpZF09XCJmYWxzZVwiIGNsYXNzPVwiZmxleC1yb3dcIj48L2VvLXRvdGFsLWNvdW50PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5XCI+XG4gICAgICAgICAgICA8ZW8tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICBbZW1wdHlTdGF0ZV09XCJ7aWNvbjogJ2ljX2luYm94LnN2ZycsIHRleHQ6IG9GaWx0ZXIuYWN0aXZlID8gJ2VvLm5vLmZpbHRlci5yZXN1bHQnIDogJ2VvLm5vdGlmaWNhdGlvbnMubGlzdC5lbXB0eSd9XCI+PC9lby1lcnJvci1tZXNzYWdlPlxuICAgICAgICAgICAgPGVvLXJlc2V0LWZpbHRlciBbaXNGaWx0ZXJBY3RpdmVdPVwib0ZpbHRlci5hY3RpdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY0ZpbHRlci5yZXNldEZpbHRlcigpO2NTb3J0LnJlc2V0KCk7cmVmcmVzaEdyaWQoKVwiPjwvZW8tcmVzZXQtZmlsdGVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZW8tZ3JpZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZW8tbGlzdC1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI3NVwiPlxuICAgIDxlby1vYmplY3QtZGV0YWlscyBbYXBwbHlTZWxlY3Rpb25dPVwie31cIiBbcGFyc2VEbXNQYXJhbXNdPVwicGFyc2VEbXNQYXJhbXNcIlxuICAgICAgW2NhY2hlTGF5b3V0XT1cIidub3RpZmljYXRpb24uc3RhdGUub2JqZWN0LWRldGFpbHMnXCIgW2VtcHR5U3RhdGVdPVwiZW1wdHlTdGF0ZVwiIFtwbHVnaW5zXT1cIidvYmplY3QtZGV0YWlscy10YWIubm90aWZpY2F0aW9ucycgfCBwbHVnaW5zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cImdyaWREYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBzZWNvbmRhcnlcIiAoY2xpY2spPVwicmVtb3ZlKClcIiB0cmFuc2xhdGU+ZW8ubm90aWZpY2F0aW9ucy5kZXRhaWxzLml0ZW0uZ29uZS5yZW1vdmU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBzZWNvbmRhcnlcIiAoY2xpY2spPVwicmVtb3ZlU3Vic2NyaXB0aW9uQW5kUmVzdWJtaXNzaW9ucygpXCJcbiAgICAgICAgICB0cmFuc2xhdGU+ZW8ubm90aWZpY2F0aW9ucy5kZXRhaWxzLml0ZW0uZ29uZS5yZW1vdmUuc3Vic2NyaXB0aW9uczwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1vYmplY3QtZGV0YWlscz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC95dmMtc3BsaXQtdmlldz5cbiJdfQ==
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWNsaWVudC9ub3RpZmljYXRpb25zLXN0YXRlL25vdGlmaWNhdGlvbnMtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvbm90aWZpY2F0aW9ucy1zdGF0ZS9ub3RpZmljYXRpb25zLXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUVrQixVQUFVLEVBQzJCLEtBQUssRUFDbEUsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFLMUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0VBQXNFLENBQUM7QUFDekcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkVBQTJFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXRHLElBQU0sMkJBQTJCLEdBQWpDLE1BQU0sMkJBQTJCO0lBYXRDLFlBQW1CLFNBQTJCLEVBQ3JDLFNBQTJCLEVBQzNCLE1BQXFCLEVBQ3BCLGNBQXFDLEVBQ3JDLEtBQXdCLEVBQ3hCLE9BQXVCLEVBQ3ZCLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ3RCLFlBQThCLEVBQy9CLFdBQXdCO1FBVGQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNw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RUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBMU5VLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGdLQzFCeEMsazdJQThFQTs7QURwRGEsMkJBQTJCO0lBTnZDLFlBQVksRUFBRTtHQU1GLDJCQUEyQixDQTJOdkM7OzJGQTNOWSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0Usd0JBQXdCOzhWQWViLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29sRGVmLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsIERtc09iamVjdCxcbiAgRG1zUGFyYW1zLCBEbXNTZXJ2aWNlLCBFbmFpb0V2ZW50LFxuICBFdmVudFNlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBVdGlsc1xufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge0VtcHR5U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7U2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7Q3VzdG9tU29ydENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9jdXN0b20tc29ydC9jdXN0b20tc29ydC5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXRGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvZmlsdGVyL3NldEZpbHRlcnMvc2V0LWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtJU2V0RmlsdGVyfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2ZpbHRlci9zZXRGaWx0ZXJzL3NldC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7SU5vdGlmaWNhdGlvblN0YXRlLCBJUmVzdWJtaXNzaW9uLCBJU3Vic2NyaXB0aW9ufSBmcm9tICcuL25vdGlmaWNhdGlvbnMtc3RhdGUuaW50ZXJmYWNlJztcbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tbm90aWZpY2F0aW9ucy1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1zdGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgUGVuZGluZ0NoYW5nZXNDb21wb25lbnQsIE9uRGVzdHJveSB7XG5cbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBzb3J0RmllbGRzOiBDb2xEZWZbXTtcbiAgdHlwZUZpbHRlckZpZWxkczogSVNldEZpbHRlcltdO1xuICBvYmplY3RUeXBlRmlsdGVyRmllbGRzOiBJU2V0RmlsdGVyW107XG4gIHNlbGVjdGVkSXRlbXM6IERtc09iamVjdFtdO1xuICBncmlkRGF0YTtcbiAgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IEVtcHR5U3RhdGVTZXJ2aWNlLmRlZmF1bHRFbXB0eVN0YXRlKCk7XG4gIHRleHRGaWx0ZXJQYXJhbXM6IGFueSA9IHt9O1xuXG4gIEBWaWV3Q2hpbGQoJ2VvR3JpZCcpIGVvR3JpZDogR3JpZENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXB0eTogRW1wdHlTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm5vdGlmaWNhdGlvbnMubGlzdC50aXRsZScpKTtcbiAgfVxuXG4gIGhhc1BlbmRpbmdDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKCk7XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25EYXRhKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgIC5nZXROb3RpZmljYXRpb25zKClcbiAgICAgIC5zdWJzY3JpYmUoKFtzdWIsIHJlU3ViXTogW0lTdWJzY3JpcHRpb25bXSwgSVJlc3VibWlzc2lvbltdXSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gWy4uLnN1YiwgLi4ucmVTdWJdO1xuICAgICAgICB0aGlzLmdyaWREYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKHRoaXMuZ3JpZERhdGEpO1xuICAgICAgfSk7XG4gIH1cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICB0aGlzLmdldE5vdGlmaWNhdGlvbkRhdGEoKTtcbiAgfVxuXG4gIHBhcnNlRG1zUGFyYW1zKGRhdGEpOiBEbXNQYXJhbXMge1xuICAgIHJldHVybiBkYXRhICYmIGRhdGEudGFyZ2V0ID8geyBpZDogZGF0YS50YXJnZXQuaWQsIHR5cGU6IGRhdGEudGFyZ2V0LnR5cGUgfSA6IG51bGw7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgY29uc3QgZm9jdXNlZCA9IHRoaXMuc2VsZWN0aW9uLmdldEZvY3VzKCk7XG4gICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UucmVtb3ZlTm90aWZpY2F0aW9ucyhmb2N1c2VkLmlkLCBmb2N1c2VkLm1lc3NhZ2V0eXBlKVxuICAgICAgICAuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9ERUxFVEVELCBmb2N1c2VkKSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlU3Vic2NyaXB0aW9uQW5kUmVzdWJtaXNzaW9ucygpe1xuICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLnNlbGVjdGlvbi5nZXRGb2N1cygpO1xuICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGZvY3VzZWQudGFyZ2V0LmlkLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKS5zdWJzY3JpYmUoZG1zT2JqZWN0ID0+IHtcbiAgICAgICAgdGhpcy5kbXNTZXJ2aWNlLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGZvY3VzZWQudGFyZ2V0LmlkLCBkbXNPYmplY3QpLnBpcGUoY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5kbXNTZXJ2aWNlLnJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoZG1zT2JqZWN0LnN1YnNjcmlwdGlvbnNbMF0uaWQsIGRtc09iamVjdCkucGlwZShjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSkpLnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX0RFTEVURUQsIGZvY3VzZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMudHlwZUZpbHRlcnModGhpcy5ncmlkRGF0YSk7XG4gIH1cblxuICB0eXBlRmlsdGVyKGRhdGEpIHtcbiAgICBjb25zdCB1bmlxdWVCeVR5cGUgPSBTZXRGaWx0ZXJDb21wb25lbnQudW5pcUJ5KGRhdGEsICd0YXJnZXQudHlwZScsIHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGVzKCkpO1xuICAgIHRoaXMudHlwZUZpbHRlckZpZWxkcyA9IHVuaXF1ZUJ5VHlwZS5tYXAoKHR5cGUpID0+IE9iamVjdC5hc3NpZ24oe1xuICAgICAgbGFiZWw6IHR5cGUubGFiZWwsXG4gICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIGZpbHRlcjogKG5vZGUpID0+IG5vZGUuZGF0YS50YXJnZXQudHlwZSA9PT0gdHlwZS5xbmFtZSxcbiAgICAgIGlkOiB0eXBlLnFuYW1lXG4gICAgfSkpLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XG4gIH1cblxuICBvYmplY3RUeXBlRmlsdGVyKGRhdGEpIHtcbiAgICBjb25zdCB1bmlxdWVCeU1lc3NhZ2VUeXBlOiBJTm90aWZpY2F0aW9uU3RhdGVbXSA9IFNldEZpbHRlckNvbXBvbmVudC51bmlxQnlQcm9wZXJ0eShkYXRhLCAnbWVzc2FnZXR5cGUnKTtcbiAgICB0aGlzLm9iamVjdFR5cGVGaWx0ZXJGaWVsZHMgPSB1bmlxdWVCeU1lc3NhZ2VUeXBlLm1hcCh0eXBlID0+IE9iamVjdC5hc3NpZ24oe1xuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYGVvLm5vdGlmaWNhdGlvbnMuZmlsdGVyLiR7dHlwZS5tZXNzYWdldHlwZS50b0xvd2VyQ2FzZSgpfS5sYWJlbGApLFxuICAgICAgdmFsdWU6IHRydWUsXG4gICAgICBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEubWVzc2FnZXR5cGUgPT09IHR5cGUubWVzc2FnZXR5cGUsXG4gICAgICBpZDogdHlwZS5tZXNzYWdldHlwZVxuICAgIH0pKS5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICB9XG5cbiAgdHlwZUZpbHRlcnMoZGF0YSkge1xuICAgIHRoaXMudHlwZUZpbHRlcihkYXRhKTtcbiAgICB0aGlzLm9iamVjdFR5cGVGaWx0ZXIoZGF0YSk7XG4gIH1cblxuICB1cGRhdGVHcmlkKGRhdGE6IElOb3RpZmljYXRpb25TdGF0ZSB8IGFueSkge1xuICAgIHRoaXMuZW1wdHlTdGF0ZSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZShkYXRhID8gZGF0YS5sZW5ndGggOiAtMSk7XG5cbiAgICBpZiAodGhpcy5lb0dyaWQgJiYgdGhpcy5lb0dyaWQuaXNSZWFkeSkge1xuICAgICAgdGhpcy5lb0dyaWQudXBkYXRlUm93RGF0YShkYXRhKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc2V0RmlsdGVycygpO1xuICAgIH1cblxuICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG5cbiAgICBjb25zdCBjb2xEZWZzOiBDb2xEZWZbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyTmFtZTogJycsXG4gICAgICAgIGZpZWxkOiAnX19jdXN0b20nLFxuICAgICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY2VsbFJlbmRlcmVyLFxuICAgICAgICBmaWx0ZXI6IGZhbHNlXG4gICAgICB9XTtcblxuICAgIHRoaXMudGV4dEZpbHRlclBhcmFtcyA9IHsgY29udGV4dDogeyBkZWZhdWx0VmFsdWU6ICcnIH0gfTtcbiAgICB0aGlzLnNvcnRGaWVsZHMgPSBbXG4gICAgICB7IGZpZWxkOiAnZHVlJywgaGVhZGVyTmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ubm90aWZpY2F0aW9ucy5zb3J0LmR1ZScpLCBzb3J0OiBudWxsIH0sXG4gICAgICB7IGZpZWxkOiAnaW5mbycsIGhlYWRlck5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm5vdGlmaWNhdGlvbnMuc29ydC50aXRsZScpLCBzb3J0OiBudWxsIH0sXG4gICAgICB7IGZpZWxkOiAnbWVzc2FnZXR5cGUnLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5ub3RpZmljYXRpb25zLnNvcnQudHlwZScpLCBzb3J0OiBudWxsIH1cbiAgICBdO1xuXG4gICAgY29uc3Qgc29ydENvbERlZnMgPSBDdXN0b21Tb3J0Q29tcG9uZW50LnNvcnRDb2xEZWZzKHRoaXMuc29ydEZpZWxkcyk7XG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgIGNvbnRleHQ6IHsgY291bnQ6IGRhdGEubGVuZ3RoIH0sXG4gICAgICByb3dEYXRhOiBkYXRhLFxuICAgICAgY29sdW1uRGVmczogY29sRGVmcy5jb25jYXQoc29ydENvbERlZnMpLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIHJvd0hlaWdodDogODBcbiAgICB9O1xuICB9XG5cbiAgb25GaWx0ZXJPdmVybGF5VG9nZ2xlKG9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVvR3JpZC5hcGk/LnNldEdyaWRPcHRpb24oJ3N1cHByZXNzQ2VsbEZvY3VzJywgb3Blbik7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aGlzLmVvR3JpZC5zZWxlY3RSb3coMCk7XG4gICAgfVxuICB9XG5cbiAgY2VsbFJlbmRlcmVyKHBhcmFtcykge1xuXG4gICAgY29uc3QgaWNvbiA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignaWNvbicsIHBhcmFtcywge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdXJsOiBgYXNzZXRzL19kZWZhdWx0L3N2Zy9pY18ke3BhcmFtcy5kYXRhLm1lc3NhZ2V0eXBlLnRvTG93ZXJDYXNlKCl9LnN2Z2AsXG4gICAgICAgIGxhYmVsOiBwYXJhbXMuY29udGV4dC50cmFuc2xhdGUuaW5zdGFudChgZW8ubm90aWZpY2F0aW9ucy5maWx0ZXIuJHtwYXJhbXMuZGF0YS5tZXNzYWdldHlwZS50b0xvd2VyQ2FzZSgpfS5sYWJlbGApXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb2xkZXIgPSBwYXJhbXMuZGF0YS50YXJnZXQuaXNmb2xkZXIgPyAnZm9sZGVyJyA6ICcnO1xuICAgIGNvbnN0IGNyZWF0ZWRUaW1lID0gcGFyYW1zLmNvbnRleHQuY3IucmVuZGVyKCdkYXRlVGltZScsIHBhcmFtcywgeyB2YWx1ZTogcGFyYW1zLmRhdGEuZHVlIH0pO1xuXG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtICR7Zm9sZGVyfVwiIG1lc3NhZ2V0eXBlPVwiJHtwYXJhbXMuZGF0YS5tZXNzYWdldHlwZX1cIiB1bnNlbGVjdGFibGU+XG4gICAgICAgICAgICAgICR7aWNvbn1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3BhcmFtcy5kYXRhLmluZm8gfHwgJyd9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAke3BhcmFtcy5kYXRhLnRhcmdldC5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZGVzY3JpcHRpb24gZGF0ZSc+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kXCI+JHtjcmVhdGVkVGltZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5gO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBsZXQgcmVtb3ZlZEVudHJpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5mb3JFYWNoKChlbnRyeSwgaSkgPT4ge1xuICAgICAgICAgIGlmIChlbnRyeS50YXJnZXQuaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5zdWJzY3JpYmVkYWN0aW9ucykgey8vIGlmIHN1YnNjcmlwdGlvbiBlbnRyeVxuICAgICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3Vic2NyaXB0aW9ucy5maW5kKHMgPT4gcy5pZCA9PT0gZW50cnkuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YS5yZXN1Ym1pc3Npb25zLmZpbmQocyA9PiBzLmlkID09PSBlbnRyeS5pZCkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVkRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGV2ZW50LmRhdGEucmVzdWJtaXNzaW9ucy5jb25jYXQoZXZlbnQuZGF0YS5zdWJzY3JpcHRpb25zKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5ncmlkRGF0YS5maW5kKGdEID0+IGdELmlkID09PSBpdGVtLmlkKTtcbiAgICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICBpdGVtLnRhcmdldCA9IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGV2ZW50LmRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgIGlkOiBldmVudC5kYXRhLmlkLFxuICAgICAgICAgICAgICBpc2ZvbGRlcjogZXZlbnQuZGF0YS5pc2ZvbGRlcixcbiAgICAgICAgICAgICAgdGl0bGU6IGV2ZW50LmRhdGEudGl0bGUsXG4gICAgICAgICAgICAgIHR5cGU6IGV2ZW50LmRhdGEudHlwZU5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHRoaXMuZ3JpZERhdGEuZmlsdGVyKGVudHJ5ID0+ICFyZW1vdmVkRW50cmllcy5maW5kKHJFbnRyeSA9PiByRW50cnkuaWQgPT09IGVudHJ5LmlkKSk7XG4gICAgICAgIGlmICh0aGlzLmVvR3JpZCAmJiB0aGlzLmVvR3JpZC5pc1JlYWR5KSB7XG4gICAgICAgICAgdGhpcy5lb0dyaWQudXBkYXRlUm93RGF0YSh0aGlzLmdyaWREYXRhKTtcbiAgICAgICAgICB0aGlzLmVvR3JpZC5zZWxlY3RSb3codGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxLCBbdGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfREVMRVRFRClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAodGhpcy5lb0dyaWQpIHtcbiAgICAgICAgICB0aGlzLmVvR3JpZC51cGRhdGVSb3dzKHRoaXMuYmFja2VuZC51cGRhdGUoW3Jlcy5kYXRhXSwgW3sgaWQ6IHJlcy5kYXRhLmlkIH1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICB9XG59XG4iLCI8eXZjLXNwbGl0LXZpZXcgW2xheW91dFNldHRpbmdzSURdPVwiJ25vdGlmaWNhdGlvbi5zdGF0ZSdcIj5cbiAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCIyNVwiPjxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFthcHBseVNlbGVjdGlvbl09XCJ7fVwiXG4gICAgICBbcGFyc2VEbXNQYXJhbXNdPVwicGFyc2VEbXNQYXJhbXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2luYm94LnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIiB0cmFuc2xhdGU+ZW8ubm90aWZpY2F0aW9ucy5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1zdWItdGl0bGVcIiB0cmFuc2xhdGU+ZW8ubm90aWZpY2F0aW9ucy5saXN0LnN1YnRpdGxlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY0ZpbHRlci5yZXNldEZpbHRlcigpO2NTb3J0LnJlc2V0KCk7cmVmcmVzaEdyaWQoKVwiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb0ZpbHRlciBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maWx0ZXIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXktZmlsdGVyXCIgW2ljb25UaXRsZV09XCInZW8ubGlzdC5maWx0ZXInIHwgdHJhbnNsYXRlXCIgKG9uVG9nZ2xlKT1cIm9uRmlsdGVyT3ZlcmxheVRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZW8tY3VzdG9tLWZpbHRlciAjY0ZpbHRlciAoY2hhbmdlKT1cImNGaWx0ZXIudXBkYXRlR3JpZChlb0xpc3QuZW9HcmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGFjdGl2ZSk9XCJvRmlsdGVyLm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLm5vdGlmaWNhdGlvbnMuZmlsdGVyLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFttYXRjaEZpZWxkc109XCJbJ2luZm8nXVwiXG4gICAgICAgICAgICAgICAgW2ZpbHRlclBhcmFtc109XCJ0ZXh0RmlsdGVyUGFyYW1zXCIgW2lkXT1cIidub3RpZmljYXRpb25zLnRleHQnXCI+PC9lby10ZXh0LWZpbHRlcj5cblxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBbb3BlcmF0b3JdPVwiJ09SJ1wiIFt0aXRsZV09XCInZW8ubm90aWZpY2F0aW9ucy5maWx0ZXIuc2VjdGlvbi50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9iamVjdFR5cGVGaWx0ZXJGaWVsZHNcIiBbaWRdPVwiJ25vdGlmaWNhdGlvbnMub2JqZWN0LnR5cGUnXCI+PC9lby1zZXQtZmlsdGVyPlxuXG4gICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIFtvcGVyYXRvcl09XCInT1InXCIgW3RpdGxlXT1cIidlby5ub3RpZmljYXRpb25zLmZpbHRlci5zZWN0aW9uLm9iamVjdHR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ0eXBlRmlsdGVyRmllbGRzXCIgW2lkXT1cIidub3RpZmljYXRpb25zLnR5cGUnXCI+PC9lby1zZXQtZmlsdGVyPlxuICAgICAgICAgICAgPC9lby1jdXN0b20tZmlsdGVyPlxuICAgICAgICAgIDwvZW8tb3ZlcmxheT5cblxuICAgICAgICAgIDxlby1vdmVybGF5ICNvU29ydCBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zb3J0LnN2ZydcIiBjbGFzcz1cIm92ZXJsYXktc29ydFwiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5saXN0LnNvcnQnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8ZW8tY3VzdG9tLXNvcnQgI2NTb3J0IFtpZF09XCInbm90aWZpY2F0aW9ucy5zb3J0J1wiIChjaGFuZ2UpPVwiY1NvcnQudXBkYXRlR3JpZChlb0xpc3QuZW9HcmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGFjdGl2ZSk9XCJvU29ydC5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiIFtzb3J0RmllbGRzXT1cInNvcnRGaWVsZHNcIj48L2VvLWN1c3RvbS1zb3J0PlxuICAgICAgICAgIDwvZW8tb3ZlcmxheT5cblxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGFjdGlvbnMtYnV0dG9uXCIgKGNsaWNrKT1cImVvTGlzdC5zaG93QWN0aW9ucygpXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX21vcmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cbiAgICAgICAgPGVvLWdyaWQgI2VvR3JpZCBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiAqbmdJZj1cImdyaWRPcHRpb25zXCIgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dGb290ZXJdPVwidHJ1ZVwiIChlb0dyaWRDb3VudENoYW5nZWQpPVwiZW9MaXN0Lm9uQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWRDb250ZXh0TWVudUNsaWNrKT1cImVvTGlzdC5vbkNvbnRleHRNZW51KCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWRTZWxlY3Rpb25DaGFuZ2VkKT1cImVvTGlzdC5vblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVvR3JpZERvdWJsZUNsaWNrKT1cImVvTGlzdC5vbkRvdWJsZUNsaWNrKCRldmVudClcIiAoZW9HcmlkRm9jdXNDaGFuZ2VkKT1cImVvTGlzdC5vbkZvY3VzQ2hhbmdlZCgkZXZlbnQpXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZW8tdG90YWwtY291bnQgW2dyaWRDb3VudF09XCJlb0xpc3QuZ3JpZENvdW50XCIgW291dHNpZGVHcmlkXT1cImZhbHNlXCIgY2xhc3M9XCJmbGV4LXJvd1wiPjwvZW8tdG90YWwtY291bnQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgICAgIDxlby1lcnJvci1tZXNzYWdlXG4gICAgICAgICAgICAgIFtlbXB0eVN0YXRlXT1cIntpY29uOiAnaWNfaW5ib3guc3ZnJywgdGV4dDogb0ZpbHRlci5hY3RpdmUgPyAnZW8ubm8uZmlsdGVyLnJlc3VsdCcgOiAnZW8ubm90aWZpY2F0aW9ucy5saXN0LmVtcHR5J31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8ZW8tcmVzZXQtZmlsdGVyIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjRmlsdGVyLnJlc2V0RmlsdGVyKCk7Y1NvcnQucmVzZXQoKTtyZWZyZXNoR3JpZCgpXCI+PC9lby1yZXNldC1maWx0ZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9lby1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1saXN0LWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjc1XCI+XG4gICAgPGVvLW9iamVjdC1kZXRhaWxzIFthcHBseVNlbGVjdGlvbl09XCJ7fVwiIFtwYXJzZURtc1BhcmFtc109XCJwYXJzZURtc1BhcmFtc1wiXG4gICAgICBbY2FjaGVMYXlvdXRdPVwiJ25vdGlmaWNhdGlvbi5zdGF0ZS5vYmplY3QtZGV0YWlscydcIiBbZW1wdHlTdGF0ZV09XCJlbXB0eVN0YXRlXCIgW3BsdWdpbnNdPVwiJ29iamVjdC1kZXRhaWxzLXRhYi5ub3RpZmljYXRpb25zJyB8IHBsdWdpbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZ3JpZERhdGE/Lmxlbmd0aFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIHNlY29uZGFyeVwiIChjbGljayk9XCJyZW1vdmUoKVwiIHRyYW5zbGF0ZT5lby5ub3RpZmljYXRpb25zLmRldGFpbHMuaXRlbS5nb25lLnJlbW92ZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIHNlY29uZGFyeVwiIChjbGljayk9XCJyZW1vdmVTdWJzY3JpcHRpb25BbmRSZXN1Ym1pc3Npb25zKClcIlxuICAgICAgICAgIHRyYW5zbGF0ZT5lby5ub3RpZmljYXRpb25zLmRldGFpbHMuaXRlbS5nb25lLnJlbW92ZS5zdWJzY3JpcHRpb25zPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLW9iamVjdC1kZXRhaWxzPlxuICA8L25nLXRlbXBsYXRlPlxuXG48L3l2Yy1zcGxpdC12aWV3PlxuIl19
|