@annalib/anna-core 33.0.2 → 33.1.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.
- package/esm2022/annalib-anna-core.mjs +5 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.mjs +52 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +49 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.mjs +45 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +11 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +20 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +12 -0
- package/esm2022/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.mjs +26 -0
- package/esm2022/lib/anna-core-shared-lib/constants/anna-application.constants.mjs +5 -0
- package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +49 -0
- package/esm2022/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +271 -0
- package/esm2022/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +46 -0
- package/esm2022/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +41 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-licensing-table.model.mjs +26 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +67 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-sort.model.mjs +7 -0
- package/esm2022/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +32 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +39 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +27 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +21 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +53 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +27 -0
- package/esm2022/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +17 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +240 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +1522 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +149 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.mjs +60 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +94 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +80 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +68 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-regex-patterns.service.mjs +20 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-sort.service.mjs +177 -0
- package/esm2022/lib/anna-core-shared-lib/services/anna-spinner-loader.service.mjs +24 -0
- package/esm2022/lib/anna-core-shared-lib/services/update-station-id.service.mjs +16 -0
- package/esm2022/lib/anna-core.module.mjs +221 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +160 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-single-select/anna-single-select.component.mjs +155 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-single-select/models/anna-single-select.model.mjs +12 -0
- package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +359 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +264 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +189 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +319 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +302 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +1103 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +69 -0
- package/esm2022/lib/anna-generic-table-lib/services/gt-table-related-common-functions.service.mjs +99 -0
- package/esm2022/public-api.mjs +65 -0
- package/fesm2022/annalib-anna-core.mjs +419 -208
- package/fesm2022/annalib-anna-core.mjs.map +1 -1
- package/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.d.ts +15 -0
- package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +1 -0
- package/lib/anna-core-shared-lib/models/anna-licensing-table.model.d.ts +18 -0
- package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +2 -2
- package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +1 -0
- package/lib/anna-core-shared-lib/services/update-station-id.service.d.ts +6 -0
- package/lib/anna-core.module.d.ts +2 -1
- package/lib/anna-generic-table-lib/services/gt-table-related-common-functions.service.d.ts +11 -0
- package/package.json +9 -7
- package/public-api.d.ts +4 -0
- package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +0 -2
- package/src/lib/anna-common-scss/_button.scss +1 -1
- package/src/lib/anna-common-scss/_customDropdown.scss +1 -2
- package/src/lib/anna-common-scss/_date-picker-form.scss +1 -1
- package/src/lib/anna-common-scss/_filters.scss +1 -2
- package/src/lib/anna-common-scss/_gt-table.scss +3 -2
- package/src/lib/anna-common-scss/_mat-button-toggle.scss +1 -1
- package/src/lib/anna-common-scss/_popup-filter-toggle-button.scss +1 -1
- package/src/lib/anna-common-scss/_sort.scss +1 -1
- package/src/lib/anna-common-scss/style.scss +1 -7
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
|
|
2
|
+
import { NgClass, NgFor, NgIf } from "@angular/common";
|
|
3
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
4
|
+
import { FormsModule } from "@angular/forms";
|
|
5
|
+
import { cloneDeep, isEqual } from "lodash-es";
|
|
6
|
+
import { AnnaFilterService } from "../../../../anna-core-shared-lib/services/anna-filter.service";
|
|
7
|
+
import { AnnaSortService } from "../../../../anna-core-shared-lib/services/anna-sort.service";
|
|
8
|
+
import { AnnaSortComponent } from "../../anna-sort/anna-sort.component";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../../anna-core-shared-lib/services/anna-sort.service";
|
|
11
|
+
import * as i2 from "../../../../anna-core-shared-lib/services/anna-filter.service";
|
|
12
|
+
import * as i3 from "@angular/forms";
|
|
13
|
+
export class AnnaColumnCheckboxFilterComponent {
|
|
14
|
+
constructor(annaSortService, annaFilterService) {
|
|
15
|
+
this.annaSortService = annaSortService;
|
|
16
|
+
this.annaFilterService = annaFilterService;
|
|
17
|
+
this.filterAppliedToTable = new EventEmitter();
|
|
18
|
+
this.sortingAppliedToTable = new EventEmitter();
|
|
19
|
+
this.getSortType = new EventEmitter();
|
|
20
|
+
this.closeTooltip = new EventEmitter();
|
|
21
|
+
this.tempSortOrder = null;
|
|
22
|
+
this.showSortComponent = false;
|
|
23
|
+
this.showFilterComponent = false;
|
|
24
|
+
this.margin = 5;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);
|
|
28
|
+
}
|
|
29
|
+
populateTooltipDataBasedOnSelectedRadio(activeTab, reload) {
|
|
30
|
+
const header = activeTab.key;
|
|
31
|
+
this.searchItem = null;
|
|
32
|
+
this.showSortComponent = activeTab.isSortRequired;
|
|
33
|
+
this.showFilterComponent = activeTab.isFilterRequired;
|
|
34
|
+
this.showSplitedOptions = activeTab.showSplitedOptions;
|
|
35
|
+
this.splitDelimiter = this.showSplitedOptions
|
|
36
|
+
? activeTab.splitDelimiter ?? this.annaFilterService.DEFAULT_SPLIT_SEPARATOR
|
|
37
|
+
: "";
|
|
38
|
+
this.tempSortOrder = null;
|
|
39
|
+
this.isFilterChanged = false;
|
|
40
|
+
this.isSortChanged = false;
|
|
41
|
+
this.annaFilterService.selectedRadio = header;
|
|
42
|
+
this.selectedRadioKey = `${header}${this.showSplitedOptions ? this.annaFilterService.SPLITED_CHECKBOX_FILTER_KEY : ""}`;
|
|
43
|
+
if (reload) {
|
|
44
|
+
setTimeout(() => {
|
|
45
|
+
this.createFilterTooltipData(activeTab, header);
|
|
46
|
+
}, 100);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.createFilterTooltipData(activeTab, header);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
createFilterTooltipData(activeTab, key) {
|
|
53
|
+
this.showSortComponent = activeTab.isSortRequired;
|
|
54
|
+
this.showFilterComponent = activeTab.isFilterRequired;
|
|
55
|
+
this.disableCheckboxApply = true;
|
|
56
|
+
if (this.showFilterComponent) {
|
|
57
|
+
this.getCheckboxData(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
getCheckboxData(header) {
|
|
61
|
+
const tooltipOptions = this.createListForCheckboxFilter(header);
|
|
62
|
+
const [clonedTooltipOptions, updatedTooltipOptions, selectedItems, unselectedItems] = this.annaFilterService.getClonedTooltipAndTooltipOption(tooltipOptions, "label");
|
|
63
|
+
this.clonedTooltipOptions = clonedTooltipOptions;
|
|
64
|
+
this.tooltipOptions = updatedTooltipOptions;
|
|
65
|
+
this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(this.tooltipOptions.length, this.margin);
|
|
66
|
+
this.disableSelectAll = unselectedItems.length === 0;
|
|
67
|
+
this.disableClearAll = selectedItems.length === 0;
|
|
68
|
+
this.selectedCheckboxOptionsCount = selectedItems.length;
|
|
69
|
+
}
|
|
70
|
+
createListForCheckboxFilter(header) {
|
|
71
|
+
const optionData = this.annaFilterService.getFilterOptionsData(this.tableData, this.clonedTableData);
|
|
72
|
+
const tooltipOptions = this.annaFilterService.createListForCheckboxFilter(header, optionData, this.showSplitedOptions, this.splitDelimiter);
|
|
73
|
+
return tooltipOptions;
|
|
74
|
+
}
|
|
75
|
+
selectUnselectListCheckbox(tooltipOptions, header) {
|
|
76
|
+
if (this.annaFilterService.tooltipSelectedMap.has(header)) {
|
|
77
|
+
const selectedValueSet = new Set(this.annaFilterService.tooltipSelectedMap.get(header));
|
|
78
|
+
tooltipOptions.forEach((item) => {
|
|
79
|
+
item.isSelected = selectedValueSet.has(item.value);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
tooltipOptions.forEach((item) => {
|
|
84
|
+
item.isSelected = true;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
unCheckAllCheckbox() {
|
|
89
|
+
this.annaFilterService.unCheckAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);
|
|
90
|
+
this.selectedCheckboxOptionsCount = 0;
|
|
91
|
+
this.disableSelectAll = false;
|
|
92
|
+
this.disableClearAll = true;
|
|
93
|
+
this.disableCheckboxApply = true;
|
|
94
|
+
}
|
|
95
|
+
selectAllCheckbox() {
|
|
96
|
+
this.annaFilterService.selectAllCheckbox(this.tooltipOptions, this.clonedTooltipOptions);
|
|
97
|
+
this.selectedCheckboxOptionsCount = this.tooltipOptions.length;
|
|
98
|
+
this.disableSelectAll = true;
|
|
99
|
+
this.disableClearAll = false;
|
|
100
|
+
this.disableCheckboxFilterApplyButton();
|
|
101
|
+
}
|
|
102
|
+
searchForTheItem(str) {
|
|
103
|
+
if (str) {
|
|
104
|
+
this.tooltipOptions = this.annaFilterService.getFilteredOptionAsBoldString(str, this.clonedTooltipOptions);
|
|
105
|
+
this.calculateHeightForFilterTooltip();
|
|
106
|
+
if (this.tooltipOptions.length > 0) {
|
|
107
|
+
const [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);
|
|
108
|
+
this.disableSelectAll = unselectedItems.length === 0;
|
|
109
|
+
this.disableClearAll = selectedItems.length === 0;
|
|
110
|
+
this.selectedCheckboxOptionsCount = selectedItems.length;
|
|
111
|
+
this.disableCheckboxApply = selectedItems.length === 0 || !this.checkIfCheckboxTooltipIsFiltered();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
[
|
|
115
|
+
this.selectedCheckboxOptionsCount,
|
|
116
|
+
this.disableCheckboxApply,
|
|
117
|
+
this.disableClearAll,
|
|
118
|
+
this.disableSelectAll,
|
|
119
|
+
] = this.annaFilterService.disableAllBtnsWhenThereAreNoFilteredResults();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.tooltipOptions = cloneDeep(this.clonedTooltipOptions);
|
|
124
|
+
this.calculateHeightForFilterTooltip();
|
|
125
|
+
const [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);
|
|
126
|
+
this.selectedCheckboxOptionsCount = selectedItems.length;
|
|
127
|
+
this.disableSelectAll = unselectedItems.length === 0;
|
|
128
|
+
this.disableClearAll = selectedItems.length === 0;
|
|
129
|
+
this.disableCheckboxFilterApplyButton();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
calculateHeightForFilterTooltip() {
|
|
133
|
+
const dataLength = this.tooltipOptions.length === 0 ? 1 : this.tooltipOptions.length;
|
|
134
|
+
this.heightOfCheckboxTooltipFilter = this.annaFilterService.getHeightOfCheckboxTooltipFilter(dataLength, this.margin);
|
|
135
|
+
}
|
|
136
|
+
disableCheckboxFilterApplyButton() {
|
|
137
|
+
const selectedItems = this.showFilterComponent ? this.tooltipOptions.filter((item) => item.isSelected) : [];
|
|
138
|
+
if (this.showFilterComponent && this.showSortComponent) {
|
|
139
|
+
const isFilterChanged = this.checkIfCheckboxTooltipIsFiltered();
|
|
140
|
+
const isSortChanged = this.checkIfSortingChanged();
|
|
141
|
+
this.disableCheckboxApply = selectedItems.length === 0 || (!isSortChanged && !isFilterChanged);
|
|
142
|
+
}
|
|
143
|
+
else if (this.showFilterComponent) {
|
|
144
|
+
this.disableCheckboxApply = selectedItems.length === 0 || !this.checkIfCheckboxTooltipIsFiltered();
|
|
145
|
+
}
|
|
146
|
+
else if (this.showSortComponent) {
|
|
147
|
+
this.disableCheckboxApply = !this.checkIfSortingChanged();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
checkIfSortingChanged() {
|
|
151
|
+
this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);
|
|
152
|
+
return this.isSortChanged;
|
|
153
|
+
}
|
|
154
|
+
checkIfCheckboxTooltipIsFiltered() {
|
|
155
|
+
const previousSelectedValue = this.annaFilterService.getCheckboxPreviousSelectedValue(this.clonedTableData);
|
|
156
|
+
const currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);
|
|
157
|
+
this.isFilterChanged = !isEqual(currentSelectedValue, previousSelectedValue);
|
|
158
|
+
return this.isFilterChanged;
|
|
159
|
+
}
|
|
160
|
+
applyFilters() {
|
|
161
|
+
this.applyListFilters();
|
|
162
|
+
this.applySortingOnFilteredData();
|
|
163
|
+
this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
|
|
164
|
+
this.emitData();
|
|
165
|
+
}
|
|
166
|
+
applyListFilters() {
|
|
167
|
+
if (this.showFilterComponent && this.isFilterChanged) {
|
|
168
|
+
const currentSelectedValue = this.annaFilterService.getCheckboxCurrentSelectedValue(this.searchItem, this.tooltipOptions);
|
|
169
|
+
this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedValue);
|
|
170
|
+
this.annaFilterService.tooltipSelectedMap.set(this.selectedRadioKey, currentSelectedValue);
|
|
171
|
+
this.tableData = this.annaFilterService.filterData(this.clonedTableData, "");
|
|
172
|
+
this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
applySortingOnFilteredData() {
|
|
176
|
+
if (this.showSortComponent) {
|
|
177
|
+
if (this.isSortChanged) {
|
|
178
|
+
this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);
|
|
179
|
+
}
|
|
180
|
+
else if (this.isFilterChanged) {
|
|
181
|
+
this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if (this.isFilterChanged) {
|
|
185
|
+
this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
emitData() {
|
|
189
|
+
if (this.isFilterChanged && this.isSortChanged) {
|
|
190
|
+
this.filterAppliedToTable.emit(this.tableData);
|
|
191
|
+
}
|
|
192
|
+
else if (this.isFilterChanged) {
|
|
193
|
+
this.filterAppliedToTable.emit(this.tableData);
|
|
194
|
+
}
|
|
195
|
+
else if (this.isSortChanged) {
|
|
196
|
+
this.getSortType.emit(this.tempSortOrder);
|
|
197
|
+
this.sortingAppliedToTable.emit(this.tableData);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
selectUnselectCheckbox(data) {
|
|
201
|
+
this.annaFilterService.selectUnselectCheckbox(data, this.clonedTooltipOptions);
|
|
202
|
+
const [selectedItems, unselectedItems] = this.annaFilterService.getSelectedAndUnselectedItems(this.tooltipOptions);
|
|
203
|
+
this.disableClearAll = selectedItems.length === 0;
|
|
204
|
+
this.disableSelectAll = unselectedItems.length === 0;
|
|
205
|
+
this.selectedCheckboxOptionsCount = selectedItems.length;
|
|
206
|
+
this.disableCheckboxFilterApplyButton();
|
|
207
|
+
}
|
|
208
|
+
closeCheckboxFilter() {
|
|
209
|
+
if (this.toolTipdata) {
|
|
210
|
+
this.revert();
|
|
211
|
+
}
|
|
212
|
+
this.closeTooltip.emit();
|
|
213
|
+
}
|
|
214
|
+
revert() {
|
|
215
|
+
this.tempTooltipData = cloneDeep(this.toolTipdata);
|
|
216
|
+
this.annaFilterService.tooltipMap.set(this.annaFilterService.selectedRadio, this.tempTooltipData);
|
|
217
|
+
this.toolTipdata = null;
|
|
218
|
+
}
|
|
219
|
+
clearSearchedItem() {
|
|
220
|
+
this.searchItem = "";
|
|
221
|
+
this.searchForTheItem("");
|
|
222
|
+
}
|
|
223
|
+
storeSortTypeInTempVariable(event) {
|
|
224
|
+
this.tempSortOrder = event;
|
|
225
|
+
this.disableCheckboxFilterApplyButton();
|
|
226
|
+
}
|
|
227
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaColumnCheckboxFilterComponent, deps: [{ token: i1.AnnaSortService }, { token: i2.AnnaFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
228
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnnaColumnCheckboxFilterComponent, isStandalone: true, selector: "anna-core-anna-column-checkbox-filter", inputs: { showFilterHeaderTabs: "showFilterHeaderTabs", isLurAndCsrComponent: "isLurAndCsrComponent", tableData: "tableData", clonedTableData: "clonedTableData", filterTabObjects: "filterTabObjects" }, outputs: { filterAppliedToTable: "filterAppliedToTable", sortingAppliedToTable: "sortingAppliedToTable", getSortType: "getSortType", closeTooltip: "closeTooltip" }, ngImport: i0, template: "<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div\r\n [ngClass]=\"{ 'full-width': filterTabObjects.length === 1 }\"\r\n *ngFor=\"let data of filterTabObjects\"\r\n >\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio === data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"checkbox-sort\"\r\n *ngIf=\"showSortComponent\"\r\n>\r\n <anna-core-sort-lib\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n ></anna-core-sort-lib>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <p class=\"d-flex justify-content-between\">\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableClearAll\"\r\n (click)=\"unCheckAllCheckbox()\"\r\n >\r\n Clear all\r\n </button>\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableSelectAll\"\r\n (click)=\"selectAllCheckbox()\"\r\n >\r\n Select all\r\n </button>\r\n </p>\r\n <p class=\"search-box\">\r\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"search-input\"\r\n [(ngModel)]=\"searchItem\"\r\n (ngModelChange)=\"searchForTheItem($event)\"\r\n />\r\n <i\r\n class=\"mdi mdi-close search-bar-close\"\r\n [ngClass]=\"{ 'disable-close-icon': !searchItem || searchItem.length === 0 }\"\r\n (click)=\"clearSearchedItem()\"\r\n ></i>\r\n </p>\r\n <div class=\"position-relative\">\r\n <!-- Track By func -->\r\n <cdk-virtual-scroll-viewport\r\n itemSize=\"18\"\r\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n class=\"dropdown-data-container\"\r\n >\r\n <p\r\n *cdkVirtualFor=\"let option of tooltipOptions\"\r\n class=\"input example-item\"\r\n (click)=\"selectUnselectCheckbox(option)\"\r\n >\r\n <span\r\n *ngIf=\"option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box check-box\"\r\n ></span>\r\n <span\r\n *ngIf=\"!option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box-outline-blank check-box unchecked\"\r\n ></span>\r\n <span\r\n *ngIf=\"searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n [innerHTML]=\"option.label\"\r\n ></span>\r\n <span\r\n *ngIf=\"!searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n >{{ option.label }}</span\r\n >\r\n </p>\r\n\r\n <p\r\n class=\"no-data-case\"\r\n *ngIf=\"tooltipOptions?.length === 0\"\r\n >\r\n No data found\r\n </p>\r\n </cdk-virtual-scroll-viewport>\r\n <div class=\"virtual-scroll-div\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container checkbox-filter-buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"closeCheckboxFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableCheckboxApply }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableCheckboxApply\"\r\n >\r\n Apply\r\n <span *ngIf=\"showFilterComponent\">{{\r\n selectedCheckboxOptionsCount === tooltipOptions.length && tooltipOptions.length !== 0 && !searchItem\r\n ? \"All (\" + selectedCheckboxOptionsCount + \")\"\r\n : \"(\" + selectedCheckboxOptionsCount + \")\"\r\n }}</span>\r\n </button>\r\n</div>\r\n", styles: [".sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:var(--sort-label-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:var(--filter-search-icon-fs);color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:var(--filter-checkbox-label-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{font-family:Roboto;font-size:var(--filter-search-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px);margin:1px 0 1px 2px;border:none;padding:0}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.5rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666;font-size:var(--page-message-content-fs)}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:.875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:20px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.75rem;font-weight:700;font-size:var(--dropdown-label-fs)}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:var(--filter-clear-select-btn-fs);background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:var(--filter-tab-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis;padding-block:3px}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:var(--filter-clear-select-btn-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:var(--filter-checkbox-label-fs)!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#2962ff}.virtual-scroll-div{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AnnaSortComponent, selector: "anna-core-sort-lib", inputs: ["sortObjectKey"], outputs: ["sortOptionClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }] }); }
|
|
229
|
+
}
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaColumnCheckboxFilterComponent, decorators: [{
|
|
231
|
+
type: Component,
|
|
232
|
+
args: [{ selector: "anna-core-anna-column-checkbox-filter", standalone: true, imports: [
|
|
233
|
+
NgIf,
|
|
234
|
+
NgFor,
|
|
235
|
+
NgClass,
|
|
236
|
+
AnnaSortComponent,
|
|
237
|
+
FormsModule,
|
|
238
|
+
CdkVirtualScrollViewport,
|
|
239
|
+
CdkFixedSizeVirtualScroll,
|
|
240
|
+
CdkVirtualForOf,
|
|
241
|
+
], template: "<div\r\n class=\"radio-container\"\r\n *ngIf=\"showFilterHeaderTabs\"\r\n>\r\n <div\r\n [ngClass]=\"{ 'full-width': filterTabObjects.length === 1 }\"\r\n *ngFor=\"let data of filterTabObjects\"\r\n >\r\n <p\r\n class=\"filter-tab\"\r\n [title]=\"data.label\"\r\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\r\n [ngClass]=\"{ active: annaFilterService.selectedRadio === data.key }\"\r\n *ngIf=\"filterTabObjects.length > 0\"\r\n >\r\n {{ data.label }}\r\n </p>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"checkbox-sort\"\r\n *ngIf=\"showSortComponent\"\r\n>\r\n <anna-core-sort-lib\r\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\r\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\r\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\r\n ></anna-core-sort-lib>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <p class=\"d-flex justify-content-between\">\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableClearAll\"\r\n (click)=\"unCheckAllCheckbox()\"\r\n >\r\n Clear all\r\n </button>\r\n <button\r\n class=\"filter-text-btn\"\r\n [disabled]=\"disableSelectAll\"\r\n (click)=\"selectAllCheckbox()\"\r\n >\r\n Select all\r\n </button>\r\n </p>\r\n <p class=\"search-box\">\r\n <i class=\"mi mdi-search search-icon search-icon-position\"></i>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"search-input\"\r\n [(ngModel)]=\"searchItem\"\r\n (ngModelChange)=\"searchForTheItem($event)\"\r\n />\r\n <i\r\n class=\"mdi mdi-close search-bar-close\"\r\n [ngClass]=\"{ 'disable-close-icon': !searchItem || searchItem.length === 0 }\"\r\n (click)=\"clearSearchedItem()\"\r\n ></i>\r\n </p>\r\n <div class=\"position-relative\">\r\n <!-- Track By func -->\r\n <cdk-virtual-scroll-viewport\r\n itemSize=\"18\"\r\n [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n class=\"dropdown-data-container\"\r\n >\r\n <p\r\n *cdkVirtualFor=\"let option of tooltipOptions\"\r\n class=\"input example-item\"\r\n (click)=\"selectUnselectCheckbox(option)\"\r\n >\r\n <span\r\n *ngIf=\"option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box check-box\"\r\n ></span>\r\n <span\r\n *ngIf=\"!option.isSelected\"\r\n role=\"button\"\r\n class=\"mi mdi-check-box-outline-blank check-box unchecked\"\r\n ></span>\r\n <span\r\n *ngIf=\"searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n [innerHTML]=\"option.label\"\r\n ></span>\r\n <span\r\n *ngIf=\"!searchItem\"\r\n class=\"data\"\r\n title=\"{{ option.value }}\"\r\n >{{ option.label }}</span\r\n >\r\n </p>\r\n\r\n <p\r\n class=\"no-data-case\"\r\n *ngIf=\"tooltipOptions?.length === 0\"\r\n >\r\n No data found\r\n </p>\r\n </cdk-virtual-scroll-viewport>\r\n <div class=\"virtual-scroll-div\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container checkbox-filter-buttons-container\">\r\n <button\r\n class=\"button\"\r\n (click)=\"closeCheckboxFilter()\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableCheckboxApply }\"\r\n (click)=\"applyFilters()\"\r\n [disabled]=\"disableCheckboxApply\"\r\n >\r\n Apply\r\n <span *ngIf=\"showFilterComponent\">{{\r\n selectedCheckboxOptionsCount === tooltipOptions.length && tooltipOptions.length !== 0 && !searchItem\r\n ? \"All (\" + selectedCheckboxOptionsCount + \")\"\r\n : \"(\" + selectedCheckboxOptionsCount + \")\"\r\n }}</span>\r\n </button>\r\n</div>\r\n", styles: [".sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:var(--sort-label-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:var(--filter-search-icon-fs);color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:var(--filter-checkbox-label-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{font-family:Roboto;font-size:var(--filter-search-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px);margin:1px 0 1px 2px;border:none;padding:0}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.5rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666;font-size:var(--page-message-content-fs)}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:.875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:20px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.75rem;font-weight:700;font-size:var(--dropdown-label-fs)}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:var(--filter-clear-select-btn-fs);background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:var(--filter-tab-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis;padding-block:3px}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:var(--filter-clear-select-btn-fs);font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:var(--filter-checkbox-label-fs)!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#2962ff}.virtual-scroll-div{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}\n"] }]
|
|
242
|
+
}], ctorParameters: () => [{ type: i1.AnnaSortService }, { type: i2.AnnaFilterService }], propDecorators: { showFilterHeaderTabs: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], isLurAndCsrComponent: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], tableData: [{
|
|
247
|
+
type: Input,
|
|
248
|
+
args: [{ required: true }]
|
|
249
|
+
}], clonedTableData: [{
|
|
250
|
+
type: Input,
|
|
251
|
+
args: [{ required: true }]
|
|
252
|
+
}], filterTabObjects: [{
|
|
253
|
+
type: Input,
|
|
254
|
+
args: [{ required: true }]
|
|
255
|
+
}], filterAppliedToTable: [{
|
|
256
|
+
type: Output
|
|
257
|
+
}], sortingAppliedToTable: [{
|
|
258
|
+
type: Output
|
|
259
|
+
}], getSortType: [{
|
|
260
|
+
type: Output
|
|
261
|
+
}], closeTooltip: [{
|
|
262
|
+
type: Output
|
|
263
|
+
}] } });
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb2x1bW4tY2hlY2tib3gtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLWNvbHVtbi1maWx0ZXJzL2FubmEtY29sdW1uLWNoZWNrYm94LWZpbHRlci9hbm5hLWNvbHVtbi1jaGVja2JveC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tY2hlY2tib3gtZmlsdGVyL2FubmEtY29sdW1uLWNoZWNrYm94LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztB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QUNKLEtBQUs7d0JBQ0wsT0FBTzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGVBQWU7cUJBQ2xCO29IQUdRLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ3FCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGVBQWU7c0JBQXpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWYsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLCBDZGtWaXJ0dWFsRm9yT2YsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5cclxuaW1wb3J0IHsgU29ydFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtc29ydC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFubmFTb3J0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLXNvcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBbm5hU29ydENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9hbm5hLXNvcnQvYW5uYS1zb3J0LmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhbm5hLWNvcmUtYW5uYS1jb2x1bW4tY2hlY2tib3gtZmlsdGVyXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FubmEtY29sdW1uLWNoZWNrYm94LWZpbHRlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2FubmEtY29sdW1uLWNoZWNrYm94LWZpbHRlci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgTmdJZixcclxuICAgICAgICBOZ0ZvcixcclxuICAgICAgICBOZ0NsYXNzLFxyXG4gICAgICAgIEFubmFTb3J0Q29tcG9uZW50LFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcclxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxyXG4gICAgICAgIENka1ZpcnR1YWxGb3JPZixcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hQ29sdW1uQ2hlY2tib3hGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgc2hvd0ZpbHRlckhlYWRlclRhYnM6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0x1ckFuZENzckNvbXBvbmVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhYmxlRGF0YTogYW55W107XHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjbG9uZWRUYWJsZURhdGE6IGFueVtdO1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcblxyXG4gICAgQE91dHB1dCgpIGZpbHRlckFwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBnZXRTb3J0VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjbG9zZVRvb2x0aXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgdG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gICAgY2xvbmVkVG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gICAgaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXI6IG51bWJlcjtcclxuICAgIHRvb2xUaXBkYXRhOiBhbnk7XHJcbiAgICB0ZW1wVG9vbHRpcERhdGE6IGFueTtcclxuICAgIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQ6IG51bWJlcjtcclxuICAgIGlzRmlsdGVyQ2hhbmdlZDogYm9vbGVhbjtcclxuICAgIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICAgIGlzU29ydENoYW5nZWQ6IGJvb2xlYW47XHJcbiAgICBkaXNhYmxlU2VsZWN0QWxsOiBib29sZWFuO1xyXG4gICAgZGlzYWJsZUNsZWFyQWxsOiBib29sZWFuO1xyXG4gICAgc2VhcmNoSXRlbTogc3RyaW5nO1xyXG4gICAgc2hvd1NvcnRDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGRpc2FibGVDaGVja2JveEFwcGx5OiBib29sZWFuO1xyXG4gICAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbWFyZ2luID0gNTtcclxuICAgIHNlbGVjdGVkUmFkaW9LZXk6IHN0cmluZztcclxuICAgIHNob3dTcGxpdGVkT3B0aW9uczogYm9vbGVhbjtcclxuICAgIHNwbGl0RGVsaW1pdGVyOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhbm5hU29ydFNlcnZpY2U6IEFubmFTb3J0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKHRoaXMuZmlsdGVyVGFiT2JqZWN0c1swXSwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhhY3RpdmVUYWI6IFJhZGlvQnV0dG9uTW9kZWwsIHJlbG9hZDogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IGFjdGl2ZVRhYi5rZXk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hJdGVtID0gbnVsbDtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgICAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgICAgICB0aGlzLnNob3dTcGxpdGVkT3B0aW9ucyA9IGFjdGl2ZVRhYi5zaG93U3BsaXRlZE9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5zcGxpdERlbGltaXRlciA9IHRoaXMuc2hvd1NwbGl0ZWRPcHRpb25zXHJcbiAgICAgICAgICAgID8gYWN0aXZlVGFiLnNwbGl0RGVsaW1pdGVyID8/IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuREVGQVVMVF9TUExJVF9TRVBBUkFUT1JcclxuICAgICAgICAgICAgOiBcIlwiO1xyXG4gICAgICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU29ydENoYW5nZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID0gaGVhZGVyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb0tleSA9IGAke2hlYWRlcn0ke3RoaXMuc2hvd1NwbGl0ZWRPcHRpb25zID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5TUExJVEVEX0NIRUNLQk9YX0ZJTFRFUl9LRVkgOiBcIlwifWA7XHJcblxyXG4gICAgICAgIGlmIChyZWxvYWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiOiBSYWRpb0J1dHRvbk1vZGVsLCBrZXk6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tib3hEYXRhKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldENoZWNrYm94RGF0YShoZWFkZXI6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBPcHRpb25zID0gdGhpcy5jcmVhdGVMaXN0Rm9yQ2hlY2tib3hGaWx0ZXIoaGVhZGVyKTtcclxuXHJcbiAgICAgICAgY29uc3QgW2Nsb25lZFRvb2x0aXBPcHRpb25zLCB1cGRhdGVkVG9vbHRpcE9wdGlvbnMsIHNlbGVjdGVkSXRlbXMsIHVuc2VsZWN0ZWRJdGVtc10gPVxyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldENsb25lZFRvb2x0aXBBbmRUb29sdGlwT3B0aW9uKHRvb2x0aXBPcHRpb25zLCBcImxhYmVsXCIpO1xyXG5cclxuICAgICAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zID0gY2xvbmVkVG9vbHRpcE9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IHVwZGF0ZWRUb29sdGlwT3B0aW9ucztcclxuXHJcbiAgICAgICAgdGhpcy5oZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0SGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXIoXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoLFxyXG4gICAgICAgICAgICB0aGlzLm1hcmdpbixcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwT3B0aW9ucyA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKFxyXG4gICAgICAgICAgICBoZWFkZXIsXHJcbiAgICAgICAgICAgIG9wdGlvbkRhdGEsXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NwbGl0ZWRPcHRpb25zLFxyXG4gICAgICAgICAgICB0aGlzLnNwbGl0RGVsaW1pdGVyLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RVbnNlbGVjdExpc3RDaGVja2JveCh0b29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW10sIGhlYWRlcjogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVNldC5oYXMoaXRlbS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bkNoZWNrQWxsQ2hlY2tib3goKSB7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51bkNoZWNrQWxsQ2hlY2tib3godGhpcy50b29sdGlwT3B0aW9ucywgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0QWxsQ2hlY2tib3goKSB7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RBbGxDaGVja2JveCh0aGlzLnRvb2x0aXBPcHRpb25zLCB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoc3RyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlcmVkT3B0aW9uQXNCb2xkU3RyaW5nKHN0ciwgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0Rm9yRmlsdGVyVG9vbHRpcCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW3NlbGVjdGVkSXRlbXMsIHVuc2VsZWN0ZWRJdGVtc10gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFNlbGVjdGVkQW5kVW5zZWxlY3RlZEl0ZW1zKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5jaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCxcclxuICAgICAgICAgICAgICAgIF0gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmRpc2FibGVBbGxCdG5zV2hlblRoZXJlQXJlTm9GaWx0ZXJlZFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0Rm9yRmlsdGVyVG9vbHRpcCgpO1xyXG4gICAgICAgICAgICBjb25zdCBbc2VsZWN0ZWRJdGVtcywgdW5zZWxlY3RlZEl0ZW1zXSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0U2VsZWN0ZWRBbmRVbnNlbGVjdGVkSXRlbXMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjYWxjdWxhdGVIZWlnaHRGb3JGaWx0ZXJUb29sdGlwKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCA9PT0gMCA/IDEgOiB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRIZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlcihcclxuICAgICAgICAgICAgZGF0YUxlbmd0aCxcclxuICAgICAgICAgICAgdGhpcy5tYXJnaW4sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNTZWxlY3RlZCkgOiBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgICAgICAgY29uc3QgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTb3J0Q2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldENoZWNrYm94UHJldmlvdXNTZWxlY3RlZFZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q2hlY2tib3hDdXJyZW50U2VsZWN0ZWRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJdGVtLFxyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChjdXJyZW50U2VsZWN0ZWRWYWx1ZSwgcHJldmlvdXNTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlMaXN0RmlsdGVycygpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICAgICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5TGlzdEZpbHRlcnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q2hlY2tib3hDdXJyZW50U2VsZWN0ZWRWYWx1ZShcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSXRlbSxcclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsIGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuc2VsZWN0ZWRSYWRpb0tleSwgY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTb3J0Q2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVNvcnRNYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wU29ydE9yZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZW1pdERhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkICYmIHRoaXMuaXNTb3J0Q2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTb3J0Q2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFNvcnRUeXBlLmVtaXQodGhpcy50ZW1wU29ydE9yZGVyKTtcclxuICAgICAgICAgICAgdGhpcy5zb3J0aW5nQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdFVuc2VsZWN0Q2hlY2tib3goZGF0YTogVG9vbHRpcE1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RVbnNlbGVjdENoZWNrYm94KGRhdGEsIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW1zLCB1bnNlbGVjdGVkSXRlbXNdID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRTZWxlY3RlZEFuZFVuc2VsZWN0ZWRJdGVtcyhcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudG9vbFRpcGRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXZlcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldmVydCgpIHtcclxuICAgICAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wVG9vbHRpcERhdGEpO1xyXG4gICAgICAgIHRoaXMudG9vbFRpcGRhdGEgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyU2VhcmNoZWRJdGVtKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hGb3JUaGVJdGVtKFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZShldmVudDogU29ydFR5cGUpIHtcclxuICAgICAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBldmVudDtcclxuICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVySGVhZGVyVGFic1wiXHJcbj5cclxuICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdmdWxsLXdpZHRoJzogZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPT09IDEgfVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiXHJcbiAgICA+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFiXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cImRhdGEubGFiZWxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT09IGRhdGEua2V5IH1cIlxyXG4gICAgICAgICAgICAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkYXRhLmxhYmVsIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdlxyXG4gICAgY2xhc3M9XCJjaGVja2JveC1zb3J0XCJcclxuICAgICpuZ0lmPVwic2hvd1NvcnRDb21wb25lbnRcIlxyXG4+XHJcbiAgICA8YW5uYS1jb3JlLXNvcnQtbGliXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50IH1cIlxyXG4gICAgICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiXHJcbiAgICA+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgIDxwIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQ2xlYXIgYWxsXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IGFsbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWFyY2gtYm94XCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtaSBtZGktc2VhcmNoIHNlYXJjaC1pY29uIHNlYXJjaC1pY29uLXBvc2l0aW9uXCI+PC9pPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hGb3JUaGVJdGVtKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNsb3NlLWljb24nOiAhc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PT0gMCB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICA8IS0tIFRyYWNrIEJ5IGZ1bmMgLS0+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgICAgICBpdGVtU2l6ZT1cIjE4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGF0YS1jb250YWluZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiB0b29sdGlwT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0IGV4YW1wbGUtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5pc1NlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3gtb3V0bGluZS1ibGFuayBjaGVjay1ib3ggdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IG9wdGlvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VhcmNoSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IG9wdGlvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuby1kYXRhLWNhc2VcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0b29sdGlwT3B0aW9ucz8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgTm8gZGF0YSBmb3VuZFxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsLWRpdlwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyIGNoZWNrYm94LWZpbHRlci1idXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xvc2VDaGVja2JveEZpbHRlcigpXCJcclxuICAgID5cclxuICAgICAgICBDYW5jZWxcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2hlY2tib3hBcHBseVwiXHJcbiAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj57e1xyXG4gICAgICAgICAgICBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID09PSB0b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdG9vbHRpcE9wdGlvbnMubGVuZ3RoICE9PSAwICYmICFzZWFyY2hJdGVtXHJcbiAgICAgICAgICAgICAgICA/IFwiQWxsIChcIiArIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgKyBcIilcIlxyXG4gICAgICAgICAgICAgICAgOiBcIihcIiArIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgKyBcIilcIlxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|