@fundamental-ngx/platform 0.52.2-rc.0 → 0.52.2-rc.1
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/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +28 -9
- package/fesm2022/fundamental-ngx-platform-table.mjs +27 -8
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-p13-dialog/columns/columns.component.d.ts +6 -4
|
@@ -3,7 +3,7 @@ import { BehaviorSubject, Subscription, combineLatest } from 'rxjs';
|
|
|
3
3
|
import { debounceTime } from 'rxjs/operators';
|
|
4
4
|
import { DialogRef } from '@fundamental-ngx/core/dialog';
|
|
5
5
|
import { CdkScrollable } from '@angular/cdk/overlay';
|
|
6
|
-
import { AsyncPipe } from '@angular/common';
|
|
6
|
+
import { AsyncPipe, CommonModule } from '@angular/common';
|
|
7
7
|
import { FormsModule } from '@angular/forms';
|
|
8
8
|
import { InitialFocusDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';
|
|
9
9
|
import { BarElementDirective, BarLeftDirective, BarRightDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';
|
|
@@ -20,6 +20,7 @@ import { RESETTABLE_TOKEN, ResetButtonComponent } from '../../reset-button/reset
|
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
import * as i1 from "@fundamental-ngx/core/dialog";
|
|
22
22
|
import * as i2 from "@angular/forms";
|
|
23
|
+
import * as i3 from "@angular/common";
|
|
23
24
|
class SelectableColumn {
|
|
24
25
|
constructor(
|
|
25
26
|
/** Selected */
|
|
@@ -140,24 +141,41 @@ export class P13ColumnsDialogComponent {
|
|
|
140
141
|
this._calculateMovementButtonsState();
|
|
141
142
|
}
|
|
142
143
|
/** @hidden */
|
|
143
|
-
_moveActiveToTop() {
|
|
144
|
+
_moveActiveToTop(event) {
|
|
145
|
+
event.stopPropagation();
|
|
146
|
+
event.preventDefault();
|
|
144
147
|
this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), 0);
|
|
145
148
|
}
|
|
146
149
|
/** @hidden */
|
|
147
|
-
_moveActiveToBottom() {
|
|
150
|
+
_moveActiveToBottom(event) {
|
|
151
|
+
event.stopPropagation();
|
|
152
|
+
event.preventDefault();
|
|
148
153
|
this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), this._filteredColumns.length - 1);
|
|
149
154
|
}
|
|
150
155
|
/** @hidden */
|
|
151
|
-
_moveActiveUp() {
|
|
156
|
+
_moveActiveUp(event) {
|
|
157
|
+
event.stopPropagation();
|
|
158
|
+
event.preventDefault();
|
|
152
159
|
const activeColumnIndex = this._getActiveColumnIndexInFilteredList();
|
|
153
160
|
this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex - 1);
|
|
161
|
+
// keep the focus back to the move up button as it gets lost on click
|
|
162
|
+
setTimeout(() => {
|
|
163
|
+
const moveUpBtn = event.target;
|
|
164
|
+
moveUpBtn.focus();
|
|
165
|
+
}, 0);
|
|
154
166
|
}
|
|
155
167
|
/** @hidden */
|
|
156
|
-
_moveActiveDown() {
|
|
168
|
+
_moveActiveDown(event) {
|
|
169
|
+
event.stopPropagation();
|
|
170
|
+
event.preventDefault();
|
|
157
171
|
const activeColumnIndex = this._getActiveColumnIndexInFilteredList();
|
|
158
172
|
this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex + 1);
|
|
159
173
|
}
|
|
160
174
|
/** @hidden */
|
|
175
|
+
_isReorderColumnButtonShowable(item) {
|
|
176
|
+
return item.active && item.selected;
|
|
177
|
+
}
|
|
178
|
+
/** @hidden */
|
|
161
179
|
_filterByColumnKy(index, item) {
|
|
162
180
|
return item?.column.key;
|
|
163
181
|
}
|
|
@@ -260,7 +278,7 @@ export class P13ColumnsDialogComponent {
|
|
|
260
278
|
this._moveDownDisabled = activeIndex < 0 || activeIndex >= this._filteredColumns.length - 1;
|
|
261
279
|
}
|
|
262
280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: P13ColumnsDialogComponent, deps: [{ token: i1.DialogRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: P13ColumnsDialogComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }], ngImport: i0, template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n <!-- Active Button Movement -->\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom()\"\n ></button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: P13ColumnsDialogComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }], ngImport: i0, template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n\n <!-- Active Button Movement -->\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop($event)\"\n (keydown.enter)=\"_moveActiveToTop($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp($event)\"\n (keydown.enter)=\"_moveActiveUp($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown($event)\"\n (keydown.enter)=\"_moveActiveDown($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom($event)\"\n (keydown.enter)=\"_moveActiveToBottom($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
264
282
|
}
|
|
265
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: P13ColumnsDialogComponent, decorators: [{
|
|
266
284
|
type: Component,
|
|
@@ -290,7 +308,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
290
308
|
ButtonBarComponent,
|
|
291
309
|
AsyncPipe,
|
|
292
310
|
FdTranslatePipe,
|
|
293
|
-
InitialFocusDirective
|
|
294
|
-
|
|
311
|
+
InitialFocusDirective,
|
|
312
|
+
CommonModule
|
|
313
|
+
], template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n\n <!-- Active Button Movement -->\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop($event)\"\n (keydown.enter)=\"_moveActiveToTop($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp($event)\"\n (keydown.enter)=\"_moveActiveUp($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown($event)\"\n (keydown.enter)=\"_moveActiveDown($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom($event)\"\n (keydown.enter)=\"_moveActiveToBottom($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"] }]
|
|
295
314
|
}], ctorParameters: () => [{ type: i1.DialogRef }, { type: i0.ChangeDetectorRef }] });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcDEzLWRpYWxvZy9jb2x1bW5zL2NvbHVtbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvY29sdW1ucy9jb2x1bW5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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QUFTLHlDQUNULGVBQWUsb0RBQ2YscUJBQXFCOzsyRkFHaEIseUJBQXlCO2tCQXBDckMsU0FBUztvQ0FHUyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVywyQkFBMkIsRUFBRSxDQUFDLG1CQUNqRSx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLHFCQUFxQjtxQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1Db21wb25lbnQsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCwgVG9vbGJhckl0ZW1EaXJlY3RpdmUsIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdG9vbGJhcic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBSRVNFVFRBQkxFX1RPS0VOLCBSZXNldEJ1dHRvbkNvbXBvbmVudCwgUmVzZXR0YWJsZSB9IGZyb20gJy4uLy4uL3Jlc2V0LWJ1dHRvbi9yZXNldC1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dUYWJsZUNvbHVtbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbn1cblxudHlwZSBWaXNpYmxlQ29sdW1uVHlwZSA9IHN0cmluZzsgLy8gQ29sdW1uS2V5XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0RpYWxvZ0RhdGEgZXh0ZW5kcyBUYWJsZURpYWxvZ0NvbW1vbkRhdGEge1xuICAgIGF2YWlsYWJsZUNvbHVtbnM6IERpYWxvZ1RhYmxlQ29sdW1uW107XG4gICAgdmlzaWJsZUNvbHVtbnM6IFZpc2libGVDb2x1bW5UeXBlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0RpYWxvZ1Jlc3VsdERhdGEge1xuICAgIHZpc2libGVDb2x1bW5zOiBWaXNpYmxlQ29sdW1uVHlwZVtdO1xufVxuXG5jbGFzcyBTZWxlY3RhYmxlQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIFNlbGVjdGVkICovXG4gICAgICAgIHB1YmxpYyBzZWxlY3RlZDogYm9vbGVhbixcbiAgICAgICAgLyoqIEFjdGl2ZSAqL1xuICAgICAgICBwdWJsaWMgYWN0aXZlOiBib29sZWFuLFxuICAgICAgICAvKiogVGFibGUgQ29sdW1uIGl0IGJlbG9uZ3MgdG8gKi9cbiAgICAgICAgcHVibGljIGNvbHVtbjogRGlhbG9nVGFibGVDb2x1bW5cbiAgICApIHt9XG59XG5cbmNvbnN0IElOSVRJQUxfU0VBUkNIX1RFWFQgPSAnJztcbmNvbnN0IElOSVRJQUxfU0hPV19BTExfSVRFTVMgPSB0cnVlO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2NvbHVtbnMuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSRVNFVFRBQkxFX1RPS0VOLCB1c2VFeGlzdGluZzogUDEzQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgICAgIFJlc2V0QnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJJdGVtRGlyZWN0aXZlLFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBMaXN0VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgSW5pdGlhbEZvY3VzRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQMTNDb2x1bW5zRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbiByZXNldCBjb21tYW5kIGlzIGF2YWlsYWJsZSAqL1xuICAgIHJlYWRvbmx5IGlzUmVzZXRBdmFpbGFibGUkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBUYWJsZSBjb2x1bW5zIGF2YWlsYWJsZSBmb3IgZ3JvdXBpbmcgKi9cbiAgICByZWFkb25seSBhdmFpbGFibGVDb2x1bW5zOiBEaWFsb2dUYWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKiogQWxsIGF2YWlsYWJsZSBjb2x1bW5zIGZvciBpbnRlcmFjdGluZyAqL1xuICAgIF9zZWxlY3RhYmxlQ29sdW1uczogU2VsZWN0YWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKiogZmlsdGVyZWQgY29sdW1ucyB0aGF0IGFyZSByZW5kZXJlZCBpbiB0aGUgbGlzdCAqL1xuICAgIF9maWx0ZXJlZENvbHVtbnM6IFNlbGVjdGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIFNlYXJjaCBRdWVyeSBzdWJqZWN0ICovXG4gICAgX3NlYXJjaFF1ZXJ5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihJTklUSUFMX1NFQVJDSF9URVhUKTtcbiAgICAvKiogU2hvdyBBbGwgZmxhZyBzdWJqZWN0ICovXG4gICAgX3Nob3dBbGxJdGVtc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KElOSVRJQUxfU0hPV19BTExfSVRFTVMpO1xuXG4gICAgLyoqIFNlbGVjdGVkIGNvbHVtbnMgY291bnQgKi9cbiAgICBfc2VsZWN0ZWRDb2x1bW5zQ291bnQgPSAwO1xuXG4gICAgLyoqIEZsYWcgdG8gdHJhY2sgZGlzYWJsZWQgc3RhdGUgZm9yIG1vdmUtZG93biBtb3ZlLXVwIGJ1dHRvbnMgKi9cbiAgICBfbW92ZVVwRGlzYWJsZWQgPSB0cnVlO1xuICAgIC8qKiBGbGFnIHRvIHRyYWNrIGRpc2FibGVkIHN0YXRlIGZvciBtb3ZlLWRvd24gbW92ZS11cCBidXR0b25zICovXG4gICAgX21vdmVEb3duRGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2hvd25BbGxJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2VsZWN0QWxsRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5faXNTaG93bkFsbEl0ZW1zIHx8IHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPENvbHVtbnNEaWFsb2dEYXRhPixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHsgYXZhaWxhYmxlQ29sdW1ucywgdmlzaWJsZUNvbHVtbnMgfSA9IHRoaXMuZGlhbG9nUmVmLmRhdGE7XG5cbiAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zID0gYXZhaWxhYmxlQ29sdW1ucz8ubWFwKCh7IGxhYmVsLCBrZXkgfSkgPT4gKHsgbGFiZWwsIGtleSB9KSkgfHwgW107XG5cbiAgICAgICAgdGhpcy5faW5pdGlhdGVDb2x1bW5zKHZpc2libGVDb2x1bW5zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0ZpbHRlck9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlQ29sdW1ucyh0aGlzLmF2YWlsYWJsZUNvbHVtbnMubWFwKChjKSA9PiBjLmtleSkpO1xuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlIGRpYWxvZyAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpcm0gY2hhbmdlcyBhbmQgY2xvc2UgZGlhbG9nICovXG4gICAgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1uc0Zyb21TZWxlY3RlZENvbHVtbnModGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IENvbHVtbnNEaWFsb2dSZXN1bHREYXRhID0geyB2aXNpYmxlQ29sdW1ucyB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZVNlbGVjdEFsbChzZWxlY3RBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiAoY29sdW1uLnNlbGVjdGVkID0gc2VsZWN0QWxsKSk7XG4gICAgICAgIHRoaXMuX29uVG9nZ2xlQ29sdW1uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ub2dnbGVDb2x1bW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvdW50U2VsZWN0ZWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBsZXQgcmVzZXR0YWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDb2x1bW5zQ291bnQgIT09IHRoaXMuYXZhaWxhYmxlQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIEluaXRpYWxseSBhbGwgY29sdW1ucyBhcmUgc2VsZWN0ZWQuIElmIG5vdCwgcmVzZXQgc2hvdWxkIGJlIGFjdGl2ZVxuICAgICAgICAgICAgcmVzZXR0YWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBhbGwgYXJlIHNlbGVjdGVkLCBjaGVjayBmb3IgY29sdW1ucyBvcmRlciB0byBtYXRjaCB0aGUgaW5pdGlhbCBvbmVcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmF2YWlsYWJsZUNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zW2luZGV4XS5jb2x1bW4ua2V5ICE9PSB0aGlzLmF2YWlsYWJsZUNvbHVtbnNbaW5kZXhdLmtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXNldHRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNSZXNldEF2YWlsYWJsZSQuc2V0KHJlc2V0dGFibGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlYXJjaElucHV0Q2hhbmdlKHsgdGV4dCB9OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeVN1YmplY3QubmV4dCh0ZXh0IHx8ICcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTaG93QWxsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG93QWxsSXRlbXMgPSB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QubmV4dCghc2hvd0FsbEl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRBY3RpdmVDb2x1bW4oY29sdW1uOiBTZWxlY3RhYmxlQ29sdW1uIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucy5tYXAoKF9jb2x1bW4pID0+IHtcbiAgICAgICAgICAgIF9jb2x1bW4uYWN0aXZlID0gX2NvbHVtbiA9PT0gY29sdW1uO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVUb1RvcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleCh0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCksIDApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChcbiAgICAgICAgICAgIHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKSxcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVDb2x1bW5JbmRleCA9IHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKTtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChhY3RpdmVDb2x1bW5JbmRleCwgYWN0aXZlQ29sdW1uSW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tb3ZlQWN0aXZlRG93bigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlQ29sdW1uSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoYWN0aXZlQ29sdW1uSW5kZXgsIGFjdGl2ZUNvbHVtbkluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyQnlDb2x1bW5LeShpbmRleDogbnVtYmVyLCBpdGVtOiBTZWxlY3RhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmNvbHVtbi5rZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB2aXNpYmxlQ29sdW1uS2V5cyBrZXlzIG9mIGNvbHVtbnMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGFzIHNlbGVjdGVkLlxuICAgICAqIEFsc28sIHRoZWlyIG9yZGVyIG1hdHRlcnM6IGl0IHdpbGwgYmUgdXNlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2luaXRpYXRlQ29sdW1ucyh2aXNpYmxlQ29sdW1uS2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gbmV3IE1hcCh2aXNpYmxlQ29sdW1uS2V5cy5tYXAoKGtleSwgaW5kZXgpID0+IFtrZXksIGluZGV4XSkpO1xuICAgICAgICB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucyA9IHRoaXMuYXZhaWxhYmxlQ29sdW1uc1xuICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgIC8vIHNvcnRpbmcgY29sdW1ucyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG9yZGVyIG9mIHZpc2libGUgY29sdW1uc1xuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhSW5kZXggPSB2aXNpYmxlQ29sdW1uSW5kZXhNYXAuZ2V0KGEua2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBiSW5kZXggPSB2aXNpYmxlQ29sdW1uSW5kZXhNYXAuZ2V0KGIua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoYUluZGV4ID09PSB1bmRlZmluZWQgfHwgYkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlc2VydmluZyBpbml0aWFsIG9yZGVyIG9mIG5vdCBzZWxlY3RlZCBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhSW5kZXggLSBiSW5kZXg7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAoY29sdW1uLCBpbmRleDogbnVtYmVyKTogU2VsZWN0YWJsZUNvbHVtbiA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB2aXNpYmxlQ29sdW1uS2V5cy5pbmNsdWRlcyhjb2x1bW4ua2V5KSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpbmRleCA9PT0gMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIC8vIGtlZXAgY291bnQgb2Ygc2VsZWN0ZWRcbiAgICAgICAgdGhpcy5fY291bnRTZWxlY3RlZENvbHVtbnMoKTtcblxuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG5cbiAgICAgICAgLy8gcmVzZXQgZmlsdGVyIHNldHRpbmdzIHNldHRpbmdzXG4gICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5U3ViamVjdC5uZXh0KElOSVRJQUxfU0VBUkNIX1RFWFQpO1xuICAgICAgICB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0Lm5leHQoSU5JVElBTF9TSE9XX0FMTF9JVEVNUyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0ZpbHRlck9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2hvd0FsbEl0ZW1zU3ViamVjdCwgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0XSlcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzaG93QWxsLCBzZWFyY2hRdWVyeV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2x1bW4ubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hRdWVyeS50b0xvY2FsZUxvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gc2hvd0FsbCB8fCBpdGVtLnNlbGVjdGVkKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUZpbHRlcmVkQ29sdW1uc0xpc3QoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VGaWx0ZXJlZENvbHVtbnNMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmlzaWJsZUNvbHVtbnNGcm9tU2VsZWN0ZWRDb2x1bW5zKGNvbHVtbnMgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucyk6IFZpc2libGVDb2x1bW5UeXBlW10ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLm1hcCgoeyBjb2x1bW4gfSk6IFZpc2libGVDb2x1bW5UeXBlID0+IGNvbHVtbi5rZXkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0QWN0aXZlQ29sdW1uSW5kZXhJbkZpbHRlcmVkTGlzdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2x1bW5zLmZpbmRJbmRleCgoeyBhY3RpdmUgfSkgPT4gYWN0aXZlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW92ZWRJdGVtLCByZXBsYWNlZEl0ZW0gfSA9IHRoaXMuX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleCh0aGlzLl9maWx0ZXJlZENvbHVtbnMsIGZyb20sIHRvKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIG5lZWQgdG8gcmVmbGVjdCBhbmFsb2dpY2FsIG1vdmVtZW50IGluIHRoZSBvcmlnaW5hbCBsaXN0XG4gICAgICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgb3JpZ2luYWwgbGlzdCBvcmRlclxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluU2VsZWN0YWJsZUxpc3QobW92ZWRJdGVtLCByZXBsYWNlZEl0ZW0pO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb3ZlIGNvbHVtbiBpbiBzZWxlY3RhYmxlIGxpc3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW92ZUNvbHVtbkluU2VsZWN0YWJsZUxpc3QoaXRlbVRvTW92ZTogU2VsZWN0YWJsZUNvbHVtbiwgdGFyZ2V0SXRlbTogU2VsZWN0YWJsZUNvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnM7XG4gICAgICAgIHRoaXMuX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleChsaXN0LCBsaXN0LmluZGV4T2YoaXRlbVRvTW92ZSksIGxpc3QuaW5kZXhPZih0YXJnZXRJdGVtKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vdmUgZWxlbWVudCBpbiB0aGUgbGlzdFxuICAgICAqIEByZXR1cm4gbW92ZWQgaXRlbSBhbmQgcmVwbGFjZWQgaXRlbS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlRWxlbWVudEluVGhlTGlzdEJ5SW5kZXg8VD4oXG4gICAgICAgIGxpc3Q6IFRbXSxcbiAgICAgICAgZnJvbUluZGV4OiBudW1iZXIsXG4gICAgICAgIHRvSW5kZXg6IG51bWJlclxuICAgICk6IHsgbW92ZWRJdGVtOiBUOyByZXBsYWNlZEl0ZW06IFQgfSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBsaXN0Lmxlbmd0aDtcblxuICAgICAgICBmcm9tSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChmcm9tSW5kZXgsIDApLCBsaXN0TGVuZ3RoIC0gMSk7XG4gICAgICAgIHRvSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heCh0b0luZGV4LCAwKSwgbGlzdExlbmd0aCAtIDEpO1xuXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkSXRlbSA9IGxpc3RbdG9JbmRleF07XG4gICAgICAgIGNvbnN0IG1vdmVkSXRlbSA9IGxpc3Quc3BsaWNlKGZyb21JbmRleCwgMSlbMF07XG5cbiAgICAgICAgbGlzdC5zcGxpY2UodG9JbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgICByZXR1cm4geyBtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY291bnRTZWxlY3RlZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ29sdW1uc0NvdW50ID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMuZmlsdGVyKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVVcERpc2FibGVkID0gYWN0aXZlSW5kZXggPCAxO1xuICAgICAgICB0aGlzLl9tb3ZlRG93bkRpc2FibGVkID0gYWN0aXZlSW5kZXggPCAwIHx8IGFjdGl2ZUluZGV4ID49IHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggLSAxO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgY2xhc3M9XCJmZHAtdGFibGUtcDEzLWNvbHVtbnMtZGlhbG9nXCI+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj48L2ZkcC10YWJsZS1yZXNldC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZC10b29sYmFyPlxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ1NlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cIihfc2VhcmNoUXVlcnlTdWJqZWN0IHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfc2VhcmNoSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICA8IS0tIFNob3cgU2VsZWN0ZWQvQWxsIC0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIl90b2dnbGVTaG93QWxsKClcIj5cbiAgICAgICAgICAgICAgICBAaWYgKChfc2hvd0FsbEl0ZW1zU3ViamVjdCB8IGFzeW5jKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nc1Nob3dTZWxlY3RlZCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nU2hvd0FsbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLSBBY3RpdmUgQnV0dG9uIE1vdmVtZW50IC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImNvbGxhcHNlLWdyb3VwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Ub3BCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVRvVG9wQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX21vdmVBY3RpdmVUb1RvcCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LXVwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVXBCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVVwQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX21vdmVBY3RpdmVVcCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZURvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZURvd25CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZURvd25CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZURvd24oKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwiZXhwYW5kLWdyb3VwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVEb3duRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVUb0JvdHRvbUJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Cb3R0b21CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVRvQm90dG9tKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgIDx1bCBmZC1saXN0IFtzZWxlY3Rpb25dPVwidHJ1ZVwiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIl9zZXRBY3RpdmVDb2x1bW4obnVsbClcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJfc2VsZWN0ZWRDb2x1bW5zQ291bnQgPT09IF9zZWxlY3RhYmxlQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRDb2x1bW5zQ291bnQgPT09IF9zZWxlY3RhYmxlQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX3NlbGVjdEFsbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ1NlbGVjdEFsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbHVtbnNDb3VudDogX3NlbGVjdGVkQ29sdW1uc0NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlQ29sdW1uc0NvdW50OiBfc2VsZWN0YWJsZUNvbHVtbnMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIF9maWx0ZXJlZENvbHVtbnM7IHRyYWNrIF9maWx0ZXJCeUNvbHVtbkt5KCRpbmRleCwgaXRlbSkpIHtcbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zZWxlY3QtaXRlbS0tc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNlbGVjdC1pdGVtLS1hY3RpdmVdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwiX3NldEFjdGl2ZUNvbHVtbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJpdGVtLnNlbGVjdGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwiX29uVG9nZ2xlQ29sdW1uKClcIj48L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jb2x1bW4ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dDb25maXJtYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcDEzLWRpYWxvZy9jb2x1bW5zL2NvbHVtbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvY29sdW1ucy9jb2x1bW5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFn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O3dCQUNwQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLFlBQVk7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbml0aWFsRm9jdXNEaXJlY3RpdmUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBEaWFsb2dIZWFkZXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFySXRlbURpcmVjdGl2ZSwgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFJFU0VUVEFCTEVfVE9LRU4sIFJlc2V0QnV0dG9uQ29tcG9uZW50LCBSZXNldHRhYmxlIH0gZnJvbSAnLi4vLi4vcmVzZXQtYnV0dG9uL3Jlc2V0LWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ1RhYmxlQ29sdW1uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xufVxuXG50eXBlIFZpc2libGVDb2x1bW5UeXBlID0gc3RyaW5nOyAvLyBDb2x1bW5LZXlcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zRGlhbG9nRGF0YSBleHRlbmRzIFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB7XG4gICAgYXZhaWxhYmxlQ29sdW1uczogRGlhbG9nVGFibGVDb2x1bW5bXTtcbiAgICB2aXNpYmxlQ29sdW1uczogVmlzaWJsZUNvbHVtblR5cGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zRGlhbG9nUmVzdWx0RGF0YSB7XG4gICAgdmlzaWJsZUNvbHVtbnM6IFZpc2libGVDb2x1bW5UeXBlW107XG59XG5cbmNsYXNzIFNlbGVjdGFibGVDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvKiogU2VsZWN0ZWQgKi9cbiAgICAgICAgcHVibGljIHNlbGVjdGVkOiBib29sZWFuLFxuICAgICAgICAvKiogQWN0aXZlICovXG4gICAgICAgIHB1YmxpYyBhY3RpdmU6IGJvb2xlYW4sXG4gICAgICAgIC8qKiBUYWJsZSBDb2x1bW4gaXQgYmVsb25ncyB0byAqL1xuICAgICAgICBwdWJsaWMgY29sdW1uOiBEaWFsb2dUYWJsZUNvbHVtblxuICAgICkge31cbn1cblxuY29uc3QgSU5JVElBTF9TRUFSQ0hfVEVYVCA9ICcnO1xuY29uc3QgSU5JVElBTF9TSE9XX0FMTF9JVEVNUyA9IHRydWU7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW5zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY29sdW1ucy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJFU0VUVEFCTEVfVE9LRU4sIHVzZUV4aXN0aW5nOiBQMTNDb2x1bW5zRGlhbG9nQ29tcG9uZW50IH1dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgUmVzZXRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIExpc3RDb21wb25lbnQsXG4gICAgICAgIExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlLFxuICAgICAgICBJbml0aWFsRm9jdXNEaXJlY3RpdmUsXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUDEzQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIFJlc2V0dGFibGUsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gcmVzZXQgY29tbWFuZCBpcyBhdmFpbGFibGUgKi9cbiAgICByZWFkb25seSBpc1Jlc2V0QXZhaWxhYmxlJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBhdmFpbGFibGUgZm9yIGdyb3VwaW5nICovXG4gICAgcmVhZG9ubHkgYXZhaWxhYmxlQ29sdW1uczogRGlhbG9nVGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIEFsbCBhdmFpbGFibGUgY29sdW1ucyBmb3IgaW50ZXJhY3RpbmcgKi9cbiAgICBfc2VsZWN0YWJsZUNvbHVtbnM6IFNlbGVjdGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIGZpbHRlcmVkIGNvbHVtbnMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gdGhlIGxpc3QgKi9cbiAgICBfZmlsdGVyZWRDb2x1bW5zOiBTZWxlY3RhYmxlQ29sdW1uW10gPSBbXTtcblxuICAgIC8qKiBTZWFyY2ggUXVlcnkgc3ViamVjdCAqL1xuICAgIF9zZWFyY2hRdWVyeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oSU5JVElBTF9TRUFSQ0hfVEVYVCk7XG4gICAgLyoqIFNob3cgQWxsIGZsYWcgc3ViamVjdCAqL1xuICAgIF9zaG93QWxsSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihJTklUSUFMX1NIT1dfQUxMX0lURU1TKTtcblxuICAgIC8qKiBTZWxlY3RlZCBjb2x1bW5zIGNvdW50ICovXG4gICAgX3NlbGVjdGVkQ29sdW1uc0NvdW50ID0gMDtcblxuICAgIC8qKiBGbGFnIHRvIHRyYWNrIGRpc2FibGVkIHN0YXRlIGZvciBtb3ZlLWRvd24gbW92ZS11cCBidXR0b25zICovXG4gICAgX21vdmVVcERpc2FibGVkID0gdHJ1ZTtcbiAgICAvKiogRmxhZyB0byB0cmFjayBkaXNhYmxlZCBzdGF0ZSBmb3IgbW92ZS1kb3duIG1vdmUtdXAgYnV0dG9ucyAqL1xuICAgIF9tb3ZlRG93bkRpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1Nob3duQWxsSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3NlbGVjdEFsbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuX2lzU2hvd25BbGxJdGVtcyB8fCB0aGlzLl9maWx0ZXJlZENvbHVtbnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxDb2x1bW5zRGlhbG9nRGF0YT4sXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBjb25zdCB7IGF2YWlsYWJsZUNvbHVtbnMsIHZpc2libGVDb2x1bW5zIH0gPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ29sdW1ucyA9IGF2YWlsYWJsZUNvbHVtbnM/Lm1hcCgoeyBsYWJlbCwga2V5IH0pID0+ICh7IGxhYmVsLCBrZXkgfSkpIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYXRlQ29sdW1ucyh2aXNpYmxlQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9GaWx0ZXJPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZSAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWF0ZUNvbHVtbnModGhpcy5hdmFpbGFibGVDb2x1bW5zLm1hcCgoYykgPT4gYy5rZXkpKTtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5fZ2V0VmlzaWJsZUNvbHVtbnNGcm9tU2VsZWN0ZWRDb2x1bW5zKHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBDb2x1bW5zRGlhbG9nUmVzdWx0RGF0YSA9IHsgdmlzaWJsZUNvbHVtbnMgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTZWxlY3RBbGwoc2VsZWN0QWxsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gKGNvbHVtbi5zZWxlY3RlZCA9IHNlbGVjdEFsbCkpO1xuICAgICAgICB0aGlzLl9vblRvZ2dsZUNvbHVtbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVG9nZ2xlQ29sdW1uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb3VudFNlbGVjdGVkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlc2V0dGFibGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQ29sdW1uc0NvdW50ICE9PSB0aGlzLmF2YWlsYWJsZUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBJbml0aWFsbHkgYWxsIGNvbHVtbnMgYXJlIHNlbGVjdGVkLiBJZiBub3QsIHJlc2V0IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgICAgICAgIHJlc2V0dGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgYWxsIGFyZSBzZWxlY3RlZCwgY2hlY2sgZm9yIGNvbHVtbnMgb3JkZXIgdG8gbWF0Y2ggdGhlIGluaXRpYWwgb25lXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hdmFpbGFibGVDb2x1bW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RhYmxlQ29sdW1uc1tpbmRleF0uY29sdW1uLmtleSAhPT0gdGhpcy5hdmFpbGFibGVDb2x1bW5zW2luZGV4XS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXR0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldChyZXNldHRhYmxlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWFyY2hJbnB1dENoYW5nZSh7IHRleHQgfTogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0Lm5leHQodGV4dCB8fCAnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdG9nZ2xlU2hvd0FsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2hvd0FsbEl0ZW1zID0gdGhpcy5fc2hvd0FsbEl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0Lm5leHQoIXNob3dBbGxJdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0QWN0aXZlQ29sdW1uKGNvbHVtbjogU2VsZWN0YWJsZUNvbHVtbiB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMubWFwKChfY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBfY29sdW1uLmFjdGl2ZSA9IF9jb2x1bW4gPT09IGNvbHVtbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW92ZW1lbnRCdXR0b25zU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tb3ZlQWN0aXZlVG9Ub3AoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5GaWx0ZXJlZExpc3RCeUluZGV4KHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKSwgMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVRvQm90dG9tKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChcbiAgICAgICAgICAgIHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKSxcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgYWN0aXZlQ29sdW1uSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoYWN0aXZlQ29sdW1uSW5kZXgsIGFjdGl2ZUNvbHVtbkluZGV4IC0gMSk7XG5cbiAgICAgICAgLy8ga2VlcCB0aGUgZm9jdXMgYmFjayB0byB0aGUgbW92ZSB1cCBidXR0b24gYXMgaXQgZ2V0cyBsb3N0IG9uIGNsaWNrXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW92ZVVwQnRuID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgbW92ZVVwQnRuLmZvY3VzKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVEb3duKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgYWN0aXZlQ29sdW1uSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoYWN0aXZlQ29sdW1uSW5kZXgsIGFjdGl2ZUNvbHVtbkluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNSZW9yZGVyQ29sdW1uQnV0dG9uU2hvd2FibGUoaXRlbTogU2VsZWN0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5hY3RpdmUgJiYgaXRlbS5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJCeUNvbHVtbkt5KGluZGV4OiBudW1iZXIsIGl0ZW06IFNlbGVjdGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbT8uY29sdW1uLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHZpc2libGVDb2x1bW5LZXlzIGtleXMgb2YgY29sdW1ucyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgc2VsZWN0ZWQuXG4gICAgICogQWxzbywgdGhlaXIgb3JkZXIgbWF0dGVyczogaXQgd2lsbCBiZSB1c2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhdGVDb2x1bW5zKHZpc2libGVDb2x1bW5LZXlzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aXNpYmxlQ29sdW1uSW5kZXhNYXAgPSBuZXcgTWFwKHZpc2libGVDb2x1bW5LZXlzLm1hcCgoa2V5LCBpbmRleCkgPT4gW2tleSwgaW5kZXhdKSk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zID0gdGhpcy5hdmFpbGFibGVDb2x1bW5zXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLy8gc29ydGluZyBjb2x1bW5zIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgb3JkZXIgb2YgdmlzaWJsZSBjb2x1bW5zXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFJbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoYS5rZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJJbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoYi5rZXkpO1xuICAgICAgICAgICAgICAgIGlmIChhSW5kZXggPT09IHVuZGVmaW5lZCB8fCBiSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBwcmVzZXJ2aW5nIGluaXRpYWwgb3JkZXIgb2Ygbm90IHNlbGVjdGVkIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChjb2x1bW4sIGluZGV4OiBudW1iZXIpOiBTZWxlY3RhYmxlQ29sdW1uID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHZpc2libGVDb2x1bW5LZXlzLmluY2x1ZGVzKGNvbHVtbi5rZXkpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGluZGV4ID09PSAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8ga2VlcCBjb3VudCBvZiBzZWxlY3RlZFxuICAgICAgICB0aGlzLl9jb3VudFNlbGVjdGVkQ29sdW1ucygpO1xuXG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcblxuICAgICAgICAvLyByZXNldCBmaWx0ZXIgc2V0dGluZ3Mgc2V0dGluZ3NcbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0Lm5leHQoSU5JVElBTF9TRUFSQ0hfVEVYVCk7XG4gICAgICAgIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QubmV4dChJTklUSUFMX1NIT1dfQUxMX0lURU1TKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LCB0aGlzLl9zZWFyY2hRdWVyeVN1YmplY3RdKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3Nob3dBbGwsIHNlYXJjaFF1ZXJ5XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZENvbHVtbnMgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbHVtbi5sYWJlbC50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5LnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBzaG93QWxsIHx8IGl0ZW0uc2VsZWN0ZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlRmlsdGVyZWRDb2x1bW5zTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkNoYW5nZUZpbHRlcmVkQ29sdW1uc0xpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWaXNpYmxlQ29sdW1uc0Zyb21TZWxlY3RlZENvbHVtbnMoY29sdW1ucyA9IHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zKTogVmlzaWJsZUNvbHVtblR5cGVbXSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcigoeyBzZWxlY3RlZCB9KSA9PiBzZWxlY3RlZCkubWFwKCh7IGNvbHVtbiB9KTogVmlzaWJsZUNvbHVtblR5cGUgPT4gY29sdW1uLmtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZENvbHVtbnMuZmluZEluZGV4KCh7IGFjdGl2ZSB9KSA9PiBhY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSB9ID0gdGhpcy5fbW92ZUVsZW1lbnRJblRoZUxpc3RCeUluZGV4KHRoaXMuX2ZpbHRlcmVkQ29sdW1ucywgZnJvbSwgdG8pO1xuICAgICAgICAvKipcbiAgICAgICAgICogbmVlZCB0byByZWZsZWN0IGFuYWxvZ2ljYWwgbW92ZW1lbnQgaW4gdGhlIG9yaWdpbmFsIGxpc3RcbiAgICAgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5TZWxlY3RhYmxlTGlzdChtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW92ZW1lbnRCdXR0b25zU3RhdGUoKTtcblxuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vdmUgY29sdW1uIGluIHNlbGVjdGFibGUgbGlzdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlQ29sdW1uSW5TZWxlY3RhYmxlTGlzdChpdGVtVG9Nb3ZlOiBTZWxlY3RhYmxlQ29sdW1uLCB0YXJnZXRJdGVtOiBTZWxlY3RhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucztcbiAgICAgICAgdGhpcy5fbW92ZUVsZW1lbnRJblRoZUxpc3RCeUluZGV4KGxpc3QsIGxpc3QuaW5kZXhPZihpdGVtVG9Nb3ZlKSwgbGlzdC5pbmRleE9mKHRhcmdldEl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW92ZSBlbGVtZW50IGluIHRoZSBsaXN0XG4gICAgICogQHJldHVybiBtb3ZlZCBpdGVtIGFuZCByZXBsYWNlZCBpdGVtLlxuICAgICAqL1xuICAgIHByaXZhdGUgX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleDxUPihcbiAgICAgICAgbGlzdDogVFtdLFxuICAgICAgICBmcm9tSW5kZXg6IG51bWJlcixcbiAgICAgICAgdG9JbmRleDogbnVtYmVyXG4gICAgKTogeyBtb3ZlZEl0ZW06IFQ7IHJlcGxhY2VkSXRlbTogVCB9IHtcbiAgICAgICAgY29uc3QgbGlzdExlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXG4gICAgICAgIGZyb21JbmRleCA9IE1hdGgubWluKE1hdGgubWF4KGZyb21JbmRleCwgMCksIGxpc3RMZW5ndGggLSAxKTtcbiAgICAgICAgdG9JbmRleCA9IE1hdGgubWluKE1hdGgubWF4KHRvSW5kZXgsIDApLCBsaXN0TGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgY29uc3QgcmVwbGFjZWRJdGVtID0gbGlzdFt0b0luZGV4XTtcbiAgICAgICAgY29uc3QgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2UoZnJvbUluZGV4LCAxKVswXTtcblxuICAgICAgICBsaXN0LnNwbGljZSh0b0luZGV4LCAwLCBtb3ZlZEl0ZW0pO1xuXG4gICAgICAgIHJldHVybiB7IG1vdmVkSXRlbSwgcmVwbGFjZWRJdGVtIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb3VudFNlbGVjdGVkQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb2x1bW5zQ291bnQgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucy5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKTtcbiAgICAgICAgdGhpcy5fbW92ZVVwRGlzYWJsZWQgPSBhY3RpdmVJbmRleCA8IDE7XG4gICAgICAgIHRoaXMuX21vdmVEb3duRGlzYWJsZWQgPSBhY3RpdmVJbmRleCA8IDAgfHwgYWN0aXZlSW5kZXggPj0gdGhpcy5fZmlsdGVyZWRDb2x1bW5zLmxlbmd0aCAtIDE7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBjbGFzcz1cImZkcC10YWJsZS1wMTMtY29sdW1ucy1kaWFsb2dcIj5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGg0IGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgPGZkLXRvb2xiYXI+XG4gICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nU2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiKF9zZWFyY2hRdWVyeVN1YmplY3QgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9zZWFyY2hJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgIDwhLS0gU2hvdyBTZWxlY3RlZC9BbGwgLS0+XG4gICAgICAgICAgICA8YnV0dG9uIGZkLXRvb2xiYXItaXRlbSBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwiX3RvZ2dsZVNob3dBbGwoKVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoKF9zaG93QWxsSXRlbXNTdWJqZWN0IHwgYXN5bmMpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dzU2hvd1NlbGVjdGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dTaG93QWxsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgPHVsIGZkLWxpc3QgW3NlbGVjdGlvbl09XCJ0cnVlXCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwiX3NldEFjdGl2ZUNvbHVtbihudWxsKVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3RlZENvbHVtbnNDb3VudCA9PT0gX3NlbGVjdGFibGVDb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIl9zZWxlY3RlZENvbHVtbnNDb3VudCA9PT0gX3NlbGVjdGFibGVDb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfc2VsZWN0QWxsRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgID48L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nU2VsZWN0QWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uc0NvdW50OiBfc2VsZWN0ZWRDb2x1bW5zQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVDb2x1bW5zQ291bnQ6IF9zZWxlY3RhYmxlQ29sdW1ucy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgX2ZpbHRlcmVkQ29sdW1uczsgdHJhY2sgX2ZpbHRlckJ5Q29sdW1uS3koJGluZGV4LCBpdGVtKSkge1xuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNlbGVjdC1pdGVtLS1zZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWl0ZW0tLWFjdGl2ZV09XCJpdGVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJfc2V0QWN0aXZlQ29sdW1uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIiAobmdNb2RlbENoYW5nZSk9XCJfb25Ub2dnbGVDb2x1bW4oKVwiPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgQnV0dG9uIE1vdmVtZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiY29sbGFwc2UtZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9tb3ZlVXBEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Ub3BCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Ub3BCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9tb3ZlQWN0aXZlVG9Ub3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfbW92ZUFjdGl2ZVRvVG9wKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaXNSZW9yZGVyQ29sdW1uQnV0dG9uU2hvd2FibGUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LXVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZVVwRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVVwQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVVwQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX21vdmVBY3RpdmVVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2lzUmVvcmRlckNvbHVtbkJ1dHRvblNob3dhYmxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZURvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlRG93bkJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVEb3duQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfbW92ZUFjdGl2ZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9pc1Jlb3JkZXJDb2x1bW5CdXR0b25TaG93YWJsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImV4cGFuZC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVEb3duRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVRvQm90dG9tQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVRvQm90dG9tQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVRvQm90dG9tKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX21vdmVBY3RpdmVUb0JvdHRvbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2lzUmVvcmRlckNvbHVtbkJ1dHRvblNob3dhYmxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dDb25maXJtYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DOWN_ARROW, UP_ARROW, SPACE } from '@angular/cdk/keycodes';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, Inject, signal, inject, DestroyRef, Input, ViewChild, ViewChildren, computed, Optional, Host, ContentChild, EventEmitter, Output, forwardRef, Pipe, TemplateRef, Directive, ContentChildren, HostBinding, ChangeDetectorRef, NgZone, ElementRef, booleanAttribute, NgModule } from '@angular/core';
|
|
4
|
-
import
|
|
4
|
+
import * as i3 from '@angular/common';
|
|
5
|
+
import { NgTemplateOutlet, AsyncPipe, DOCUMENT, CommonModule, NgClass, NgStyle } from '@angular/common';
|
|
5
6
|
import * as i2 from '@fundamental-ngx/cdk/utils';
|
|
6
7
|
import { TemplateDirective, InitialFocusDirective, DisabledBehaviorDirective, FDK_FOCUSABLE_LIST_DIRECTIVE, FDK_FOCUSABLE_ITEM_DIRECTIVE, RtlService, ValueByPathPipe, uuidv4, destroyObservable, KeyUtil, RangeSelector, resizeObservable, FDK_FOCUSABLE_GRID_DIRECTIVE, DndListDirective, DragAndDropModule, RepeatDirective, IntersectionSpyDirective, FocusableGridDirective } from '@fundamental-ngx/cdk/utils';
|
|
7
8
|
import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';
|
|
@@ -643,24 +644,41 @@ class P13ColumnsDialogComponent {
|
|
|
643
644
|
this._calculateMovementButtonsState();
|
|
644
645
|
}
|
|
645
646
|
/** @hidden */
|
|
646
|
-
_moveActiveToTop() {
|
|
647
|
+
_moveActiveToTop(event) {
|
|
648
|
+
event.stopPropagation();
|
|
649
|
+
event.preventDefault();
|
|
647
650
|
this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), 0);
|
|
648
651
|
}
|
|
649
652
|
/** @hidden */
|
|
650
|
-
_moveActiveToBottom() {
|
|
653
|
+
_moveActiveToBottom(event) {
|
|
654
|
+
event.stopPropagation();
|
|
655
|
+
event.preventDefault();
|
|
651
656
|
this._moveColumnInFilteredListByIndex(this._getActiveColumnIndexInFilteredList(), this._filteredColumns.length - 1);
|
|
652
657
|
}
|
|
653
658
|
/** @hidden */
|
|
654
|
-
_moveActiveUp() {
|
|
659
|
+
_moveActiveUp(event) {
|
|
660
|
+
event.stopPropagation();
|
|
661
|
+
event.preventDefault();
|
|
655
662
|
const activeColumnIndex = this._getActiveColumnIndexInFilteredList();
|
|
656
663
|
this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex - 1);
|
|
664
|
+
// keep the focus back to the move up button as it gets lost on click
|
|
665
|
+
setTimeout(() => {
|
|
666
|
+
const moveUpBtn = event.target;
|
|
667
|
+
moveUpBtn.focus();
|
|
668
|
+
}, 0);
|
|
657
669
|
}
|
|
658
670
|
/** @hidden */
|
|
659
|
-
_moveActiveDown() {
|
|
671
|
+
_moveActiveDown(event) {
|
|
672
|
+
event.stopPropagation();
|
|
673
|
+
event.preventDefault();
|
|
660
674
|
const activeColumnIndex = this._getActiveColumnIndexInFilteredList();
|
|
661
675
|
this._moveColumnInFilteredListByIndex(activeColumnIndex, activeColumnIndex + 1);
|
|
662
676
|
}
|
|
663
677
|
/** @hidden */
|
|
678
|
+
_isReorderColumnButtonShowable(item) {
|
|
679
|
+
return item.active && item.selected;
|
|
680
|
+
}
|
|
681
|
+
/** @hidden */
|
|
664
682
|
_filterByColumnKy(index, item) {
|
|
665
683
|
return item?.column.key;
|
|
666
684
|
}
|
|
@@ -763,7 +781,7 @@ class P13ColumnsDialogComponent {
|
|
|
763
781
|
this._moveDownDisabled = activeIndex < 0 || activeIndex >= this._filteredColumns.length - 1;
|
|
764
782
|
}
|
|
765
783
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: P13ColumnsDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
766
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: P13ColumnsDialogComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }], ngImport: i0, template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n <!-- Active Button Movement -->\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom()\"\n ></button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: ListComponent$1, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
784
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: P13ColumnsDialogComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: P13ColumnsDialogComponent }], ngImport: i0, template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n\n <!-- Active Button Movement -->\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop($event)\"\n (keydown.enter)=\"_moveActiveToTop($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp($event)\"\n (keydown.enter)=\"_moveActiveUp($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown($event)\"\n (keydown.enter)=\"_moveActiveDown($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom($event)\"\n (keydown.enter)=\"_moveActiveToBottom($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: ListComponent$1, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
767
785
|
}
|
|
768
786
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: P13ColumnsDialogComponent, decorators: [{
|
|
769
787
|
type: Component,
|
|
@@ -793,8 +811,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
793
811
|
ButtonBarComponent,
|
|
794
812
|
AsyncPipe,
|
|
795
813
|
FdTranslatePipe,
|
|
796
|
-
InitialFocusDirective
|
|
797
|
-
|
|
814
|
+
InitialFocusDirective,
|
|
815
|
+
CommonModule
|
|
816
|
+
], template: "<fd-dialog class=\"fdp-table-p13-columns-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n </fd-toolbar>\n <ul fd-list [selection]=\"true\" aria-multiselectable=\"true\">\n <li\n fd-list-item\n (focus)=\"_setActiveColumn(null)\"\n [selected]=\"_selectedColumnsCount === _selectableColumns.length\"\n >\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (focus)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n\n <!-- Active Button Movement -->\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop($event)\"\n (keydown.enter)=\"_moveActiveToTop($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp($event)\"\n (keydown.enter)=\"_moveActiveUp($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown($event)\"\n (keydown.enter)=\"_moveActiveDown($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom($event)\"\n (keydown.enter)=\"_moveActiveToBottom($event)\"\n *ngIf=\"_isReorderColumnButtonShowable(item)\"\n ></button>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:10}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"] }]
|
|
798
817
|
}], ctorParameters: () => [{ type: i1$1.DialogRef }, { type: i0.ChangeDetectorRef }] });
|
|
799
818
|
|
|
800
819
|
/**
|