ngx-techlify-core 18.3.4 → 18.4.0

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.
@@ -0,0 +1,3 @@
1
+ export class ColumnConfig {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLFlBQVk7Q0FLeEIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjbGFzcyBDb2x1bW5Db25maWcge1xuICAgIGxhYmVsOiBzdHJpbmc7IC8vQ29sdW1uIGxhYmVsXG4gICAgZGVmOiBzdHJpbmc7ICAgLy9Db2x1bW4gZGVmaW5pdGlvblxuICAgIGlzRWRpdGFibGU/OiBib29sZWFuOyAgLy9EZW5vdGVzIGlmIGEgY29sdW1uIGlzIGVkaXRhYmxlIGluIHNlbGVjdG9yLCBkZWZhdWx0IGl0IGlzIGVkaXRhYmxlXG4gICAgaXNTZWxlY3RlZD86IGJvb2xlYW47ICAvL0Rlbm90ZXMgaWYgYSBjb2x1bW4gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCwgZGVmYXVsdCBpdCBpcyBzZWxlY3RlZFxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
+ import { startWith } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "@angular/material/form-field";
@@ -7,54 +8,80 @@ import * as i3 from "@angular/material/core";
7
8
  import * as i4 from "@angular/material/select";
8
9
  import * as i5 from "@angular/forms";
9
10
  import * as i6 from "@angular/material/icon";
10
- import * as i7 from "@angular/material/menu";
11
- import * as i8 from "@angular/material/list";
11
+ import * as i7 from "@angular/material/input";
12
+ import * as i8 from "@angular/material/button";
12
13
  export class ColumnSelectorComponent {
14
+ get availableColumns() {
15
+ return this.columnConfigs;
16
+ }
17
+ get displayedColumns() {
18
+ return this.columnConfigs.filter(column => column.isSelected ?? true);
19
+ }
20
+ get displayedColumnDefs() {
21
+ return this.displayedColumns.map(column => column.def);
22
+ }
23
+ get filteredColumns() {
24
+ return this.availableColumns.filter((column) => {
25
+ if (this.search.value) {
26
+ return column.label.toLowerCase().includes(this.search.value.toLowerCase());
27
+ }
28
+ return true;
29
+ });
30
+ }
31
+ get sortedColumns() {
32
+ let columns = this.filteredColumns.sort((a, b) => {
33
+ if (a.label < b.label)
34
+ return -1;
35
+ if (a.label > b.label)
36
+ return 1;
37
+ return 0;
38
+ });
39
+ if (this.search.value) {
40
+ columns = [...columns, ...this.selectedColumns];
41
+ }
42
+ return [...new Map(columns.map(column => [column.def, column])).values()];
43
+ }
13
44
  constructor() {
14
- this.availableColumns = [];
15
- this.displayedColumns = [];
16
45
  this.label = 'Columns';
17
46
  this.mode = 'selector';
47
+ this.columnConfigs = [];
48
+ this.selectedColumns = [];
49
+ this.selectedColumnsChange = new EventEmitter();
18
50
  this.displayedColumnsChange = new EventEmitter();
19
- /**
20
- * @deprecated Use displayedColumnsChange instead
21
- */
22
- this.updated = new EventEmitter();
23
51
  this.columnSelector = new FormControl([]);
24
- this.selectedColumns = [];
25
- this.selectedColumns = this.columnSelector.value || [];
52
+ this.search = new FormControl('');
26
53
  }
27
54
  ngOnInit() {
28
55
  if (this.displayedColumns?.length > 0) {
29
- this.columnSelector.setValue(this.displayedColumns, { emitEvent: false });
30
- this.selectedColumns = this.columnSelector.value;
56
+ this.columnSelector.setValue(this.displayedColumnDefs, { emitEvent: false });
31
57
  }
32
- this.columnSelector.valueChanges.subscribe((val) => {
33
- this.displayedColumns = val;
34
- this.displayedColumnsChange.emit(this.displayedColumns);
35
- this.updated.emit(val);
58
+ this.columnSelector.valueChanges
59
+ .pipe(startWith(this.displayedColumnDefs))
60
+ .subscribe((selectedColumns) => {
61
+ this.selectedColumns = this.columnConfigs
62
+ .filter(column => selectedColumns.includes(column.def));
63
+ const columnDefs = this.selectedColumns.map(column => column.def);
64
+ this.selectedColumnsChange.emit(this.selectedColumns);
65
+ this.displayedColumnsChange.emit(columnDefs);
36
66
  });
37
67
  }
38
- updateColumnSelector() {
39
- this.columnSelector.setValue(this.selectedColumns);
40
- }
41
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { availableColumns: "availableColumns", displayedColumns: "displayedColumns", label: "label", mode: "mode" }, outputs: { displayedColumnsChange: "displayedColumnsChange", updated: "updated" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { label: "label", mode: "mode", columnConfigs: "columnConfigs", selectedColumns: "selectedColumns" }, outputs: { selectedColumnsChange: "selectedColumnsChange", displayedColumnsChange: "displayedColumnsChange" }, ngImport: i0, template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
43
70
  }
44
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorComponent, decorators: [{
45
72
  type: Component,
46
- args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<!-- Mode: Icon -->\n<mat-icon *ngIf=\"mode === 'icon'\" class=\"cursor-pointer\"\n [matMenuTriggerFor]=\"columnMenu\" #menuTrigger=\"matMenuTrigger\">\n view_column\n</mat-icon>\n\n<!-- Mat Menu for Multi Selection -->\n<mat-menu #columnMenu=\"matMenu\" [overlapTrigger]=\"false\">\n <mat-selection-list [(ngModel)]=\"selectedColumns\" (ngModelChange)=\"updateColumnSelector()\">\n <mat-list-option *ngFor=\"let col of availableColumns\" [value]=\"col\">\n {{ col }}\n </mat-list-option>\n </mat-selection-list>\n</mat-menu>\n" }]
47
- }], ctorParameters: () => [], propDecorators: { availableColumns: [{
73
+ args: [{ selector: 'app-column-selector', template: "<mat-form-field *ngIf=\"mode === 'selector'\">\n <mat-label>{{ label }}</mat-label>\n <mat-select [multiple]=\"true\" [formControl]=\"columnSelector\">\n <mat-option class=\"text-capitalize\" *ngFor=\"let col of sortedColumns\" [value]=\"col.def\"\n [disabled]=\"!(col?.isEditable ?? true)\">\n {{ col.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<div *ngIf=\"mode === 'icon'\" style=\"height: 20px;\">\n <button matTooltip=\"Column Selector\" type=\"button\" mat-icon-button (click)=\"select.open()\" class=\"column-button\">\n <mat-icon class=\"relative-view-icon\">view_column</mat-icon>\n <mat-select class=\"column-selector\" #select [formControl]=\"columnSelector\" multiple panelWidth=\"\">\n <mat-form-field class=\"p-1 w-100\">\n <input matInput [formControl]=\"search\" placeholder=\"Search\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n <button mat-icon-button matSuffix type=\"button\" *ngIf=\"search.value\" (click)=\"search.setValue('')\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n <mat-option *ngFor=\"let column of sortedColumns\" [value]=\"column.def\" class=\"text-capitalize\"\n [disabled]=\"!(column?.isEditable ?? true)\">{{column?.label}}</mat-option>\n </mat-select>\n </button>\n</div>", styles: [".relative-view-icon{position:relative;right:10px;bottom:14px}.column-button{height:20px;width:20px;border:0;background:transparent}.column-selector{opacity:0;position:relative;bottom:50px}\n"] }]
74
+ }], ctorParameters: () => [], propDecorators: { label: [{
48
75
  type: Input
49
- }], displayedColumns: [{
76
+ }], mode: [{
50
77
  type: Input
51
- }], label: [{
78
+ }], columnConfigs: [{
52
79
  type: Input
53
- }], mode: [{
80
+ }], selectedColumns: [{
54
81
  type: Input
55
- }], displayedColumnsChange: [{
82
+ }], selectedColumnsChange: [{
56
83
  type: Output
57
- }], updated: [{
84
+ }], displayedColumnsChange: [{
58
85
  type: Output
59
86
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVEzQyxNQUFNLE9BQU8sdUJBQXVCO0lBZWxDO1FBZFMscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBQ2hDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBd0IsVUFBVSxDQUFDO1FBRXRDLDJCQUFzQixHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ3hGOztXQUVHO1FBQ08sWUFBTyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXpFLG1CQUFjLEdBQWdCLElBQUksV0FBVyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQWEsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7WUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7K0dBbENVLHVCQUF1QjttR0FBdkIsdUJBQXVCLG9RQ1RwQyxnM0JBdUJBOzs0RkRkYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBRUUscUJBQXFCO3dEQUt0QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUlHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2FwcC1jb2x1bW4tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhdmFpbGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbCA9ICdDb2x1bW5zJztcbiAgQElucHV0KCkgbW9kZTogJ3NlbGVjdG9yJyB8ICdpY29uJyA9ICdzZWxlY3Rvcic7XG5cbiAgQE91dHB1dCgpIGRpc3BsYXllZENvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGRpc3BsYXllZENvbHVtbnNDaGFuZ2UgaW5zdGVhZFxuICAgKi9cbiAgQE91dHB1dCgpIHVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGNvbHVtblNlbGVjdG9yOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxhbnk+KFtdKTtcbiAgc2VsZWN0ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TZWxlY3Rvci52YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29sdW1uU2VsZWN0b3Iuc2V0VmFsdWUodGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtblNlbGVjdG9yLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuY29sdW1uU2VsZWN0b3IudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdmFsO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlLmVtaXQodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcbiAgICAgIHRoaXMudXBkYXRlZC5lbWl0KHZhbCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVDb2x1bW5TZWxlY3RvcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtblNlbGVjdG9yLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdG9yJ1wiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImNvbHVtblNlbGVjdG9yXCI+XG4gICAgPG1hdC1vcHRpb24gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGF2YWlsYWJsZUNvbHVtbnNcIiBbdmFsdWVdPVwiY29sXCI+XG4gICAgICB7eyBjb2wgfX1cbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gTW9kZTogSWNvbiAtLT5cbjxtYXQtaWNvbiAqbmdJZj1cIm1vZGUgPT09ICdpY29uJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb2x1bW5NZW51XCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIj5cbiAgdmlld19jb2x1bW5cbjwvbWF0LWljb24+XG5cbjwhLS0gTWF0IE1lbnUgZm9yIE11bHRpIFNlbGVjdGlvbiAtLT5cbjxtYXQtbWVudSAjY29sdW1uTWVudT1cIm1hdE1lbnVcIiBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIj5cbiAgPG1hdC1zZWxlY3Rpb24tbGlzdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sdW1uc1wiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNvbHVtblNlbGVjdG9yKClcIj5cbiAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2wgb2YgYXZhaWxhYmxlQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2xcIj5cbiAgICAgIHt7IGNvbCB9fVxuICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbjwvbWF0LW1lbnU+XG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUWpDLE1BQU0sT0FBTyx1QkFBdUI7SUFZbEMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7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QUVFLHFCQUFxQjt3REFLdEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vY29sdW1uLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtY29sdW1uLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGFiZWwgPSAnQ29sdW1ucyc7XG4gIEBJbnB1dCgpIG1vZGU6ICdzZWxlY3RvcicgfCAnaWNvbicgPSAnc2VsZWN0b3InO1xuICBASW5wdXQoKSBjb2x1bW5Db25maWdzOiBDb2x1bW5Db25maWdbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gW107XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2x1bW5Db25maWdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtbkNvbmZpZ1tdPigpO1xuXG4gIEBPdXRwdXQoKSBkaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBjb2x1bW5TZWxlY3RvcjogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8YW55PihbXSk7XG4gIHNlYXJjaCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgZ2V0IGF2YWlsYWJsZUNvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZ3M7XG4gIH1cblxuICBnZXQgZGlzcGxheWVkQ29sdW1ucygpOiBDb2x1bW5Db25maWdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlncy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc1NlbGVjdGVkID8/IHRydWUpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXllZENvbHVtbkRlZnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZENvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZGVmKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZENvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZUNvbHVtbnMuZmlsdGVyKChjb2x1bW46IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiAoY29sdW1uLmxhYmVsIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaC52YWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNvcnRlZENvbHVtbnMoKTogQ29sdW1uQ29uZmlnW10ge1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5maWx0ZXJlZENvbHVtbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEubGFiZWwgPCBiLmxhYmVsKSByZXR1cm4gLTE7XG4gICAgICBpZiAoYS5sYWJlbCA+IGIubGFiZWwpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2VhcmNoLnZhbHVlKSB7XG4gICAgICBjb2x1bW5zID0gWy4uLmNvbHVtbnMsIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5uZXcgTWFwKGNvbHVtbnMubWFwKGNvbHVtbiA9PiBbY29sdW1uLmRlZiwgY29sdW1uXSkpLnZhbHVlcygpXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2x1bW5TZWxlY3Rvci5zZXRWYWx1ZSh0aGlzLmRpc3BsYXllZENvbHVtbkRlZnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtblNlbGVjdG9yLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuZGlzcGxheWVkQ29sdW1uRGVmcykpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZENvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5Db25maWdzXG4gICAgICAgICAgLmZpbHRlcihjb2x1bW4gPT4gc2VsZWN0ZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbi5kZWYpKTtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmcyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmRlZik7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNDaGFuZ2UuZW1pdChjb2x1bW5EZWZzKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0b3InXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInRydWVcIiBbZm9ybUNvbnRyb2xdPVwiY29sdW1uU2VsZWN0b3JcIj5cbiAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiICpuZ0Zvcj1cImxldCBjb2wgb2Ygc29ydGVkQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2wuZGVmXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhKGNvbD8uaXNFZGl0YWJsZSA/PyB0cnVlKVwiPlxuICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2ljb24nXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+XG4gIDxidXR0b24gbWF0VG9vbHRpcD1cIkNvbHVtbiBTZWxlY3RvclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbGVjdC5vcGVuKClcIiBjbGFzcz1cImNvbHVtbi1idXR0b25cIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyZWxhdGl2ZS12aWV3LWljb25cIj52aWV3X2NvbHVtbjwvbWF0LWljb24+XG4gICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJjb2x1bW4tc2VsZWN0b3JcIiAjc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb2x1bW5TZWxlY3RvclwiIG11bHRpcGxlIHBhbmVsV2lkdGg9XCJcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInAtMSB3LTEwMFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzZWFyY2gudmFsdWVcIiAoY2xpY2spPVwic2VhcmNoLnNldFZhbHVlKCcnKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc29ydGVkQ29sdW1uc1wiIFt2YWx1ZV09XCJjb2x1bW4uZGVmXCIgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIShjb2x1bW4/LmlzRWRpdGFibGUgPz8gdHJ1ZSlcIj57e2NvbHVtbj8ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvYnV0dG9uPlxuPC9kaXY+Il19
@@ -8,6 +8,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
8
8
  import { MatIcon } from "@angular/material/icon";
9
9
  import { MatMenu, MatMenuTrigger } from "@angular/material/menu";
10
10
  import { MatListOption, MatSelectionList } from "@angular/material/list";
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatButtonModule } from '@angular/material/button';
11
13
  import * as i0 from "@angular/core";
12
14
  export class ColumnSelectorModule {
13
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -21,7 +23,9 @@ export class ColumnSelectorModule {
21
23
  MatMenu,
22
24
  MatSelectionList,
23
25
  FormsModule,
24
- MatListOption], exports: [ColumnSelectorComponent] }); }
26
+ MatListOption,
27
+ MatInputModule,
28
+ MatButtonModule], exports: [ColumnSelectorComponent] }); }
25
29
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, imports: [CommonModule,
26
30
  MatFormFieldModule,
27
31
  MatOptionModule,
@@ -31,7 +35,9 @@ export class ColumnSelectorModule {
31
35
  MatMenu,
32
36
  MatSelectionList,
33
37
  FormsModule,
34
- MatListOption] }); }
38
+ MatListOption,
39
+ MatInputModule,
40
+ MatButtonModule] }); }
35
41
  }
36
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnSelectorModule, decorators: [{
37
43
  type: NgModule,
@@ -53,8 +59,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
53
59
  MatMenu,
54
60
  MatSelectionList,
55
61
  FormsModule,
56
- MatListOption
62
+ MatListOption,
63
+ MatInputModule,
64
+ MatButtonModule
57
65
  ]
58
66
  }]
59
67
  }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQXlCdkUsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsaUJBbkI3Qix1QkFBdUIsYUFNdkIsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixPQUFPO1lBQ1AsY0FBYztZQUNkLE9BQU87WUFDUCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWEsYUFiYix1QkFBdUI7Z0hBZ0JkLG9CQUFvQixZQWI3QixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLE9BQU87WUFFUCxPQUFPO1lBQ1AsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxhQUFhOzs0RkFHSixvQkFBb0I7a0JBckJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbHVtblNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdE9wdGlvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQge01hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3R9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDb2x1bW5TZWxlY3RvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29sdW1uU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgTWF0TWVudVRyaWdnZXIsXG4gICAgTWF0TWVudSxcbiAgICBNYXRTZWxlY3Rpb25MaXN0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdExpc3RPcHRpb25cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZWxlY3Rvck1vZHVsZSB7IH1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBMkIzRCxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixpQkFyQjdCLHVCQUF1QixhQU12QixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLE9BQU87WUFDUCxjQUFjO1lBQ2QsT0FBTztZQUNQLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlLGFBZmYsdUJBQXVCO2dIQWtCZCxvQkFBb0IsWUFmN0IsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixPQUFPO1lBRVAsT0FBTztZQUNQLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlOzs0RkFHTixvQkFBb0I7a0JBdkJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29sdW1uU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ29sdW1uU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENvbHVtblNlbGVjdG9yQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE1hdE1lbnUsXG4gICAgTWF0U2VsZWN0aW9uTGlzdCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRMaXN0T3B0aW9uLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNlbGVjdG9yTW9kdWxlIHsgfVxuIl19
@@ -1,3 +1,4 @@
1
+ export * from './column-config.model';
1
2
  export * from './column-selector.module';
2
3
  export * from './column-selector/column-selector.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvbHVtbi1zZWxlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvbHVtbi1zZWxlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sdW1uLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG4iXX0=
@@ -51,9 +51,8 @@ export class TechlifyTaggerTagFormFieldComponent {
51
51
  return this._value;
52
52
  }
53
53
  set value(tagIds) {
54
- this._value = tagIds || [];
55
- if (!Array.isArray(this._value)) {
56
- this._value = [this.value];
54
+ if (Array.isArray(tagIds)) {
55
+ this._value = tagIds;
57
56
  }
58
57
  this.stateChanges.next();
59
58
  }
@@ -264,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
264
263
  }], placeholder: [{
265
264
  type: Input
266
265
  }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUF3QixrQkFBa0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3JGLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7OztBQVEzRixNQUFNLE9BQU8sbUNBQW1DO2FBRXZDLFdBQU0sR0FBRyxDQUFDLEFBQUosQ0FBSztJQWtCbEIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxD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Z0JBaUJGLFFBQVE7c0JBRFgsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBYUYsS0FBSztzQkFEUixLQUFLO2dCQWlCRixXQUFXO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBJbmplY3QsIE9wdGlvbmFsLCBTZWxmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wsIE1BVF9GT1JNX0ZJRUxEIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVjaGxpZnlUYWdnZXJUYWdGb3JtQ29uZmlnTW9kZWwgfSBmcm9tICcuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1GaWVsZENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICd0ZWNobGlmeS10YWdnZXItZm9ybS1maWVsZCc7XG4gIGlkID0gYHRlY2hsaWZ5LXRhZ2dlci1mb3JtLWZpZWxkLSR7VGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuXG4gIHRhZ0lucHV0Q3RybCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZmlsdGVyU3RyaW5nOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0lucHV0JykgdGFnSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQElucHV0KCkgY29uZmlnOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbCA9IG5ldyBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbCgpO1xuICBASW5wdXQoKSBtb2RlbFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1vZGVsSWQ6IHN0cmluZztcblxuICBwcml2YXRlIF9hbGxUYWdzOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKVxuICBnZXQgYWxsVGFncygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsVGFncztcbiAgfVxuICBzZXQgYWxsVGFncyh2YWx1ZSkge1xuICAgIHRoaXMuX2FsbFRhZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGRlZmF1bHRDcmVhdGVDYXRlZ29yeTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBnZXQgdGFncygpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxUYWdzLmZpbHRlcih4ID0+IHRoaXMudmFsdWUuc29tZSh5ID0+IHkgPT0geC5pZCkpO1xuICB9XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aCA9PSAwO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eSB8fCB0aGlzLnRhZ0lucHV0Q3RybC52YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy50YWdJbnB1dEN0cmwuZGlzYWJsZSgpIDogdGhpcy50YWdJbnB1dEN0cmwuZW5hYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueVtdID0gW107XG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh0YWdJZHM6IGFueVtdKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB0YWdJZHMgfHwgW107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBbdGhpcy52YWx1ZV07XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhZ0lucHV0Q3RybC5kaXJ0eSAmJiB0aGlzLnJlcXVpcmVkICYmICh0aGlzLnZhbHVlLmxlbmd0aCA9PSAwKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICBpZiAodGhpcy5hbGxUYWdzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmh0dHBTZXJ2aWNlXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXG4gICAgICAgIC5nZXQodGhpcy5jb25maWcuYXBpVXJsLCB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxuICAgICAgICAgICAgcGVyUGFnZTogJzEwMDAnXG4gICAgICAgICAgfVxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApXG4gICAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWxsVGFncyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlbElkICYmIHRoaXMudmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuaHR0cFNlcnZpY2VcbiAgICAgICAgLmNhY2hlKCF0aGlzLmNvbmZpZy5pc0NhY2hlVGFncylcbiAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5hcGlVcmwsIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHRoaXMuY2F0ZWdvcmllcy5qb2luKCcsJyksXG4gICAgICAgICAgICBtb2RlbF90eXBlOiB0aGlzLm1vZGVsVHlwZSxcbiAgICAgICAgICAgIG1vZGVsX2lkOiB0aGlzLm1vZGVsSWQsXG4gICAgICAgICAgICBwZXJQYWdlOiAnMTAwMCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMClcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IChyZXN1bHQ/LmRhdGEgfHwgW10pLm1hcCgoeDogYW55KSA9PiB4LmlkKTtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICh0aGlzLm1vZGVsSWQgJiYgdGhpcy5hbGxUYWdzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmh0dHBTZXJ2aWNlXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXG4gICAgICAgIC5nZXQodGhpcy5jb25maWcuYXBpVXJsLCB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxuICAgICAgICAgICAgbW9kZWxfdHlwZTogdGhpcy5tb2RlbFR5cGUsXG4gICAgICAgICAgICBtb2RlbF9pZDogdGhpcy5tb2RlbElkXG4gICAgICAgICAgfVxuICAgICAgICB9KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5hbGxUYWdzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJlZFRhZ3MoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTEQpIHB1YmxpYyBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcblxuICAgIGNvbnN0IHN1YiA9IHRoaXMudGFnSW5wdXRDdHJsLnZhbHVlQ2hhbmdlc1xuICAgICAgLnN1YnNjcmliZShmaWx0ZXJWYWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU3RyaW5nID0gZmlsdGVyVmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG5cbiAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiAhb3JpZ2luKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7IH1cblxuICBvbkNvbnRhaW5lckNsaWNrKCkgeyB9XG5cbiAgYXN5bmMgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc1NpbmdsZSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5jb25maWcuaXNDcmVhdGVhYmxlKSB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmFsbFRhZ3M7XG4gICAgICAgIGxldCB0YWcgPSB0YWdzLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS50aXRsZS50b0xvd2VyQ2FzZSgpID09IHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZiAoIXRhZykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UucG9zdCh0aGlzLmNvbmZpZy5jcmVhdGVBcGlVcmwsIHtcbiAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWUsXG4gICAgICAgICAgICAgIGNhdGVnb3J5X3RpdGxlOiAodGhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDApID8gKHRoaXMuZGVmYXVsdENyZWF0ZUNhdGVnb3J5ID8gdGhpcy5kZWZhdWx0Q3JlYXRlQ2F0ZWdvcnkgOiB0aGlzLmNhdGVnb3JpZXNbMF0pIDogJydcbiAgICAgICAgICAgIH0pLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgdGFnID0gcmVzdWx0Lml0ZW07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hbGxUYWdzLnB1c2godGFnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZSh0YWcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUucHVzaCh0YWcuaWQpO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGV2ZW50LmNoaXBJbnB1dC5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnRhZ0lucHV0Q3RybC5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHJlbW92ZSh0YWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcih4ID0+IHggIT09IHRhZy5pZCk7XG4gICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgfVxuXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc1NpbmdsZSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICB0aGlzLnJlbW92ZSh7IGlkOiBldmVudC5vcHRpb24udmFsdWUgfSk7XG4gICAgICB0aGlzLnZhbHVlLnB1c2goZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgIHRoaXMuX2hhbmRsZUlucHV0KCk7XG4gICAgfVxuICAgIHRoaXMudGFnSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMudGFnSW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyKCk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyU3RyaW5nID8gdGhpcy5maWx0ZXJTdHJpbmcudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgICBjb25zdCBhdmFpbGFibGVUYWdzID0gdGhpcy5hbGxUYWdzLmZpbHRlcigodGFnOiBhbnkpID0+ICF0aGlzLnZhbHVlLnNvbWUoKGl0ZW06IGFueSkgPT4gaXRlbSA9PSB0YWcuaWQpKTtcbiAgICByZXR1cm4gZmlsdGVyVmFsdWUgPyBhdmFpbGFibGVUYWdzLmZpbHRlcigodGFnOiBhbnkpID0+IHRhZy50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkgOiBhdmFpbGFibGVUYWdzO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh0YWdJZHM6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRhZ0lkcyB8fCBbXTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IEJvb2xlYW5JbnB1dDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKTtcblxuICAgIC8vIE1hbnVhbGx5IHVuc3Vic2NyaWJlIGZyb20gYWxsIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iLCI8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQgYXJpYS1sYWJlbD1cIlRhZyBTZWxlY3Rpb25cIj5cbiAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiIFtlZGl0YWJsZV09XCJjb25maWcuc2VsZWN0YWJsZVwiIFtyZW1vdmFibGVdPVwiY29uZmlnLnJlbW92YWJsZVwiXG4gICAgICAgIChyZW1vdmVkKT1cInJlbW92ZSh0YWcpXCI+XG4gICAgICAgIHt7dGFnLnRpdGxlfX1cbiAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwiY29uZmlnLnJlbW92YWJsZVwiIGNsYXNzPVwiYm9yZGVyLTBcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1yZWxhdGl2ZS1pY29uXCI+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3tjb25maWcuaXNDcmVhdGVhYmxlPyBjb25maWcucGxhY2Vob2xkZXI6Jyd9fVwiICN0YWdJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGFnSW5wdXRDdHJsXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXG4gICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJjb25maWcuc2VwYXJhdG9yS2V5c0NvZGVzXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcbiAgICAgICAgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCIgKGNsaWNrKT1cInRyaWdnZXIub3BlblBhbmVsKClcIj5cbjwvbWF0LWNoaXAtZ3JpZD5cbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdGFnIG9mIGZpbHRlcmVkVGFnc1wiIFt2YWx1ZV09XCJ0YWcuaWRcIj5cbiAgICAgICAge3t0YWcudGl0bGV9fVxuICAgIDwvbWF0LW9wdGlvbj5cbjwvbWF0LWF1dG9jb21wbGV0ZT4iXX0=
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUF3QixrQkFBa0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3JGLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7OztBQVEzRixNQUFNLE9BQU8sbUNBQW1DO2FBRXZDLFdBQU0sR0FBRyxDQUFDLEFBQUosQ0FBSztJQWtCbEIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxD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QURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBJbmplY3QsIE9wdGlvbmFsLCBTZWxmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wsIE1BVF9GT1JNX0ZJRUxEIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVjaGxpZnlUYWdnZXJUYWdGb3JtQ29uZmlnTW9kZWwgfSBmcm9tICcuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1GaWVsZENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICd0ZWNobGlmeS10YWdnZXItZm9ybS1maWVsZCc7XG4gIGlkID0gYHRlY2hsaWZ5LXRhZ2dlci1mb3JtLWZpZWxkLSR7VGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuXG4gIHRhZ0lucHV0Q3RybCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZmlsdGVyU3RyaW5nOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0lucHV0JykgdGFnSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQElucHV0KCkgY29uZmlnOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbCA9IG5ldyBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbCgpO1xuICBASW5wdXQoKSBtb2RlbFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1vZGVsSWQ6IHN0cmluZztcblxuICBwcml2YXRlIF9hbGxUYWdzOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKVxuICBnZXQgYWxsVGFncygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsVGFncztcbiAgfVxuICBzZXQgYWxsVGFncyh2YWx1ZSkge1xuICAgIHRoaXMuX2FsbFRhZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGRlZmF1bHRDcmVhdGVDYXRlZ29yeTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBnZXQgdGFncygpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxUYWdzLmZpbHRlcih4ID0+IHRoaXMudmFsdWUuc29tZSh5ID0+IHkgPT0geC5pZCkpO1xuICB9XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aCA9PSAwO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eSB8fCB0aGlzLnRhZ0lucHV0Q3RybC52YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy50YWdJbnB1dEN0cmwuZGlzYWJsZSgpIDogdGhpcy50YWdJbnB1dEN0cmwuZW5hYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueVtdID0gW107XG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh0YWdJZHM6IGFueVtdKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFnSWRzKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0YWdJZHM7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhZ0lucHV0Q3RybC5kaXJ0eSAmJiB0aGlzLnJlcXVpcmVkICYmICh0aGlzLnZhbHVlLmxlbmd0aCA9PSAwKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICBpZiAodGhpcy5hbGxUYWdzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmh0dHBTZXJ2aWNlXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXG4gICAgICAgIC5nZXQodGhpcy5jb25maWcuYXBpVXJsLCB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxuICAgICAgICAgICAgcGVyUGFnZTogJzEwMDAnXG4gICAgICAgICAgfVxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApXG4gICAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWxsVGFncyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlbElkICYmIHRoaXMudmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuaHR0cFNlcnZpY2VcbiAgICAgICAgLmNhY2hlKCF0aGlzLmNvbmZpZy5pc0NhY2hlVGFncylcbiAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5hcGlVcmwsIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHRoaXMuY2F0ZWdvcmllcy5qb2luKCcsJyksXG4gICAgICAgICAgICBtb2RlbF90eXBlOiB0aGlzLm1vZGVsVHlwZSxcbiAgICAgICAgICAgIG1vZGVsX2lkOiB0aGlzLm1vZGVsSWQsXG4gICAgICAgICAgICBwZXJQYWdlOiAnMTAwMCdcbiAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMClcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IChyZXN1bHQ/LmRhdGEgfHwgW10pLm1hcCgoeDogYW55KSA9PiB4LmlkKTtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICh0aGlzLm1vZGVsSWQgJiYgdGhpcy5hbGxUYWdzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmh0dHBTZXJ2aWNlXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXG4gICAgICAgIC5nZXQodGhpcy5jb25maWcuYXBpVXJsLCB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxuICAgICAgICAgICAgbW9kZWxfdHlwZTogdGhpcy5tb2RlbFR5cGUsXG4gICAgICAgICAgICBtb2RlbF9pZDogdGhpcy5tb2RlbElkXG4gICAgICAgICAgfVxuICAgICAgICB9KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5hbGxUYWdzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJlZFRhZ3MoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTEQpIHB1YmxpYyBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcblxuICAgIGNvbnN0IHN1YiA9IHRoaXMudGFnSW5wdXRDdHJsLnZhbHVlQ2hhbmdlc1xuICAgICAgLnN1YnNjcmliZShmaWx0ZXJWYWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU3RyaW5nID0gZmlsdGVyVmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG5cbiAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiAhb3JpZ2luKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7IH1cblxuICBvbkNvbnRhaW5lckNsaWNrKCkgeyB9XG5cbiAgYXN5bmMgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc1NpbmdsZSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5jb25maWcuaXNDcmVhdGVhYmxlKSB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmFsbFRhZ3M7XG4gICAgICAgIGxldCB0YWcgPSB0YWdzLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS50aXRsZS50b0xvd2VyQ2FzZSgpID09IHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZiAoIXRhZykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UucG9zdCh0aGlzLmNvbmZpZy5jcmVhdGVBcGlVcmwsIHtcbiAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWUsXG4gICAgICAgICAgICAgIGNhdGVnb3J5X3RpdGxlOiAodGhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDApID8gKHRoaXMuZGVmYXVsdENyZWF0ZUNhdGVnb3J5ID8gdGhpcy5kZWZhdWx0Q3JlYXRlQ2F0ZWdvcnkgOiB0aGlzLmNhdGVnb3JpZXNbMF0pIDogJydcbiAgICAgICAgICAgIH0pLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgdGFnID0gcmVzdWx0Lml0ZW07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hbGxUYWdzLnB1c2godGFnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZSh0YWcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUucHVzaCh0YWcuaWQpO1xuICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGV2ZW50LmNoaXBJbnB1dC5pbnB1dEVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnRhZ0lucHV0Q3RybC5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHJlbW92ZSh0YWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcih4ID0+IHggIT09IHRhZy5pZCk7XG4gICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgfVxuXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc1NpbmdsZSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICB0aGlzLnJlbW92ZSh7IGlkOiBldmVudC5vcHRpb24udmFsdWUgfSk7XG4gICAgICB0aGlzLnZhbHVlLnB1c2goZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgIHRoaXMuX2hhbmRsZUlucHV0KCk7XG4gICAgfVxuICAgIHRoaXMudGFnSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMudGFnSW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyKCk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyU3RyaW5nID8gdGhpcy5maWx0ZXJTdHJpbmcudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgICBjb25zdCBhdmFpbGFibGVUYWdzID0gdGhpcy5hbGxUYWdzLmZpbHRlcigodGFnOiBhbnkpID0+ICF0aGlzLnZhbHVlLnNvbWUoKGl0ZW06IGFueSkgPT4gaXRlbSA9PSB0YWcuaWQpKTtcbiAgICByZXR1cm4gZmlsdGVyVmFsdWUgPyBhdmFpbGFibGVUYWdzLmZpbHRlcigodGFnOiBhbnkpID0+IHRhZy50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkgOiBhdmFpbGFibGVUYWdzO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh0YWdJZHM6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRhZ0lkcyB8fCBbXTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IEJvb2xlYW5JbnB1dDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKTtcblxuICAgIC8vIE1hbnVhbGx5IHVuc3Vic2NyaWJlIGZyb20gYWxsIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iLCI8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQgYXJpYS1sYWJlbD1cIlRhZyBTZWxlY3Rpb25cIj5cbiAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiIFtlZGl0YWJsZV09XCJjb25maWcuc2VsZWN0YWJsZVwiIFtyZW1vdmFibGVdPVwiY29uZmlnLnJlbW92YWJsZVwiXG4gICAgICAgIChyZW1vdmVkKT1cInJlbW92ZSh0YWcpXCI+XG4gICAgICAgIHt7dGFnLnRpdGxlfX1cbiAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwiY29uZmlnLnJlbW92YWJsZVwiIGNsYXNzPVwiYm9yZGVyLTBcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1yZWxhdGl2ZS1pY29uXCI+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3tjb25maWcuaXNDcmVhdGVhYmxlPyBjb25maWcucGxhY2Vob2xkZXI6Jyd9fVwiICN0YWdJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGFnSW5wdXRDdHJsXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXG4gICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJjb25maWcuc2VwYXJhdG9yS2V5c0NvZGVzXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcbiAgICAgICAgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCIgKGNsaWNrKT1cInRyaWdnZXIub3BlblBhbmVsKClcIj5cbjwvbWF0LWNoaXAtZ3JpZD5cbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdGFnIG9mIGZpbHRlcmVkVGFnc1wiIFt2YWx1ZV09XCJ0YWcuaWRcIj5cbiAgICAgICAge3t0YWcudGl0bGV9fVxuICAgIDwvbWF0LW9wdGlvbj5cbjwvbWF0LWF1dG9jb21wbGV0ZT4iXX0=