@skyux/data-manager 7.0.0-beta.11 → 7.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/documentation.json +473 -584
  2. package/esm2020/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.mjs +51 -45
  3. package/esm2020/lib/modules/data-manager/data-manager-filter-context.mjs +2 -1
  4. package/esm2020/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.mjs +95 -76
  5. package/esm2020/lib/modules/data-manager/data-manager.component.mjs +39 -31
  6. package/esm2020/lib/modules/data-manager/data-manager.service.mjs +66 -61
  7. package/esm2020/lib/modules/data-manager/data-view.component.mjs +18 -21
  8. package/esm2020/lib/modules/data-manager/models/data-manager-config.mjs +1 -1
  9. package/esm2020/lib/modules/data-manager/models/data-manager-filter-data.mjs +1 -1
  10. package/esm2020/lib/modules/data-manager/models/data-manager-state-options.mjs +1 -1
  11. package/esm2020/lib/modules/data-manager/models/data-manager-state.mjs +1 -1
  12. package/esm2020/lib/modules/data-manager/models/data-view-state-options.mjs +1 -1
  13. package/esm2020/lib/modules/data-manager/models/data-view-state.mjs +1 -1
  14. package/fesm2015/skyux-data-manager.mjs +265 -228
  15. package/fesm2015/skyux-data-manager.mjs.map +1 -1
  16. package/fesm2020/skyux-data-manager.mjs +259 -227
  17. package/fesm2020/skyux-data-manager.mjs.map +1 -1
  18. package/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.d.ts +1 -3
  19. package/lib/modules/data-manager/data-manager-filter-context.d.ts +1 -1
  20. package/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.d.ts +8 -18
  21. package/lib/modules/data-manager/data-manager.component.d.ts +2 -9
  22. package/lib/modules/data-manager/data-manager.service.d.ts +3 -14
  23. package/lib/modules/data-manager/data-view.component.d.ts +6 -10
  24. package/lib/modules/data-manager/models/data-manager-state.d.ts +6 -6
  25. package/package.json +9 -9
@@ -1,3 +1,5 @@
1
+ var _SkyDataManagerColumnPickerComponent_instances, _SkyDataManagerColumnPickerComponent_ngUnsubscribe, _SkyDataManagerColumnPickerComponent__dataState, _SkyDataManagerColumnPickerComponent_formatColumnOptions;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
4
  import { SkyModalInstance } from '@skyux/modals';
3
5
  import { Subject } from 'rxjs';
@@ -25,6 +27,9 @@ export class SkyDataManagerColumnPickerComponent {
25
27
  this.context = context;
26
28
  this.dataManagerService = dataManagerService;
27
29
  this.instance = instance;
30
+ _SkyDataManagerColumnPickerComponent_instances.add(this);
31
+ this.columnData = [];
32
+ this.displayedColumnData = [];
28
33
  this.viewConfig = {
29
34
  id: 'columnPicker',
30
35
  name: 'Column Picker',
@@ -34,14 +39,15 @@ export class SkyDataManagerColumnPickerComponent {
34
39
  onSelectAllClick: this.selectAll.bind(this),
35
40
  onClearAllClick: this.clearAll.bind(this),
36
41
  };
37
- this._dataState = new SkyDataManagerState({});
38
- this._ngUnsubscribe = new Subject();
42
+ this.isAnyDisplayedColumnSelected = false;
43
+ _SkyDataManagerColumnPickerComponent_ngUnsubscribe.set(this, new Subject());
44
+ _SkyDataManagerColumnPickerComponent__dataState.set(this, new SkyDataManagerState({}));
39
45
  }
40
46
  get dataState() {
41
- return this._dataState;
47
+ return __classPrivateFieldGet(this, _SkyDataManagerColumnPickerComponent__dataState, "f");
42
48
  }
43
49
  set dataState(value) {
44
- this._dataState = value;
50
+ __classPrivateFieldSet(this, _SkyDataManagerColumnPickerComponent__dataState, value, "f");
45
51
  this.updateData();
46
52
  }
47
53
  ngOnInit() {
@@ -51,17 +57,17 @@ export class SkyDataManagerColumnPickerComponent {
51
57
  defaultDataState: this.dataState,
52
58
  });
53
59
  this.dataManagerService.initDataView(this.viewConfig);
54
- this.columnData = this.formatColumnOptions();
60
+ this.columnData = __classPrivateFieldGet(this, _SkyDataManagerColumnPickerComponent_instances, "m", _SkyDataManagerColumnPickerComponent_formatColumnOptions).call(this);
55
61
  this.dataManagerService
56
62
  .getDataStateUpdates('columnPicker')
57
- .pipe(takeUntil(this._ngUnsubscribe))
63
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerColumnPickerComponent_ngUnsubscribe, "f")))
58
64
  .subscribe((state) => {
59
65
  this.dataState = state;
60
66
  });
61
67
  }
62
68
  ngOnDestroy() {
63
- this._ngUnsubscribe.next();
64
- this._ngUnsubscribe.complete();
69
+ __classPrivateFieldGet(this, _SkyDataManagerColumnPickerComponent_ngUnsubscribe, "f").next();
70
+ __classPrivateFieldGet(this, _SkyDataManagerColumnPickerComponent_ngUnsubscribe, "f").complete();
65
71
  }
66
72
  updateData() {
67
73
  this.displayedColumnData = this.searchColumns(this.columnData.filter((col) => !col.alwaysDisplayed));
@@ -78,7 +84,7 @@ export class SkyDataManagerColumnPickerComponent {
78
84
  for (const property in item) {
79
85
  if (Object.prototype.hasOwnProperty.call(item, property) &&
80
86
  (property === 'label' || property === 'description')) {
81
- const propertyText = item[property] && item[property].toUpperCase();
87
+ const propertyText = item[property]?.toUpperCase();
82
88
  if (propertyText && propertyText.indexOf(searchText) > -1) {
83
89
  return true;
84
90
  }
@@ -109,50 +115,50 @@ export class SkyDataManagerColumnPickerComponent {
109
115
  applyChanges() {
110
116
  this.instance.save(this.columnData.filter((col) => col.isSelected || col.alwaysDisplayed));
111
117
  }
112
- formatColumnOptions() {
113
- const allColumnOptions = this.context.columnOptions;
114
- const visibleColumnIds = this.context.displayedColumnIds;
115
- let formattedColumnOptions = [];
116
- const unselectedColumnOptions = [];
117
- for (const columnOption of allColumnOptions) {
118
- // format the column with the properties the column picker needs
119
- const colIndex = visibleColumnIds.indexOf(columnOption.id);
120
- const formattedColumn = {
121
- alwaysDisplayed: columnOption.alwaysDisplayed,
122
- id: columnOption.id,
123
- label: columnOption.label,
124
- description: columnOption.description,
125
- isSelected: colIndex !== -1,
126
- };
127
- // if column picker sorting is currently enabled sort columns by order displayed then alphabetical
128
- // else display column in order they were specified in the columnOptions
129
- if (this.context.columnPickerSortStrategy ===
130
- SkyDataManagerColumnPickerSortStrategy.SelectedThenAlphabetical) {
131
- if (formattedColumn.isSelected) {
132
- formattedColumnOptions[colIndex] = formattedColumn;
133
- }
134
- else {
135
- unselectedColumnOptions.push(formattedColumn);
136
- }
118
+ }
119
+ _SkyDataManagerColumnPickerComponent_ngUnsubscribe = new WeakMap(), _SkyDataManagerColumnPickerComponent__dataState = new WeakMap(), _SkyDataManagerColumnPickerComponent_instances = new WeakSet(), _SkyDataManagerColumnPickerComponent_formatColumnOptions = function _SkyDataManagerColumnPickerComponent_formatColumnOptions() {
120
+ const allColumnOptions = this.context.columnOptions;
121
+ const visibleColumnIds = this.context.displayedColumnIds;
122
+ let formattedColumnOptions = [];
123
+ const unselectedColumnOptions = [];
124
+ for (const columnOption of allColumnOptions) {
125
+ // format the column with the properties the column picker needs
126
+ const colIndex = visibleColumnIds.indexOf(columnOption.id);
127
+ const formattedColumn = {
128
+ alwaysDisplayed: columnOption.alwaysDisplayed,
129
+ id: columnOption.id,
130
+ label: columnOption.label,
131
+ description: columnOption.description,
132
+ isSelected: colIndex !== -1,
133
+ };
134
+ // if column picker sorting is currently enabled sort columns by order displayed then alphabetical
135
+ // else display column in order they were specified in the columnOptions
136
+ if (this.context.columnPickerSortStrategy ===
137
+ SkyDataManagerColumnPickerSortStrategy.SelectedThenAlphabetical) {
138
+ if (formattedColumn.isSelected) {
139
+ formattedColumnOptions[colIndex] = formattedColumn;
137
140
  }
138
141
  else {
139
- formattedColumnOptions.push(formattedColumn);
142
+ unselectedColumnOptions.push(formattedColumn);
140
143
  }
141
144
  }
142
- // if column picker sorting is enabled, sort the columns that are not currently displayed
143
- // and add them after the currently displayed options
144
- if (this.context.columnPickerSortStrategy ===
145
- SkyDataManagerColumnPickerSortStrategy.SelectedThenAlphabetical) {
146
- unselectedColumnOptions.sort((col1, col2) => col1.label.localeCompare(col2.label));
147
- formattedColumnOptions = formattedColumnOptions.concat(unselectedColumnOptions);
145
+ else {
146
+ formattedColumnOptions.push(formattedColumn);
148
147
  }
149
- return formattedColumnOptions;
150
148
  }
151
- }
149
+ // if column picker sorting is enabled, sort the columns that are not currently displayed
150
+ // and add them after the currently displayed options
151
+ if (this.context.columnPickerSortStrategy ===
152
+ SkyDataManagerColumnPickerSortStrategy.SelectedThenAlphabetical) {
153
+ unselectedColumnOptions.sort((col1, col2) => col1.label.localeCompare(col2.label));
154
+ formattedColumnOptions = formattedColumnOptions.concat(unselectedColumnOptions);
155
+ }
156
+ return formattedColumnOptions;
157
+ };
152
158
  SkyDataManagerColumnPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerColumnPickerComponent, deps: [{ token: i1.SkyDataManagerColumnPickerContext }, { token: i2.SkyDataManagerService }, { token: i3.SkyModalInstance }], target: i0.ɵɵFactoryTarget.Component });
153
- SkyDataManagerColumnPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDataManagerColumnPickerComponent, selector: "sky-data-manager-column-picker", providers: [SkyDataManagerService], ngImport: i0, template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_data_manager_column_picker_title' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content class=\"sky-data-manager-column-picker-content\">\n <sky-data-manager>\n <sky-data-manager-toolbar> </sky-data-manager-toolbar>\n\n <sky-data-view [viewId]=\"viewConfig.id\">\n <sky-repeater expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let column of displayedColumnData\"\n [selectable]=\"true\"\n [(isSelected)]=\"column.isSelected\"\n (isSelectedChange)=\"onIsSelectedChange()\"\n >\n <sky-repeater-item-title>\n {{ column.label }}\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n {{ column.description }}\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n </sky-data-view>\n </sky-data-manager>\n </sky-modal-content>\n <sky-modal-footer>\n <div\n class=\"sky-data-manager-column-picker-footer-stacked-indicator\"\n *ngIf=\"!isAnyDisplayedColumnSelected\"\n >\n <sky-status-indicator descriptionType=\"error\" indicatorType=\"danger\">\n {{\n 'skyux_data_manager_select_column_status_indicator_title'\n | skyLibResources\n }}\n </sky-status-indicator>\n </div>\n <button\n sky-cmp-id=\"apply-changes\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!isAnyDisplayedColumnSelected\"\n (click)=\"applyChanges()\"\n >\n {{ 'skyux_data_manager_apply_changes_button_title' | skyLibResources }}\n </button>\n <button\n sky-cmp-id=\"cancel\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancelChanges()\"\n >\n {{ 'skyux_data_manager_cancel_button_title' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", styles: [".sky-data-manager-column-picker-content sky-repeater-item-content{margin-top:5px}.sky-data-manager-column-picker-footer-stacked-indicator{margin:0 5px 10px 0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody"] }, { kind: "component", type: i3.λ2, selector: "sky-modal-content" }, { kind: "component", type: i3.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i3.λ4, selector: "sky-modal-header" }, { kind: "component", type: i5.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i5.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i5.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: i5.λ12, selector: "sky-repeater-item-title" }, { kind: "component", type: i6.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { kind: "component", type: i7.SkyDataManagerComponent, selector: "sky-data-manager" }, { kind: "component", type: i8.SkyDataManagerToolbarComponent, selector: "sky-data-manager-toolbar" }, { kind: "component", type: i9.SkyDataViewComponent, selector: "sky-data-view", inputs: ["viewId"] }, { kind: "pipe", type: i10.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
159
+ SkyDataManagerColumnPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDataManagerColumnPickerComponent, selector: "sky-data-manager-column-picker", providers: [SkyDataManagerService], ngImport: i0, template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_data_manager_column_picker_title' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content class=\"sky-data-manager-column-picker-content\">\n <sky-data-manager>\n <sky-data-manager-toolbar> </sky-data-manager-toolbar>\n\n <sky-data-view [viewId]=\"viewConfig.id\">\n <sky-repeater expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let column of displayedColumnData\"\n [selectable]=\"true\"\n [(isSelected)]=\"column.isSelected\"\n (isSelectedChange)=\"onIsSelectedChange()\"\n >\n <sky-repeater-item-title>\n {{ column.label }}\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n {{ column.description }}\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n </sky-data-view>\n </sky-data-manager>\n </sky-modal-content>\n <sky-modal-footer>\n <div\n class=\"sky-data-manager-column-picker-footer-stacked-indicator\"\n *ngIf=\"!isAnyDisplayedColumnSelected\"\n >\n <sky-status-indicator descriptionType=\"error\" indicatorType=\"danger\">\n {{\n 'skyux_data_manager_select_column_status_indicator_title'\n | skyLibResources\n }}\n </sky-status-indicator>\n </div>\n <button\n sky-cmp-id=\"apply-changes\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!isAnyDisplayedColumnSelected\"\n (click)=\"applyChanges()\"\n >\n {{ 'skyux_data_manager_apply_changes_button_title' | skyLibResources }}\n </button>\n <button\n sky-cmp-id=\"cancel\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancelChanges()\"\n >\n {{ 'skyux_data_manager_cancel_button_title' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", styles: [".sky-data-manager-column-picker-content sky-repeater-item-content{margin-top:5px}.sky-data-manager-column-picker-footer-stacked-indicator{margin:0 5px 10px 0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody"] }, { kind: "component", type: i3.λ2, selector: "sky-modal-content" }, { kind: "component", type: i3.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i3.λ4, selector: "sky-modal-header" }, { kind: "component", type: i5.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i5.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i5.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: i5.λ12, selector: "sky-repeater-item-title" }, { kind: "component", type: i6.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { kind: "component", type: i7.SkyDataManagerComponent, selector: "sky-data-manager" }, { kind: "component", type: i8.SkyDataManagerToolbarComponent, selector: "sky-data-manager-toolbar" }, { kind: "component", type: i9.SkyDataViewComponent, selector: "sky-data-view", inputs: ["viewId", "isActive"] }, { kind: "pipe", type: i10.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
154
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerColumnPickerComponent, decorators: [{
155
161
  type: Component,
156
162
  args: [{ selector: 'sky-data-manager-column-picker', providers: [SkyDataManagerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_data_manager_column_picker_title' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content class=\"sky-data-manager-column-picker-content\">\n <sky-data-manager>\n <sky-data-manager-toolbar> </sky-data-manager-toolbar>\n\n <sky-data-view [viewId]=\"viewConfig.id\">\n <sky-repeater expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let column of displayedColumnData\"\n [selectable]=\"true\"\n [(isSelected)]=\"column.isSelected\"\n (isSelectedChange)=\"onIsSelectedChange()\"\n >\n <sky-repeater-item-title>\n {{ column.label }}\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n {{ column.description }}\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n </sky-data-view>\n </sky-data-manager>\n </sky-modal-content>\n <sky-modal-footer>\n <div\n class=\"sky-data-manager-column-picker-footer-stacked-indicator\"\n *ngIf=\"!isAnyDisplayedColumnSelected\"\n >\n <sky-status-indicator descriptionType=\"error\" indicatorType=\"danger\">\n {{\n 'skyux_data_manager_select_column_status_indicator_title'\n | skyLibResources\n }}\n </sky-status-indicator>\n </div>\n <button\n sky-cmp-id=\"apply-changes\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!isAnyDisplayedColumnSelected\"\n (click)=\"applyChanges()\"\n >\n {{ 'skyux_data_manager_apply_changes_button_title' | skyLibResources }}\n </button>\n <button\n sky-cmp-id=\"cancel\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancelChanges()\"\n >\n {{ 'skyux_data_manager_cancel_button_title' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", styles: [".sky-data-manager-column-picker-content sky-repeater-item-content{margin-top:5px}.sky-data-manager-column-picker-footer-stacked-indicator{margin:0 5px 10px 0}\n"] }]
157
163
  }], ctorParameters: function () { return [{ type: i1.SkyDataManagerColumnPickerContext }, { type: i2.SkyDataManagerService }, { type: i3.SkyModalInstance }]; } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7OztBQVN6Rjs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBbUM7SUEwQjlDLFlBQ1MsT0FBMEMsRUFDMUMsa0JBQXlDLEVBQ3pDLFFBQTBCO1FBRjFCLFlBQU8sR0FBUCxPQUFPLENBQW1DO1FB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ZUFBZSxDQUFDLFVBQVUsRUFBRTtvQkFDOUIsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDO2lCQUNwRDtxQkFBTTtvQkFDTCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQy9DO2FBQ0Y7aUJBQU07Z0JBQ0wsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFFRCx5RkFBeUY7UUFDekYscURBQXFEO1FBQ3JELElBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7WUFDckMsc0NBQXNDLENBQUMsd0JBQXdCLEVBQy9EO1lBQ0EsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDckMsQ0FBQztZQUNGLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FDcEQsdUJBQXVCLENBQ3hCLENBQUM7U0FDSDtRQUVELE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQzs7Z0lBL0tVLG1DQUFtQztvSEFBbkMsbUNBQW1DLHlEQUhuQyxDQUFDLHFCQUFxQixDQUFDLDBCQ2pDcEMsbTREQXdEQTsyRkRwQmEsbUNBQW1DO2tCQVAvQyxTQUFTOytCQUNFLGdDQUFnQyxhQUcvQixDQUFDLHFCQUFxQixDQUFDLG1CQUNqQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGEtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLW9wdGlvbic7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlclNvcnRTdHJhdGVneSB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci1zb3J0LXN0cmF0ZWd5JztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlJztcbmltcG9ydCB7IFNreURhdGFWaWV3Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtdmlldy1jb25maWcnO1xuXG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgQ29sdW1uIGV4dGVuZHMgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJPcHRpb24ge1xuICBpc1NlbGVjdGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lEYXRhTWFuYWdlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIHB1YmxpYyBnZXQgZGF0YVN0YXRlKCk6IFNreURhdGFNYW5hZ2VyU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU3RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRhdGFTdGF0ZSh2YWx1ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkge1xuICAgIHRoaXMuX2RhdGFTdGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbkRhdGE6IENvbHVtbltdO1xuICBwdWJsaWMgZGlzcGxheWVkQ29sdW1uRGF0YTogQ29sdW1uW107XG4gIHB1YmxpYyB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZyA9IHtcbiAgICBpZDogJ2NvbHVtblBpY2tlcicsXG4gICAgbmFtZTogJ0NvbHVtbiBQaWNrZXInLFxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXG4gICAgc2VhcmNoRXhwYW5kTW9kZTogJ2ZpdCcsXG4gICAgbXVsdGlzZWxlY3RUb29sYmFyRW5hYmxlZDogdHJ1ZSxcbiAgICBvblNlbGVjdEFsbENsaWNrOiB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpLFxuICAgIG9uQ2xlYXJBbGxDbGljazogdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpLFxuICB9O1xuXG4gIHByaXZhdGUgX2RhdGFTdGF0ZSA9IG5ldyBTa3lEYXRhTWFuYWdlclN0YXRlKHt9KTtcbiAgcHJpdmF0ZSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBpc0FueURpc3BsYXllZENvbHVtblNlbGVjdGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb250ZXh0OiBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlckNvbnRleHQsXG4gICAgcHVibGljIGRhdGFNYW5hZ2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBpbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlLmluaXREYXRhTWFuYWdlcih7XG4gICAgICBhY3RpdmVWaWV3SWQ6IHRoaXMudmlld0NvbmZpZy5pZCxcbiAgICAgIGRhdGFNYW5hZ2VyQ29uZmlnOiB7fSxcbiAgICAgIGRlZmF1bHREYXRhU3RhdGU6IHRoaXMuZGF0YVN0YXRlLFxuICAgIH0pO1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlLmluaXREYXRhVmlldyh0aGlzLnZpZXdDb25maWcpO1xuXG4gICAgdGhpcy5jb2x1bW5EYXRhID0gdGhpcy5mb3JtYXRDb2x1bW5PcHRpb25zKCk7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZVxuICAgICAgLmdldERhdGFTdGF0ZVVwZGF0ZXMoJ2NvbHVtblBpY2tlcicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGFTdGF0ZSA9IHN0YXRlO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5EYXRhID0gdGhpcy5zZWFyY2hDb2x1bW5zKFxuICAgICAgdGhpcy5jb2x1bW5EYXRhLmZpbHRlcigoY29sKSA9PiAhY29sLmFsd2F5c0Rpc3BsYXllZClcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlLm9ubHlTaG93U2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YSA9IHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YS5maWx0ZXIoXG4gICAgICAgIChjb2wpID0+IGNvbC5pc1NlbGVjdGVkXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuaXNBbnlEaXNwbGF5ZWRDb2x1bW5TZWxlY3RlZCA9IHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YS5zb21lKFxuICAgICAgKGNvbCkgPT4gY29sLmlzU2VsZWN0ZWRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaENvbHVtbnMoY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgbGV0IHNlYXJjaGVkQ29sdW1ucyA9IGNvbHVtbnM7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9XG4gICAgICB0aGlzLmRhdGFTdGF0ZSAmJiB0aGlzLmRhdGFTdGF0ZS5zZWFyY2hUZXh0Py50b1VwcGVyQ2FzZSgpO1xuXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgIHNlYXJjaGVkQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gaXRlbSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCBwcm9wZXJ0eSkgJiZcbiAgICAgICAgICAgIChwcm9wZXJ0eSA9PT0gJ2xhYmVsJyB8fCBwcm9wZXJ0eSA9PT0gJ2Rlc2NyaXB0aW9uJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VGV4dDogc3RyaW5nID1cbiAgICAgICAgICAgICAgaXRlbVtwcm9wZXJ0eV0gJiYgaXRlbVtwcm9wZXJ0eV0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVRleHQgJiYgcHJvcGVydHlUZXh0LmluZGV4T2Yoc2VhcmNoVGV4dCkgPiAtMSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaGVkQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5EYXRhLmZvckVhY2goKGNvbHVtbikgPT4gKGNvbHVtbi5pc1NlbGVjdGVkID0gdHJ1ZSkpO1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YS5mb3JFYWNoKChjb2x1bW4pID0+IChjb2x1bW4uaXNTZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gIH1cblxuICBwdWJsaWMgb25Jc1NlbGVjdGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW5jZS5jYW5jZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb250ZXh0LmRpc3BsYXllZENvbHVtbklkcy5maW5kSW5kZXgoKGNvbElkKSA9PiBjb2xJZCA9PT0gaWQpICE9PSAtMVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2Uuc2F2ZShcbiAgICAgIHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoKGNvbCkgPT4gY29sLmlzU2VsZWN0ZWQgfHwgY29sLmFsd2F5c0Rpc3BsYXllZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRDb2x1bW5PcHRpb25zKCk6IENvbHVtbltdIHtcbiAgICBjb25zdCBhbGxDb2x1bW5PcHRpb25zID0gdGhpcy5jb250ZXh0LmNvbHVtbk9wdGlvbnM7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbklkcyA9IHRoaXMuY29udGV4dC5kaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgbGV0IGZvcm1hdHRlZENvbHVtbk9wdGlvbnM6IENvbHVtbltdID0gW107XG4gICAgY29uc3QgdW5zZWxlY3RlZENvbHVtbk9wdGlvbnM6IENvbHVtbltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbk9wdGlvbiBvZiBhbGxDb2x1bW5PcHRpb25zKSB7XG4gICAgICAvLyBmb3JtYXQgdGhlIGNvbHVtbiB3aXRoIHRoZSBwcm9wZXJ0aWVzIHRoZSBjb2x1bW4gcGlja2VyIG5lZWRzXG4gICAgICBjb25zdCBjb2xJbmRleCA9IHZpc2libGVDb2x1bW5JZHMuaW5kZXhPZihjb2x1bW5PcHRpb24uaWQpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkQ29sdW1uOiBDb2x1bW4gPSB7XG4gICAgICAgIGFsd2F5c0Rpc3BsYXllZDogY29sdW1uT3B0aW9uLmFsd2F5c0Rpc3BsYXllZCxcbiAgICAgICAgaWQ6IGNvbHVtbk9wdGlvbi5pZCxcbiAgICAgICAgbGFiZWw6IGNvbHVtbk9wdGlvbi5sYWJlbCxcbiAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbk9wdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNTZWxlY3RlZDogY29sSW5kZXggIT09IC0xLFxuICAgICAgfTtcblxuICAgICAgLy8gaWYgY29sdW1uIHBpY2tlciBzb3J0aW5nIGlzIGN1cnJlbnRseSBlbmFibGVkIHNvcnQgY29sdW1ucyBieSBvcmRlciBkaXNwbGF5ZWQgdGhlbiBhbHBoYWJldGljYWxcbiAgICAgIC8vIGVsc2UgZGlzcGxheSBjb2x1bW4gaW4gb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgY29sdW1uT3B0aW9uc1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmNvbnRleHQuY29sdW1uUGlja2VyU29ydFN0cmF0ZWd5ID09PVxuICAgICAgICBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlclNvcnRTdHJhdGVneS5TZWxlY3RlZFRoZW5BbHBoYWJldGljYWxcbiAgICAgICkge1xuICAgICAgICBpZiAoZm9ybWF0dGVkQ29sdW1uLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICBmb3JtYXR0ZWRDb2x1bW5PcHRpb25zW2NvbEluZGV4XSA9IGZvcm1hdHRlZENvbHVtbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bnNlbGVjdGVkQ29sdW1uT3B0aW9ucy5wdXNoKGZvcm1hdHRlZENvbHVtbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1hdHRlZENvbHVtbk9wdGlvbnMucHVzaChmb3JtYXR0ZWRDb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGNvbHVtbiBwaWNrZXIgc29ydGluZyBpcyBlbmFibGVkLCBzb3J0IHRoZSBjb2x1bW5zIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgZGlzcGxheWVkXG4gICAgLy8gYW5kIGFkZCB0aGVtIGFmdGVyIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIG9wdGlvbnNcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbnRleHQuY29sdW1uUGlja2VyU29ydFN0cmF0ZWd5ID09PVxuICAgICAgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJTb3J0U3RyYXRlZ3kuU2VsZWN0ZWRUaGVuQWxwaGFiZXRpY2FsXG4gICAgKSB7XG4gICAgICB1bnNlbGVjdGVkQ29sdW1uT3B0aW9ucy5zb3J0KChjb2wxLCBjb2wyKSA9PlxuICAgICAgICBjb2wxLmxhYmVsLmxvY2FsZUNvbXBhcmUoY29sMi5sYWJlbClcbiAgICAgICk7XG4gICAgICBmb3JtYXR0ZWRDb2x1bW5PcHRpb25zID0gZm9ybWF0dGVkQ29sdW1uT3B0aW9ucy5jb25jYXQoXG4gICAgICAgIHVuc2VsZWN0ZWRDb2x1bW5PcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRDb2x1bW5PcHRpb25zO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsPlxuICA8c2t5LW1vZGFsLWhlYWRlcj5cbiAgICB7eyAnc2t5dXhfZGF0YV9tYW5hZ2VyX2NvbHVtbl9waWNrZXJfdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvc2t5LW1vZGFsLWhlYWRlcj5cbiAgPHNreS1tb2RhbC1jb250ZW50IGNsYXNzPVwic2t5LWRhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLWNvbnRlbnRcIj5cbiAgICA8c2t5LWRhdGEtbWFuYWdlcj5cbiAgICAgIDxza3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXI+IDwvc2t5LWRhdGEtbWFuYWdlci10b29sYmFyPlxuXG4gICAgICA8c2t5LWRhdGEtdmlldyBbdmlld0lkXT1cInZpZXdDb25maWcuaWRcIj5cbiAgICAgICAgPHNreS1yZXBlYXRlciBleHBhbmRNb2RlPVwibm9uZVwiPlxuICAgICAgICAgIDxza3ktcmVwZWF0ZXItaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBkaXNwbGF5ZWRDb2x1bW5EYXRhXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgWyhpc1NlbGVjdGVkKV09XCJjb2x1bW4uaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAoaXNTZWxlY3RlZENoYW5nZSk9XCJvbklzU2VsZWN0ZWRDaGFuZ2UoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICB7eyBjb2x1bW4ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICA8c2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAge3sgY29sdW1uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbT5cbiAgICAgICAgPC9za3ktcmVwZWF0ZXI+XG4gICAgICA8L3NreS1kYXRhLXZpZXc+XG4gICAgPC9za3ktZGF0YS1tYW5hZ2VyPlxuICA8L3NreS1tb2RhbC1jb250ZW50PlxuICA8c2t5LW1vZGFsLWZvb3Rlcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci1mb290ZXItc3RhY2tlZC1pbmRpY2F0b3JcIlxuICAgICAgKm5nSWY9XCIhaXNBbnlEaXNwbGF5ZWRDb2x1bW5TZWxlY3RlZFwiXG4gICAgPlxuICAgICAgPHNreS1zdGF0dXMtaW5kaWNhdG9yIGRlc2NyaXB0aW9uVHlwZT1cImVycm9yXCIgaW5kaWNhdG9yVHlwZT1cImRhbmdlclwiPlxuICAgICAgICB7e1xuICAgICAgICAgICdza3l1eF9kYXRhX21hbmFnZXJfc2VsZWN0X2NvbHVtbl9zdGF0dXNfaW5kaWNhdG9yX3RpdGxlJ1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgfX1cbiAgICAgIDwvc2t5LXN0YXR1cy1pbmRpY2F0b3I+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgc2t5LWNtcC1pZD1cImFwcGx5LWNoYW5nZXNcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzQW55RGlzcGxheWVkQ29sdW1uU2VsZWN0ZWRcIlxuICAgICAgKGNsaWNrKT1cImFwcGx5Q2hhbmdlcygpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfZGF0YV9tYW5hZ2VyX2FwcGx5X2NoYW5nZXNfYnV0dG9uX3RpdGxlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHNreS1jbXAtaWQ9XCJjYW5jZWxcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGlua1wiXG4gICAgICAoY2xpY2spPVwiY2FuY2VsQ2hhbmdlcygpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfZGF0YV9tYW5hZ2VyX2NhbmNlbF9idXR0b25fdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gIDwvc2t5LW1vZGFsLWZvb3Rlcj5cbjwvc2t5LW1vZGFsPlxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3pGOztHQUVHO0FBUUgsTUFBTSxPQUFPLG1DQUFtQztJQTRCOUMsWUFDUyxPQUEwQyxFQUMxQyxrQkFBeUMsRUFDekMsUUFBMEI7UUFGMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUM7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QU8sQ0FBQyx3QkFBd0I7WUFDckMsc0NBQXNDLENBQUMsd0JBQXdCLEVBQy9EO1lBQ0EsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFO2dCQUM5QixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFlLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQy9DO1NBQ0Y7YUFBTTtZQUNMLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM5QztLQUNGO0lBRUQseUZBQXlGO0lBQ3pGLHFEQUFxRDtJQUNyRCxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCO1FBQ3JDLHNDQUFzQyxDQUFDLHdCQUF3QixFQUMvRDtRQUNBLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ3JDLENBQUM7UUFDRixzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQ3BELHVCQUF1QixDQUN4QixDQUFDO0tBQ0g7SUFFRCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7Z0lBaExVLG1DQUFtQztvSEFBbkMsbUNBQW1DLHlEQUhuQyxDQUFDLHFCQUFxQixDQUFDLDBCQ2pDcEMsbTREQXdEQTsyRkRwQmEsbUNBQW1DO2tCQVAvQyxTQUFTOytCQUNFLGdDQUFnQyxhQUcvQixDQUFDLHFCQUFxQixDQUFDLG1CQUNqQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGEtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLW9wdGlvbic7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlclNvcnRTdHJhdGVneSB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci1zb3J0LXN0cmF0ZWd5JztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlJztcbmltcG9ydCB7IFNreURhdGFWaWV3Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtdmlldy1jb25maWcnO1xuXG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgQ29sdW1uIGV4dGVuZHMgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJPcHRpb24ge1xuICBpc1NlbGVjdGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lEYXRhTWFuYWdlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIHB1YmxpYyBnZXQgZGF0YVN0YXRlKCk6IFNreURhdGFNYW5hZ2VyU3RhdGUge1xuICAgIHJldHVybiB0aGlzLiNfZGF0YVN0YXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhU3RhdGUodmFsdWU6IFNreURhdGFNYW5hZ2VyU3RhdGUpIHtcbiAgICB0aGlzLiNfZGF0YVN0YXRlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uRGF0YTogQ29sdW1uW10gPSBbXTtcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbkRhdGE6IENvbHVtbltdID0gW107XG4gIHB1YmxpYyB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZyA9IHtcbiAgICBpZDogJ2NvbHVtblBpY2tlcicsXG4gICAgbmFtZTogJ0NvbHVtbiBQaWNrZXInLFxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXG4gICAgc2VhcmNoRXhwYW5kTW9kZTogJ2ZpdCcsXG4gICAgbXVsdGlzZWxlY3RUb29sYmFyRW5hYmxlZDogdHJ1ZSxcbiAgICBvblNlbGVjdEFsbENsaWNrOiB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpLFxuICAgIG9uQ2xlYXJBbGxDbGljazogdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpLFxuICB9O1xuXG4gIHB1YmxpYyBpc0FueURpc3BsYXllZENvbHVtblNlbGVjdGVkID0gZmFsc2U7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZGF0YVN0YXRlID0gbmV3IFNreURhdGFNYW5hZ2VyU3RhdGUoe30pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb250ZXh0OiBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlckNvbnRleHQsXG4gICAgcHVibGljIGRhdGFNYW5hZ2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBpbnN0YW5jZTogU2t5TW9kYWxJbnN0YW5jZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlLmluaXREYXRhTWFuYWdlcih7XG4gICAgICBhY3RpdmVWaWV3SWQ6IHRoaXMudmlld0NvbmZpZy5pZCxcbiAgICAgIGRhdGFNYW5hZ2VyQ29uZmlnOiB7fSxcbiAgICAgIGRlZmF1bHREYXRhU3RhdGU6IHRoaXMuZGF0YVN0YXRlLFxuICAgIH0pO1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlLmluaXREYXRhVmlldyh0aGlzLnZpZXdDb25maWcpO1xuXG4gICAgdGhpcy5jb2x1bW5EYXRhID0gdGhpcy4jZm9ybWF0Q29sdW1uT3B0aW9ucygpO1xuXG4gICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKCdjb2x1bW5QaWNrZXInKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhU3RhdGUgPSBzdGF0ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YSA9IHRoaXMuc2VhcmNoQ29sdW1ucyhcbiAgICAgIHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoKGNvbCkgPT4gIWNvbC5hbHdheXNEaXNwbGF5ZWQpXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmRhdGFTdGF0ZS5vbmx5U2hvd1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbkRhdGEgPSB0aGlzLmRpc3BsYXllZENvbHVtbkRhdGEuZmlsdGVyKFxuICAgICAgICAoY29sKSA9PiBjb2wuaXNTZWxlY3RlZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzQW55RGlzcGxheWVkQ29sdW1uU2VsZWN0ZWQgPSB0aGlzLmRpc3BsYXllZENvbHVtbkRhdGEuc29tZShcbiAgICAgIChjb2wpID0+IGNvbC5pc1NlbGVjdGVkXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hDb2x1bW5zKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uW10ge1xuICAgIGxldCBzZWFyY2hlZENvbHVtbnMgPSBjb2x1bW5zO1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPVxuICAgICAgdGhpcy5kYXRhU3RhdGUgJiYgdGhpcy5kYXRhU3RhdGUuc2VhcmNoVGV4dD8udG9VcHBlckNhc2UoKTtcblxuICAgIGlmIChzZWFyY2hUZXh0KSB7XG4gICAgICBzZWFyY2hlZENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGl0ZW0pIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgcHJvcGVydHkpICYmXG4gICAgICAgICAgICAocHJvcGVydHkgPT09ICdsYWJlbCcgfHwgcHJvcGVydHkgPT09ICdkZXNjcmlwdGlvbicpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVRleHQgPSBpdGVtW3Byb3BlcnR5XT8udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVRleHQgJiYgcHJvcGVydHlUZXh0LmluZGV4T2Yoc2VhcmNoVGV4dCkgPiAtMSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaGVkQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5EYXRhLmZvckVhY2goKGNvbHVtbikgPT4gKGNvbHVtbi5pc1NlbGVjdGVkID0gdHJ1ZSkpO1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uRGF0YS5mb3JFYWNoKChjb2x1bW4pID0+IChjb2x1bW4uaXNTZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gIH1cblxuICBwdWJsaWMgb25Jc1NlbGVjdGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW5jZS5jYW5jZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb250ZXh0LmRpc3BsYXllZENvbHVtbklkcy5maW5kSW5kZXgoKGNvbElkKSA9PiBjb2xJZCA9PT0gaWQpICE9PSAtMVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2Uuc2F2ZShcbiAgICAgIHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoKGNvbCkgPT4gY29sLmlzU2VsZWN0ZWQgfHwgY29sLmFsd2F5c0Rpc3BsYXllZClcbiAgICApO1xuICB9XG5cbiAgI2Zvcm1hdENvbHVtbk9wdGlvbnMoKTogQ29sdW1uW10ge1xuICAgIGNvbnN0IGFsbENvbHVtbk9wdGlvbnMgPSB0aGlzLmNvbnRleHQuY29sdW1uT3B0aW9ucztcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1uSWRzID0gdGhpcy5jb250ZXh0LmRpc3BsYXllZENvbHVtbklkcztcbiAgICBsZXQgZm9ybWF0dGVkQ29sdW1uT3B0aW9uczogQ29sdW1uW10gPSBbXTtcbiAgICBjb25zdCB1bnNlbGVjdGVkQ29sdW1uT3B0aW9uczogQ29sdW1uW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uT3B0aW9uIG9mIGFsbENvbHVtbk9wdGlvbnMpIHtcbiAgICAgIC8vIGZvcm1hdCB0aGUgY29sdW1uIHdpdGggdGhlIHByb3BlcnRpZXMgdGhlIGNvbHVtbiBwaWNrZXIgbmVlZHNcbiAgICAgIGNvbnN0IGNvbEluZGV4ID0gdmlzaWJsZUNvbHVtbklkcy5pbmRleE9mKGNvbHVtbk9wdGlvbi5pZCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRDb2x1bW46IENvbHVtbiA9IHtcbiAgICAgICAgYWx3YXlzRGlzcGxheWVkOiBjb2x1bW5PcHRpb24uYWx3YXlzRGlzcGxheWVkLFxuICAgICAgICBpZDogY29sdW1uT3B0aW9uLmlkLFxuICAgICAgICBsYWJlbDogY29sdW1uT3B0aW9uLmxhYmVsLFxuICAgICAgICBkZXNjcmlwdGlvbjogY29sdW1uT3B0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICBpc1NlbGVjdGVkOiBjb2xJbmRleCAhPT0gLTEsXG4gICAgICB9O1xuXG4gICAgICAvLyBpZiBjb2x1bW4gcGlja2VyIHNvcnRpbmcgaXMgY3VycmVudGx5IGVuYWJsZWQgc29ydCBjb2x1bW5zIGJ5IG9yZGVyIGRpc3BsYXllZCB0aGVuIGFscGhhYmV0aWNhbFxuICAgICAgLy8gZWxzZSBkaXNwbGF5IGNvbHVtbiBpbiBvcmRlciB0aGV5IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBjb2x1bW5PcHRpb25zXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY29udGV4dC5jb2x1bW5QaWNrZXJTb3J0U3RyYXRlZ3kgPT09XG4gICAgICAgIFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyU29ydFN0cmF0ZWd5LlNlbGVjdGVkVGhlbkFscGhhYmV0aWNhbFxuICAgICAgKSB7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRDb2x1bW4uaXNTZWxlY3RlZCkge1xuICAgICAgICAgIGZvcm1hdHRlZENvbHVtbk9wdGlvbnNbY29sSW5kZXhdID0gZm9ybWF0dGVkQ29sdW1uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVuc2VsZWN0ZWRDb2x1bW5PcHRpb25zLnB1c2goZm9ybWF0dGVkQ29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0dGVkQ29sdW1uT3B0aW9ucy5wdXNoKGZvcm1hdHRlZENvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgY29sdW1uIHBpY2tlciBzb3J0aW5nIGlzIGVuYWJsZWQsIHNvcnQgdGhlIGNvbHVtbnMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBkaXNwbGF5ZWRcbiAgICAvLyBhbmQgYWRkIHRoZW0gYWZ0ZXIgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgb3B0aW9uc1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29udGV4dC5jb2x1bW5QaWNrZXJTb3J0U3RyYXRlZ3kgPT09XG4gICAgICBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlclNvcnRTdHJhdGVneS5TZWxlY3RlZFRoZW5BbHBoYWJldGljYWxcbiAgICApIHtcbiAgICAgIHVuc2VsZWN0ZWRDb2x1bW5PcHRpb25zLnNvcnQoKGNvbDEsIGNvbDIpID0+XG4gICAgICAgIGNvbDEubGFiZWwubG9jYWxlQ29tcGFyZShjb2wyLmxhYmVsKVxuICAgICAgKTtcbiAgICAgIGZvcm1hdHRlZENvbHVtbk9wdGlvbnMgPSBmb3JtYXR0ZWRDb2x1bW5PcHRpb25zLmNvbmNhdChcbiAgICAgICAgdW5zZWxlY3RlZENvbHVtbk9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZENvbHVtbk9wdGlvbnM7XG4gIH1cbn1cbiIsIjxza3ktbW9kYWw+XG4gIDxza3ktbW9kYWwtaGVhZGVyPlxuICAgIHt7ICdza3l1eF9kYXRhX21hbmFnZXJfY29sdW1uX3BpY2tlcl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgPC9za3ktbW9kYWwtaGVhZGVyPlxuICA8c2t5LW1vZGFsLWNvbnRlbnQgY2xhc3M9XCJza3ktZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXItY29udGVudFwiPlxuICAgIDxza3ktZGF0YS1tYW5hZ2VyPlxuICAgICAgPHNreS1kYXRhLW1hbmFnZXItdG9vbGJhcj4gPC9za3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXI+XG5cbiAgICAgIDxza3ktZGF0YS12aWV3IFt2aWV3SWRdPVwidmlld0NvbmZpZy5pZFwiPlxuICAgICAgICA8c2t5LXJlcGVhdGVyIGV4cGFuZE1vZGU9XCJub25lXCI+XG4gICAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbkRhdGFcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbKGlzU2VsZWN0ZWQpXT1cImNvbHVtbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgIChpc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXNTZWxlY3RlZENoYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbS10aXRsZT5cbiAgICAgICAgICAgIDxza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICB7eyBjb2x1bW4uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudD5cbiAgICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgICAgICA8L3NreS1yZXBlYXRlcj5cbiAgICAgIDwvc2t5LWRhdGEtdmlldz5cbiAgICA8L3NreS1kYXRhLW1hbmFnZXI+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LWRhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLWZvb3Rlci1zdGFja2VkLWluZGljYXRvclwiXG4gICAgICAqbmdJZj1cIiFpc0FueURpc3BsYXllZENvbHVtblNlbGVjdGVkXCJcbiAgICA+XG4gICAgICA8c2t5LXN0YXR1cy1pbmRpY2F0b3IgZGVzY3JpcHRpb25UeXBlPVwiZXJyb3JcIiBpbmRpY2F0b3JUeXBlPVwiZGFuZ2VyXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgJ3NreXV4X2RhdGFfbWFuYWdlcl9zZWxlY3RfY29sdW1uX3N0YXR1c19pbmRpY2F0b3JfdGl0bGUnXG4gICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICB9fVxuICAgICAgPC9za3ktc3RhdHVzLWluZGljYXRvcj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICBza3ktY21wLWlkPVwiYXBwbHktY2hhbmdlc1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNBbnlEaXNwbGF5ZWRDb2x1bW5TZWxlY3RlZFwiXG4gICAgICAoY2xpY2spPVwiYXBwbHlDaGFuZ2VzKClcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF9kYXRhX21hbmFnZXJfYXBwbHlfY2hhbmdlc19idXR0b25fdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgc2t5LWNtcC1pZD1cImNhbmNlbFwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rXCJcbiAgICAgIChjbGljayk9XCJjYW5jZWxDaGFuZ2VzKClcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF9kYXRhX21hbmFnZXJfY2FuY2VsX2J1dHRvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9za3ktbW9kYWwtZm9vdGVyPlxuPC9za3ktbW9kYWw+XG4iXX0=
@@ -1,6 +1,7 @@
1
+ // TODO: In a future breaking change convert this to an interface
1
2
  /**
2
3
  * Sets the state of the filters.
3
4
  */
4
5
  export class SkyDataManagerFilterModalContext {
5
6
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLWZpbHRlci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci1maWx0ZXItY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQ0FBZ0M7Q0FLNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lEYXRhTWFuYWdlckZpbHRlckRhdGEgfSBmcm9tICcuL21vZGVscy9kYXRhLW1hbmFnZXItZmlsdGVyLWRhdGEnO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YXRlIG9mIHRoZSBmaWx0ZXJzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJGaWx0ZXJNb2RhbENvbnRleHQge1xuICAvKipcbiAgICogU2V0cyB0aGUgc3RhdGUgb2YgdGhlIGZpbHRlcnMuXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyRGF0YTogU2t5RGF0YU1hbmFnZXJGaWx0ZXJEYXRhO1xufVxuIl19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLWZpbHRlci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci1maWx0ZXItY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpRUFBaUU7QUFDakU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0NBSzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJGaWx0ZXJEYXRhIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLWZpbHRlci1kYXRhJztcblxuLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIGNvbnZlcnQgdGhpcyB0byBhbiBpbnRlcmZhY2Vcbi8qKlxuICogU2V0cyB0aGUgc3RhdGUgb2YgdGhlIGZpbHRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlckZpbHRlck1vZGFsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGF0ZSBvZiB0aGUgZmlsdGVycy5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXJEYXRhOiBTa3lEYXRhTWFuYWdlckZpbHRlckRhdGEgfCB1bmRlZmluZWQ7XG59XG4iXX0=