@mozaic-ds/angular 0.24.0-test.0 → 0.24.0-test.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adeo/components/card/card.component.d.ts +11 -0
- package/adeo/components/card/card.module.d.ts +8 -0
- package/adeo/components/card/index.d.ts +3 -0
- package/adeo/components/card/model/card.d.ts +1 -0
- package/adeo/components/card/public-api.d.ts +1 -0
- package/adeo/components/datatable/components/selection/moz-datatable-selection.component.d.ts +1 -1
- package/adeo/components/dropdown/dropdown.component.d.ts +5 -8
- package/adeo/components/header/header.component.d.ts +6 -4
- package/adeo/components/listbox/listbox.component.d.ts +8 -8
- package/adeo/components/phone-number/phone-number.component.d.ts +4 -12
- package/adeo/components/public-api.d.ts +1 -0
- package/adeo/components/tabs/tab.component.d.ts +4 -2
- package/adeo/components/tabs/tabs.component.d.ts +1 -1
- package/adeo/esm2020/components/action-bar/action-bar.component.mjs +3 -3
- package/adeo/esm2020/components/bottom-bar/index.mjs +1 -1
- package/adeo/esm2020/components/bottom-bar/public-api.mjs +1 -1
- package/adeo/esm2020/components/card/card.component.mjs +27 -0
- package/adeo/esm2020/components/card/card.module.mjs +18 -0
- package/adeo/esm2020/components/card/index.mjs +4 -0
- package/adeo/esm2020/components/card/model/card.mjs +2 -0
- package/adeo/esm2020/components/card/public-api.mjs +2 -0
- package/adeo/esm2020/components/container/container.module.mjs +5 -3
- package/adeo/esm2020/components/container/public-api.mjs +1 -1
- package/adeo/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +48 -68
- package/adeo/esm2020/components/datatable/moz-datatable.component.mjs +3 -3
- package/adeo/esm2020/components/dropdown/dropdown.component.mjs +16 -46
- package/adeo/esm2020/components/header/header.component.mjs +12 -12
- package/adeo/esm2020/components/listbox/listbox.component.mjs +33 -38
- package/adeo/esm2020/components/notification/notification-animation.mjs +6 -6
- package/adeo/esm2020/components/notification/notification-container.component.mjs +7 -7
- package/adeo/esm2020/components/phone-number/phone-number.component.mjs +15 -68
- package/adeo/esm2020/components/public-api.mjs +2 -1
- package/adeo/esm2020/components/tabs/tab.component.mjs +7 -6
- package/adeo/esm2020/components/tabs/tabs.component.mjs +8 -4
- package/adeo/fesm2015/mozaic-ds-angular.mjs +194 -256
- package/adeo/fesm2015/mozaic-ds-angular.mjs.map +1 -1
- package/adeo/fesm2020/mozaic-ds-angular.mjs +184 -248
- package/adeo/fesm2020/mozaic-ds-angular.mjs.map +1 -1
- package/adeo/package.json +1 -1
- package/bricoman/components/card/card.component.d.ts +11 -0
- package/bricoman/components/card/card.module.d.ts +8 -0
- package/bricoman/components/card/index.d.ts +3 -0
- package/bricoman/components/card/model/card.d.ts +1 -0
- package/bricoman/components/card/public-api.d.ts +1 -0
- package/bricoman/components/datatable/components/selection/moz-datatable-selection.component.d.ts +1 -1
- package/bricoman/components/dropdown/dropdown.component.d.ts +5 -8
- package/bricoman/components/header/header.component.d.ts +6 -4
- package/bricoman/components/listbox/listbox.component.d.ts +8 -8
- package/bricoman/components/phone-number/phone-number.component.d.ts +4 -12
- package/bricoman/components/public-api.d.ts +1 -0
- package/bricoman/components/tabs/tab.component.d.ts +4 -2
- package/bricoman/components/tabs/tabs.component.d.ts +1 -1
- package/bricoman/esm2020/components/action-bar/action-bar.component.mjs +3 -3
- package/bricoman/esm2020/components/bottom-bar/index.mjs +1 -1
- package/bricoman/esm2020/components/bottom-bar/public-api.mjs +1 -1
- package/bricoman/esm2020/components/card/card.component.mjs +27 -0
- package/bricoman/esm2020/components/card/card.module.mjs +18 -0
- package/bricoman/esm2020/components/card/index.mjs +4 -0
- package/bricoman/esm2020/components/card/model/card.mjs +2 -0
- package/bricoman/esm2020/components/card/public-api.mjs +2 -0
- package/bricoman/esm2020/components/container/container.module.mjs +5 -3
- package/bricoman/esm2020/components/container/public-api.mjs +1 -1
- package/bricoman/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +48 -68
- package/bricoman/esm2020/components/datatable/moz-datatable.component.mjs +3 -3
- package/bricoman/esm2020/components/dropdown/dropdown.component.mjs +16 -46
- package/bricoman/esm2020/components/header/header.component.mjs +12 -12
- package/bricoman/esm2020/components/listbox/listbox.component.mjs +33 -38
- package/bricoman/esm2020/components/notification/notification-animation.mjs +6 -6
- package/bricoman/esm2020/components/notification/notification-container.component.mjs +7 -7
- package/bricoman/esm2020/components/phone-number/phone-number.component.mjs +15 -68
- package/bricoman/esm2020/components/public-api.mjs +2 -1
- package/bricoman/esm2020/components/tabs/tab.component.mjs +7 -6
- package/bricoman/esm2020/components/tabs/tabs.component.mjs +8 -4
- package/bricoman/fesm2015/mozaic-ds-angular.mjs +194 -256
- package/bricoman/fesm2015/mozaic-ds-angular.mjs.map +1 -1
- package/bricoman/fesm2020/mozaic-ds-angular.mjs +184 -248
- package/bricoman/fesm2020/mozaic-ds-angular.mjs.map +1 -1
- package/bricoman/package.json +1 -1
- package/components/card/card.component.d.ts +11 -0
- package/components/card/card.module.d.ts +8 -0
- package/components/card/index.d.ts +3 -0
- package/components/card/model/card.d.ts +1 -0
- package/components/card/public-api.d.ts +1 -0
- package/components/datatable/components/selection/moz-datatable-selection.component.d.ts +1 -1
- package/components/dropdown/dropdown.component.d.ts +5 -8
- package/components/header/header.component.d.ts +6 -4
- package/components/listbox/listbox.component.d.ts +8 -8
- package/components/phone-number/phone-number.component.d.ts +4 -12
- package/components/public-api.d.ts +1 -0
- package/components/tabs/tab.component.d.ts +4 -2
- package/components/tabs/tabs.component.d.ts +1 -1
- package/esm2020/components/action-bar/action-bar.component.mjs +3 -3
- package/esm2020/components/bottom-bar/index.mjs +1 -1
- package/esm2020/components/bottom-bar/public-api.mjs +1 -1
- package/esm2020/components/card/card.component.mjs +27 -0
- package/esm2020/components/card/card.module.mjs +18 -0
- package/esm2020/components/card/index.mjs +4 -0
- package/esm2020/components/card/model/card.mjs +2 -0
- package/esm2020/components/card/public-api.mjs +2 -0
- package/esm2020/components/container/container.module.mjs +5 -3
- package/esm2020/components/container/public-api.mjs +1 -1
- package/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +48 -68
- package/esm2020/components/datatable/moz-datatable.component.mjs +3 -3
- package/esm2020/components/dropdown/dropdown.component.mjs +16 -46
- package/esm2020/components/header/header.component.mjs +12 -12
- package/esm2020/components/listbox/listbox.component.mjs +33 -38
- package/esm2020/components/notification/notification-animation.mjs +6 -6
- package/esm2020/components/notification/notification-container.component.mjs +7 -7
- package/esm2020/components/phone-number/phone-number.component.mjs +15 -68
- package/esm2020/components/public-api.mjs +2 -1
- package/esm2020/components/tabs/tab.component.mjs +7 -6
- package/esm2020/components/tabs/tabs.component.mjs +8 -4
- package/fesm2015/mozaic-ds-angular.mjs +194 -256
- package/fesm2015/mozaic-ds-angular.mjs.map +1 -1
- package/fesm2020/mozaic-ds-angular.mjs +184 -248
- package/fesm2020/mozaic-ds-angular.mjs.map +1 -1
- package/package.json +1 -1
package/adeo/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs
CHANGED
|
@@ -12,38 +12,13 @@ export class MozDatatableSelectionComponent {
|
|
|
12
12
|
this.updateSelection();
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
updateSelection() {
|
|
16
|
-
if (this.selectionSettings && this.rowData) {
|
|
17
|
-
this.rowData
|
|
18
|
-
?.filter((row) => !row.disableSelection &&
|
|
19
|
-
row.selected &&
|
|
20
|
-
this.selectionSettings?.selectedIds.filter((selectedRow) => {
|
|
21
|
-
return (!this.selectionSettings?.allSelected &&
|
|
22
|
-
this.selectionSettings &&
|
|
23
|
-
selectedRow === row[this.selectionSettings.selectionIdentifierFieldKey]);
|
|
24
|
-
}).length === 0)
|
|
25
|
-
.forEach((row) => {
|
|
26
|
-
this.selectionSettings?.selectedIds.push(row[this.selectionSettings.selectionIdentifierFieldKey]);
|
|
27
|
-
});
|
|
28
|
-
if ((this.selectionSettings?.selectedIds || []).length ===
|
|
29
|
-
this.selectionSettings.totalSelectableItems) {
|
|
30
|
-
this.selectionSettings.allSelected = true;
|
|
31
|
-
this.selectionSettings.selectedIds = [];
|
|
32
|
-
this.selectionSettings.excludedIds = [];
|
|
33
|
-
}
|
|
34
|
-
this.isIndeterminate = this.isSelectionIndeterminate();
|
|
35
|
-
this.selectionSettings.allSelected = this.isAllPageRowAreSelected();
|
|
36
|
-
this.ref.markForCheck();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
15
|
selectAll() {
|
|
40
16
|
if (this.selectionSettings) {
|
|
41
17
|
this.selectionSettings.excludedIds = [];
|
|
42
18
|
this.selectionSettings.selectedIds = [];
|
|
43
|
-
this.selectionSettings.allSelected = true;
|
|
44
19
|
this.updateSelectedValueOnRowData(true);
|
|
45
20
|
this.isIndeterminate = this.isSelectionIndeterminate();
|
|
46
|
-
this.selectionSettings.allSelected =
|
|
21
|
+
this.selectionSettings.allSelected = true;
|
|
47
22
|
this.updateSelectionAllEmitter.emit(this.selectionSettings);
|
|
48
23
|
this.ref.markForCheck();
|
|
49
24
|
}
|
|
@@ -52,21 +27,16 @@ export class MozDatatableSelectionComponent {
|
|
|
52
27
|
if (this.selectionSettings) {
|
|
53
28
|
this.selectionSettings.excludedIds = [];
|
|
54
29
|
this.selectionSettings.selectedIds = [];
|
|
55
|
-
this.selectionSettings.allSelected = false;
|
|
56
30
|
this.updateSelectedValueOnRowData(false);
|
|
57
31
|
this.isIndeterminate = this.isSelectionIndeterminate();
|
|
58
|
-
this.selectionSettings.allSelected =
|
|
32
|
+
this.selectionSettings.allSelected = false;
|
|
59
33
|
this.updateSelectionAllEmitter.emit(this.selectionSettings);
|
|
60
34
|
this.ref.markForCheck();
|
|
61
35
|
}
|
|
62
36
|
}
|
|
63
37
|
isAllPageRowAreSelected() {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return (selectedRows.length === this.rowData.filter((row) => !row.disableSelection).length &&
|
|
67
|
-
this.rowData.filter((row) => !row.disableSelection).length > 0);
|
|
68
|
-
}
|
|
69
|
-
return false;
|
|
38
|
+
return (this.selectionSettings?.selectedIds.length === this.selectionSettings?.totalSelectableItems ||
|
|
39
|
+
(this.selectionSettings?.allSelected ?? false));
|
|
70
40
|
}
|
|
71
41
|
onUdpateSelectionRow(row) {
|
|
72
42
|
this.handleCountItemSelection(row);
|
|
@@ -82,7 +52,7 @@ export class MozDatatableSelectionComponent {
|
|
|
82
52
|
if (row.selected) {
|
|
83
53
|
this.selectionSettings.excludedIds = [
|
|
84
54
|
...this.selectionSettings.excludedIds.filter((deselectedId) => {
|
|
85
|
-
return deselectedId !== row[selectionIdentifierFieldKey];
|
|
55
|
+
return deselectedId !== '' + row[selectionIdentifierFieldKey];
|
|
86
56
|
}),
|
|
87
57
|
];
|
|
88
58
|
}
|
|
@@ -90,12 +60,12 @@ export class MozDatatableSelectionComponent {
|
|
|
90
60
|
if (this.paginationEnabled) {
|
|
91
61
|
this.selectionSettings.excludedIds = [
|
|
92
62
|
...this.selectionSettings.excludedIds,
|
|
93
|
-
row[selectionIdentifierFieldKey],
|
|
63
|
+
'' + row[selectionIdentifierFieldKey],
|
|
94
64
|
];
|
|
95
65
|
}
|
|
96
66
|
else {
|
|
97
67
|
this.selectionSettings.selectedIds = [
|
|
98
|
-
...this.selectionSettings.selectedIds.filter((selectedId) => selectedId !== row[selectionIdentifierFieldKey]),
|
|
68
|
+
...this.selectionSettings.selectedIds.filter((selectedId) => selectedId !== '' + row[selectionIdentifierFieldKey]),
|
|
99
69
|
];
|
|
100
70
|
this.selectionSettings.allSelected = false;
|
|
101
71
|
}
|
|
@@ -110,7 +80,7 @@ export class MozDatatableSelectionComponent {
|
|
|
110
80
|
if (row.selected) {
|
|
111
81
|
this.selectionSettings.selectedIds = [
|
|
112
82
|
...this.selectionSettings.selectedIds,
|
|
113
|
-
row[selectionIdentifierFieldKey],
|
|
83
|
+
'' + row[selectionIdentifierFieldKey],
|
|
114
84
|
];
|
|
115
85
|
if (this.selectionSettings.selectedIds.length ===
|
|
116
86
|
this.selectionSettings.totalSelectableItems) {
|
|
@@ -123,7 +93,7 @@ export class MozDatatableSelectionComponent {
|
|
|
123
93
|
else {
|
|
124
94
|
this.selectionSettings.selectedIds = [
|
|
125
95
|
...this.selectionSettings.selectedIds.filter((selectedId) => {
|
|
126
|
-
return selectedId !== row[selectionIdentifierFieldKey];
|
|
96
|
+
return selectedId !== '' + row[selectionIdentifierFieldKey];
|
|
127
97
|
}),
|
|
128
98
|
];
|
|
129
99
|
}
|
|
@@ -139,20 +109,9 @@ export class MozDatatableSelectionComponent {
|
|
|
139
109
|
if (this.isIndeterminate && this.rowData) {
|
|
140
110
|
this.rowData
|
|
141
111
|
.filter((row) => !row.disableSelection)
|
|
142
|
-
.filter((row) => !(this.selectionSettings?.selectedIds || []).includes(row[selectionIdentifierFieldKey]))
|
|
143
112
|
.forEach((row) => {
|
|
144
113
|
if (this.selectionSettings) {
|
|
145
|
-
this.selectionSettings.
|
|
146
|
-
...this.selectionSettings.selectedIds,
|
|
147
|
-
row[selectionIdentifierFieldKey],
|
|
148
|
-
];
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
this.rowData
|
|
152
|
-
.filter((row) => !row.disableSelection)
|
|
153
|
-
.forEach((row) => {
|
|
154
|
-
if (this.selectionSettings) {
|
|
155
|
-
const index = this.selectionSettings.excludedIds.indexOf(row[selectionIdentifierFieldKey], 0);
|
|
114
|
+
const index = this.selectionSettings.excludedIds.indexOf('' + row[selectionIdentifierFieldKey], 0);
|
|
156
115
|
if (index > -1) {
|
|
157
116
|
this.selectionSettings.excludedIds.splice(index, 1);
|
|
158
117
|
this.selectionSettings.excludedIds = [...this.selectionSettings.excludedIds];
|
|
@@ -177,7 +136,7 @@ export class MozDatatableSelectionComponent {
|
|
|
177
136
|
...this.selectionSettings.excludedIds,
|
|
178
137
|
...this.rowData
|
|
179
138
|
.filter((row) => !row.disableSelection)
|
|
180
|
-
.map((row) => row[selectionIdentifierFieldKey]),
|
|
139
|
+
.map((row) => '' + row[selectionIdentifierFieldKey]),
|
|
181
140
|
];
|
|
182
141
|
if (this.selectionSettings.excludedIds.length ===
|
|
183
142
|
this.selectionSettings.totalSelectableItems) {
|
|
@@ -198,12 +157,12 @@ export class MozDatatableSelectionComponent {
|
|
|
198
157
|
if (allPageRowsSelected && this.rowData) {
|
|
199
158
|
this.rowData
|
|
200
159
|
.filter((row) => !row.disableSelection)
|
|
201
|
-
.filter((row) => !(this.selectionSettings?.selectedIds || []).includes(row[selectionIdentifierFieldKey]))
|
|
160
|
+
.filter((row) => !(this.selectionSettings?.selectedIds || []).includes('' + row[selectionIdentifierFieldKey]))
|
|
202
161
|
.forEach((row) => {
|
|
203
162
|
if (this.selectionSettings) {
|
|
204
163
|
this.selectionSettings.selectedIds = [
|
|
205
164
|
...this.selectionSettings.selectedIds,
|
|
206
|
-
row[selectionIdentifierFieldKey],
|
|
165
|
+
'' + row[selectionIdentifierFieldKey],
|
|
207
166
|
];
|
|
208
167
|
}
|
|
209
168
|
});
|
|
@@ -217,17 +176,14 @@ export class MozDatatableSelectionComponent {
|
|
|
217
176
|
}
|
|
218
177
|
else {
|
|
219
178
|
if (this.rowData) {
|
|
220
|
-
this.rowData
|
|
221
|
-
.filter((row) => !row.disableSelection)
|
|
222
|
-
.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
];
|
|
229
|
-
}
|
|
230
|
-
});
|
|
179
|
+
this.selectionSettings.selectedIds = this.rowData
|
|
180
|
+
.filter((row) => !row.disableSelection && row.selected)
|
|
181
|
+
.map((row) => '' + row[selectionIdentifierFieldKey]);
|
|
182
|
+
const totalElementAreSelected = this.isAllPageRowAreSelected();
|
|
183
|
+
if (totalElementAreSelected) {
|
|
184
|
+
this.selectionSettings.allSelected = true;
|
|
185
|
+
this.selectionSettings.selectedIds = [];
|
|
186
|
+
}
|
|
231
187
|
}
|
|
232
188
|
}
|
|
233
189
|
}
|
|
@@ -235,6 +191,30 @@ export class MozDatatableSelectionComponent {
|
|
|
235
191
|
this.isIndeterminate = this.isSelectionIndeterminate();
|
|
236
192
|
this.ref.markForCheck();
|
|
237
193
|
}
|
|
194
|
+
updateSelection() {
|
|
195
|
+
if (this.selectionSettings && this.rowData) {
|
|
196
|
+
if (this.selectionSettings?.selectedIds) {
|
|
197
|
+
this.rowData.forEach((row) => {
|
|
198
|
+
if (this.selectionSettings?.allSelected ||
|
|
199
|
+
this.selectionSettings?.selectedIds.includes('' + row[this.selectionSettings.selectionIdentifierFieldKey])) {
|
|
200
|
+
row.selected = true;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
row.selected = false;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if ((this.selectionSettings?.selectedIds || []).length ===
|
|
208
|
+
this.selectionSettings.totalSelectableItems) {
|
|
209
|
+
this.selectionSettings.allSelected = true;
|
|
210
|
+
this.selectionSettings.selectedIds = [];
|
|
211
|
+
this.selectionSettings.excludedIds = [];
|
|
212
|
+
}
|
|
213
|
+
this.isIndeterminate = this.isSelectionIndeterminate();
|
|
214
|
+
this.selectionSettings.allSelected = this.isAllPageRowAreSelected();
|
|
215
|
+
this.ref.markForCheck();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
238
218
|
updateSelectedValueOnRowData(selected) {
|
|
239
219
|
this.rowData = this.rowData
|
|
240
220
|
?.filter((row) => !row.disableSelection)
|
|
@@ -253,7 +233,7 @@ export class MozDatatableSelectionComponent {
|
|
|
253
233
|
return row[this.selectionSettings.selectionIdentifierFieldKey];
|
|
254
234
|
}
|
|
255
235
|
})
|
|
256
|
-
.every((item) => (this.selectionSettings?.selectedIds || []).includes(item))) ||
|
|
236
|
+
.every((item) => (this.selectionSettings?.selectedIds || []).includes('' + item))) ||
|
|
257
237
|
(!this.selectionSettings.allSelected && this.selectionSettings.selectedIds.length === 0) ||
|
|
258
238
|
(this.selectionSettings.allSelected &&
|
|
259
239
|
this.rowData &&
|
|
@@ -263,7 +243,7 @@ export class MozDatatableSelectionComponent {
|
|
|
263
243
|
return row[this.selectionSettings.selectionIdentifierFieldKey];
|
|
264
244
|
}
|
|
265
245
|
})
|
|
266
|
-
.some((id) => (this.selectionSettings?.excludedIds || []).includes(id))) ||
|
|
246
|
+
.some((id) => (this.selectionSettings?.excludedIds || []).includes('' + id))) ||
|
|
267
247
|
(this.selectionSettings.allSelected && this.selectionSettings.excludedIds.length === 0)) {
|
|
268
248
|
return false;
|
|
269
249
|
}
|
|
@@ -286,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
286
266
|
}], updateSelectionAllEmitter: [{
|
|
287
267
|
type: Output
|
|
288
268
|
}] } });
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZGF0YXRhYmxlL2NvbXBvbmVudHMvc2VsZWN0aW9uL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2RhdGF0YWJsZS9jb21wb25lbnRzL3NlbGVjdGlvbi9tb3otZGF0YXRhYmxlLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7O0FBVXZCLE1BQU0sT0FBTyw4QkFBOEI7SUFRekMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKekIsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFNUUsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUFFSyxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFDLElBQUksQ0FBQyxPQUFPO2dCQUNWLEVBQUUsTUFBTSxDQUNOLENBQUMsR0FBWSxFQUFFLEVBQUUsQ0FDZixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7Z0JBQ3JCLEdBQUcsQ0FBQyxRQUFRO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ3pELE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXO3dCQUNwQyxJQUFJLENBQUMsaUJBQWlCO3dCQUN0QixXQUFXLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUN4RSxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQ2xCO2lCQUNBLE9BQU8sQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFO2dCQUN4QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUN4RCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUNFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQzNDO2dCQUNBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7YUFDekM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QjtRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3RDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLElBQUksQ0FDeEQsQ0FBQztZQUNGLE9BQU8sQ0FDTCxZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU07Z0JBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQy9ELENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEdBQVk7UUFDdEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSw0QkFBNEIsQ0FBQyxNQUFXO1FBQzdDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxHQUFZO1FBQzFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRTtZQUNsQyxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQztZQUN2RixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRzt3QkFDbkMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFOzRCQUM1RCxPQUFPLFlBQVksS0FBSyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQzt3QkFDM0QsQ0FBQyxDQUFDO3FCQUNILENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUc7NEJBQ25DLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVc7NEJBQ3JDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQzt5QkFDakMsQ0FBQztxQkFDSDt5QkFBTTt3QkFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHOzRCQUNuQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUMxQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUNoRTt5QkFDRixDQUFDO3dCQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO3FCQUM1QztvQkFDRCxJQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsTUFBTTt3QkFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixFQUMzQzt3QkFDQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7cUJBQzVDO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO29CQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHO3dCQUNuQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO3dCQUNyQyxHQUFHLENBQUMsMkJBQTJCLENBQUM7cUJBQ2pDLENBQUM7b0JBQ0YsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU07d0JBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFDM0M7d0JBQ0EsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO3lCQUN6Qzt3QkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztxQkFDM0M7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRzt3QkFDbkMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFOzRCQUMxRCxPQUFPLFVBQVUsS0FBSyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQzt3QkFDekQsQ0FBQyxDQUFDO3FCQUNILENBQUM7aUJBQ0g7YUFDRjtZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxtQkFBNEI7UUFDMUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUM7WUFDdkYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDeEMsSUFBSSxDQUFDLE9BQU87eUJBQ1QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzt5QkFDdEMsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQ25ELEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUNqQyxDQUNKO3lCQUNBLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFOzRCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHO2dDQUNuQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO2dDQUNyQyxHQUFHLENBQUMsMkJBQTJCLENBQUM7NkJBQ2pDLENBQUM7eUJBQ0g7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsSUFBSSxDQUFDLE9BQU87eUJBQ1QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzt5QkFDdEMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ2YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7NEJBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUN0RCxHQUFHLENBQUMsMkJBQTJCLENBQUMsRUFDaEMsQ0FBQyxDQUNGLENBQUM7NEJBQ0YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7NkJBQzlFO3lCQUNGO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNMLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNO3dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQzNDO3dCQUNBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3dCQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTzs0QkFDekIsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDOzZCQUN2QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTs0QkFDWCxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDcEIsT0FBTyxHQUFHLENBQUM7d0JBQ2IsQ0FBQyxDQUFDLENBQUM7cUJBQ047aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO3dCQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHOzRCQUNuQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXOzRCQUNyQyxHQUFHLElBQUksQ0FBQyxPQUFPO2lDQUNaLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7aUNBQ3RDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7eUJBQ2xELENBQUM7d0JBQ0YsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU07NEJBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFDM0M7NEJBQ0EsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7NEJBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDOzRCQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzs0QkFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTztnQ0FDekIsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2lDQUN2QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQ0FDWCxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQ0FDckIsT0FBTyxHQUFHLENBQUM7NEJBQ2IsQ0FBQyxDQUFDLENBQUM7eUJBQ047cUJBQ0Y7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLG1CQUFtQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxPQUFPO3lCQUNULE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7eUJBQ3RDLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUNuRCxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FDakMsQ0FDSjt5QkFDQSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDZixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0QkFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRztnQ0FDbkMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQ0FDckMsR0FBRyxDQUFDLDJCQUEyQixDQUFDOzZCQUNqQyxDQUFDO3lCQUNIO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNMLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNO3dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQzNDO3dCQUNBLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFOzRCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzt5QkFDekM7d0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7cUJBQzNDO2lCQUNGO3FCQUFNO29CQUNMLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDaEIsSUFBSSxDQUFDLE9BQU87NkJBQ1QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDdEMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7NEJBQ2YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0NBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUc7b0NBQ25DLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTt3Q0FDMUQsT0FBTyxVQUFVLEtBQUssR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7b0NBQ3pELENBQUMsQ0FBQztpQ0FDSCxDQUFDOzZCQUNIO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNOO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sNEJBQTRCLENBQUMsUUFBaUI7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTztZQUN6QixFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7YUFDdkMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWCxHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN4QixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUNFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDbEMsSUFBSSxDQUFDLE9BQU87b0JBQ1YsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO3FCQUN2QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDWCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTt3QkFDMUIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7cUJBQ2hFO2dCQUNILENBQUMsQ0FBQztxQkFDRCxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakYsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO2dCQUN4RixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO29CQUNqQyxJQUFJLENBQUMsT0FBTztvQkFDWixDQUFDLElBQUksQ0FBQyxPQUFPO3lCQUNWLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNYLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFOzRCQUMxQixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQzt5QkFDaEU7b0JBQ0gsQ0FBQyxDQUFDO3lCQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQ3ZGO2dCQUNBLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs0SEE1VFUsOEJBQThCO2dIQUE5Qiw4QkFBOEIseVFDbkIzQyxvdUhBa0ZBOzRGRC9EYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNO3dHQUcvQixpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1cseUJBQXlCO3NCQUF6QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvd0RhdGEgfSBmcm9tICcuLi8uLi9tb2RlbC9yb3ctZGF0YSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVsL3NlbGVjdGlvbi1zZXR0aW5ncyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vei1kYXRhdGFibGUtc2VsZWN0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW96LWRhdGF0YWJsZS1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1vekRhdGF0YWJsZVNlbGVjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb25TZXR0aW5ncz86IFNlbGVjdGlvblNldHRpbmdzO1xuICBASW5wdXQoKSBwdWJsaWMgcGFnaW5hdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgcm93RGF0YT86IFJvd0RhdGFbXTtcbiAgQE91dHB1dCgpIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25BbGxFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25TZXR0aW5ncz4oKTtcblxuICBwdWJsaWMgaXNJbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncm93RGF0YSddKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzICYmIHRoaXMucm93RGF0YSkge1xuICAgICAgdGhpcy5yb3dEYXRhXG4gICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgIChyb3c6IFJvd0RhdGEpID0+XG4gICAgICAgICAgICAhcm93LmRpc2FibGVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgIHJvdy5zZWxlY3RlZCAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncz8uc2VsZWN0ZWRJZHMuZmlsdGVyKChzZWxlY3RlZFJvdykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5hbGxTZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MgJiZcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFJvdyA9PT0gcm93W3RoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSkubGVuZ3RoID09PSAwXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKHJvdzogUm93RGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzLnB1c2goXG4gICAgICAgICAgICByb3dbdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICBpZiAoXG4gICAgICAgICh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5zZWxlY3RlZElkcyB8fCBbXSkubGVuZ3RoID09PVxuICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IHRoaXMuaXNBbGxQYWdlUm93QXJlU2VsZWN0ZWQoKTtcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlT25Sb3dEYXRhKHRydWUpO1xuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IHRoaXMuaXNBbGxQYWdlUm93QXJlU2VsZWN0ZWQoKTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQWxsRW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVPblJvd0RhdGEoZmFsc2UpO1xuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IHRoaXMuaXNBbGxQYWdlUm93QXJlU2VsZWN0ZWQoKTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQWxsRW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQWxsUGFnZVJvd0FyZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnJvd0RhdGEpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMucm93RGF0YS5maWx0ZXIoXG4gICAgICAgIChyb3cpID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbiAmJiByb3cuc2VsZWN0ZWQgPT09IHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBzZWxlY3RlZFJvd3MubGVuZ3RoID09PSB0aGlzLnJvd0RhdGEuZmlsdGVyKChyb3cpID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbikubGVuZ3RoICYmXG4gICAgICAgIHRoaXMucm93RGF0YS5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKS5sZW5ndGggPiAwXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25VZHBhdGVTZWxlY3Rpb25Sb3cocm93OiBSb3dEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVDb3VudEl0ZW1TZWxlY3Rpb24ocm93KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVkcGF0ZVNlbGVjdGlvbkFsbFBhZ2VSb3dzKCRldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlT25Sb3dEYXRhKCRldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgdGhpcy5oYW5kbGVDb3VudEFsbFNlbGVjdGlvbih0aGlzLmlzQWxsUGFnZVJvd0FyZVNlbGVjdGVkKCkpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNvdW50SXRlbVNlbGVjdGlvbihyb3c6IFJvd0RhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXkgPSB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkKSB7XG4gICAgICAgIGlmIChyb3cuc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcy5maWx0ZXIoKGRlc2VsZWN0ZWRJZCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZGVzZWxlY3RlZElkICE9PSByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMsXG4gICAgICAgICAgICAgIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtcbiAgICAgICAgICAgICAgLi4udGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSWQpID0+IHNlbGVjdGVkSWQgIT09IHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aCA9PT1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyb3cuc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyxcbiAgICAgICAgICAgIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldLFxuICAgICAgICAgIF07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRW5hYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMuZmlsdGVyKChzZWxlY3RlZElkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZElkICE9PSByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gdGhpcy5pc1NlbGVjdGlvbkluZGV0ZXJtaW5hdGUoKTtcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ291bnRBbGxTZWxlY3Rpb24oYWxsUGFnZVJvd3NTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXkgPSB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5hbGxTZWxlY3RlZCkge1xuICAgICAgICBpZiAodGhpcy5pc0luZGV0ZXJtaW5hdGUgJiYgdGhpcy5yb3dEYXRhKSB7XG4gICAgICAgICAgdGhpcy5yb3dEYXRhXG4gICAgICAgICAgICAuZmlsdGVyKChyb3cpID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbilcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIChyb3cpID0+XG4gICAgICAgICAgICAgICAgISh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5zZWxlY3RlZElkcyB8fCBbXSkuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyxcbiAgICAgICAgICAgICAgICAgIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucm93RGF0YVxuICAgICAgICAgICAgLmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gWy4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHNdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMucm93RGF0YVxuICAgICAgICAgICAgICA/LmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnJvd0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMsXG4gICAgICAgICAgICAgIC4uLnRoaXMucm93RGF0YVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAoKHJvdykgPT4gcm93W3NlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV0pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcyA9IFtdO1xuICAgICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLnJvd0RhdGFcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICByb3cuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYWxsUGFnZVJvd3NTZWxlY3RlZCAmJiB0aGlzLnJvd0RhdGEpIHtcbiAgICAgICAgICB0aGlzLnJvd0RhdGFcbiAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKHJvdykgPT5cbiAgICAgICAgICAgICAgICAhKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzIHx8IFtdKS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzLFxuICAgICAgICAgICAgICAgICAgcm93W3NlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRW5hYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucm93RGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yb3dEYXRhXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMuZmlsdGVyKChzZWxlY3RlZElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSWQgIT09IHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFZhbHVlT25Sb3dEYXRhKHNlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEYXRhID0gdGhpcy5yb3dEYXRhXG4gICAgICA/LmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAubWFwKChyb3cpID0+IHtcbiAgICAgICAgcm93LnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTZWxlY3Rpb25JbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICBpZiAoXG4gICAgICAgICghdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCAmJlxuICAgICAgICAgIHRoaXMucm93RGF0YVxuICAgICAgICAgICAgPy5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1t0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+ICh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5zZWxlY3RlZElkcyB8fCBbXSkuaW5jbHVkZXMoaXRlbSkpKSB8fFxuICAgICAgICAoIXRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICh0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkICYmXG4gICAgICAgICAgdGhpcy5yb3dEYXRhICYmXG4gICAgICAgICAgIXRoaXMucm93RGF0YVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1t0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc29tZSgoaWQpID0+ICh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5leGNsdWRlZElkcyB8fCBbXSkuaW5jbHVkZXMoaWQpKSkgfHxcbiAgICAgICAgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcy5sZW5ndGggPT09IDApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fc2VsZWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25TZXR0aW5ncyAmJiBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMgJiYgcGFnaW5hdGlvbkVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX190b3BiYXItc2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoIHx8IHNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXItc2VsZWN0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkOyBlbHNlIG5vdEFsbFNlbGVjdGVkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMubGVuZ3RoID4gMDsgZWxzZSBleGx1ZGVkSWRzRW1wdHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgPGJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtcyAtIHNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5zZWxlY3RlZExhYmVsIHx8ICdzZWxlY3RlZCcgfX08L2JcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXMgLVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHBsdXJpYWxBbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93T25QYWdlTGFiZWwgfHwgJ3JvdyBvbiB0aGUgcGFnZS4gJyB9fS1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsdXJpYWxBbGxTZWxlY3RlZD5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9cIiAoY2xpY2spPVwic2VsZWN0QWxsKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMuc2VsZWN0QWxsTGFiZWwgfHwgJ1NlbGVjdCBhbGwnIH19XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtcyB9fVxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uU2V0dGluZ3MubGFiZWxzLnJvd3NPZlRhYmxlTGFiZWwgfHwgJ3Jvd3Mgb2YgdGhlIHRhYmxlJyB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2V4bHVkZWRJZHNFbXB0eT5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzU2VsZWN0ZWRMYWJlbCB8fFxuICAgICAgICAgICAgICAgICAgICAnQWxsIHJvd3MgYXJlIHNlbGVjdGVkIGluIHRoZSB0YWJsZS4nXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9cIiAoY2xpY2spPVwiY2xlYXJBbGwoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5jbGVhclNlbGVjdGlvbkxhYmVsIHx8ICdDbGVhciBzZWxlY3Rpb24nIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QWxsU2VsZWN0ZWQ+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGJcbiAgICAgICAgICAgICAgICA+e3sgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoIH19XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uU2V0dGluZ3MubGFiZWxzLnNlbGVjdGVkTGFiZWwgfHwgJ3NlbGVjdGVkJyB9fTwvYlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzICYmIHNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgJiYgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHBsdXJpYWxOb3RBbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93T25QYWdlTGFiZWwgfHwgJ3JvdyBvbiB0aGUgcGFnZS4gJyB9fS1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsdXJpYWxOb3RBbGxTZWxlY3RlZD5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiL1wiIChjbGljayk9XCJzZWxlY3RBbGwoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5zZWxlY3RBbGxMYWJlbCB8fCAnU2VsZWN0IGFsbCcgfX1cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zIH19XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93c09mVGFibGVMYWJlbCB8fCAncm93cyBvZiB0aGUgdGFibGUnIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZGF0YXRhYmxlL2NvbXBvbmVudHMvc2VsZWN0aW9uL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2RhdGF0YWJsZS9jb21wb25lbnRzL3NlbGVjdGlvbi9tb3otZGF0YXRhYmxlLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7O0FBVXZCLE1BQU0sT0FBTyw4QkFBOEI7SUFRekMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKekIsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFNUUsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUFFSyxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx3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QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUN2RjtnQkFDQSxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7NEhBbFNVLDhCQUE4QjtnSEFBOUIsOEJBQThCLHlRQ25CM0Msb3VIQWtGQTs0RkQvRGEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTt3R0FHL0IsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNXLHlCQUF5QjtzQkFBekMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvcm93LWRhdGEnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbC9zZWxlY3Rpb24tc2V0dGluZ3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb3otZGF0YXRhYmxlLXNlbGVjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3otZGF0YXRhYmxlLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb3pEYXRhdGFibGVTZWxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uU2V0dGluZ3M/OiBTZWxlY3Rpb25TZXR0aW5ncztcbiAgQElucHV0KCkgcHVibGljIHBhZ2luYXRpb25FbmFibGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHJvd0RhdGE/OiBSb3dEYXRhW107XG4gIEBPdXRwdXQoKSBwdWJsaWMgdXBkYXRlU2VsZWN0aW9uQWxsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uU2V0dGluZ3M+KCk7XG5cbiAgcHVibGljIGlzSW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Jvd0RhdGEnXSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVPblJvd0RhdGEodHJ1ZSk7XG4gICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuaXNTZWxlY3Rpb25JbmRldGVybWluYXRlKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQWxsRW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVPblJvd0RhdGEoZmFsc2UpO1xuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25BbGxFbWl0dGVyLmVtaXQodGhpcy5zZWxlY3Rpb25TZXR0aW5ncyk7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNBbGxQYWdlUm93QXJlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3Rpb25TZXR0aW5ncz8udG90YWxTZWxlY3RhYmxlSXRlbXMgfHxcbiAgICAgICh0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5hbGxTZWxlY3RlZCA/PyBmYWxzZSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uVWRwYXRlU2VsZWN0aW9uUm93KHJvdzogUm93RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlQ291bnRJdGVtU2VsZWN0aW9uKHJvdyk7XG4gIH1cblxuICBwdWJsaWMgb25VZHBhdGVTZWxlY3Rpb25BbGxQYWdlUm93cygkZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZU9uUm93RGF0YSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIHRoaXMuaGFuZGxlQ291bnRBbGxTZWxlY3Rpb24odGhpcy5pc0FsbFBhZ2VSb3dBcmVTZWxlY3RlZCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDb3VudEl0ZW1TZWxlY3Rpb24ocm93OiBSb3dEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5ID0gdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXk7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCkge1xuICAgICAgICBpZiAocm93LnNlbGVjdGVkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMuZmlsdGVyKChkZXNlbGVjdGVkSWQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2VsZWN0ZWRJZCAhPT0gJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMsXG4gICAgICAgICAgICAgICcnICsgcm93W3NlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV0sXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW1xuICAgICAgICAgICAgICAuLi50aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJZCkgPT4gc2VsZWN0ZWRJZCAhPT0gJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aCA9PT1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJvdy5zZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzLFxuICAgICAgICAgICAgJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoID09PVxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMuZmlsdGVyKChzZWxlY3RlZElkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZElkICE9PSAnJyArIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmlzU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb3VudEFsbFNlbGVjdGlvbihhbGxQYWdlUm93c1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleSA9IHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5O1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LmFsbFNlbGVjdGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW5kZXRlcm1pbmF0ZSAmJiB0aGlzLnJvd0RhdGEpIHtcbiAgICAgICAgICB0aGlzLnJvd0RhdGFcbiAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcy5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gWy4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHNdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMucm93RGF0YVxuICAgICAgICAgICAgICA/LmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnJvd0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMsXG4gICAgICAgICAgICAgIC4uLnRoaXMucm93RGF0YVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAoKHJvdykgPT4gJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aCA9PT1cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtc1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW107XG4gICAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMucm93RGF0YVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChyb3cpID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbilcbiAgICAgICAgICAgICAgICAubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJvdy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhbGxQYWdlUm93c1NlbGVjdGVkICYmIHRoaXMucm93RGF0YSkge1xuICAgICAgICAgIHRoaXMucm93RGF0YVxuICAgICAgICAgICAgLmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAocm93KSA9PlxuICAgICAgICAgICAgICAgICEodGhpcy5zZWxlY3Rpb25TZXR0aW5ncz8uc2VsZWN0ZWRJZHMgfHwgW10pLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgJycgKyByb3dbc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyxcbiAgICAgICAgICAgICAgICAgICcnICsgcm93W3NlbGVjdGlvbklkZW50aWZpZXJGaWVsZEtleV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcy5sZW5ndGggPT09XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRW5hYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gdGhpcy5yb3dEYXRhXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uICYmIHJvdy5zZWxlY3RlZClcbiAgICAgICAgICAgICAgLm1hcCgocm93KSA9PiAnJyArIHJvd1tzZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldKTtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsRWxlbWVudEFyZVNlbGVjdGVkID0gdGhpcy5pc0FsbFBhZ2VSb3dBcmVTZWxlY3RlZCgpO1xuICAgICAgICAgICAgaWYgKHRvdGFsRWxlbWVudEFyZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gdGhpcy5pc1NlbGVjdGlvbkluZGV0ZXJtaW5hdGUoKTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblNldHRpbmdzICYmIHRoaXMucm93RGF0YSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzKSB7XG4gICAgICAgIHRoaXMucm93RGF0YS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzPy5hbGxTZWxlY3RlZCB8fFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncz8uc2VsZWN0ZWRJZHMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICcnICsgcm93W3RoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcm93LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm93LnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzIHx8IFtdKS5sZW5ndGggPT09XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXNcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuaXNTZWxlY3Rpb25JbmRldGVybWluYXRlKCk7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgPSB0aGlzLmlzQWxsUGFnZVJvd0FyZVNlbGVjdGVkKCk7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkVmFsdWVPblJvd0RhdGEoc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLnJvd0RhdGFcbiAgICAgID8uZmlsdGVyKChyb3cpID0+ICFyb3cuZGlzYWJsZVNlbGVjdGlvbilcbiAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICByb3cuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NlbGVjdGlvbkluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKCF0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkICYmXG4gICAgICAgICAgdGhpcy5yb3dEYXRhXG4gICAgICAgICAgICA/LmZpbHRlcigocm93KSA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pXG4gICAgICAgICAgICAubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93W3RoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0aW9uSWRlbnRpZmllckZpZWxkS2V5XTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5ldmVyeSgoaXRlbSkgPT4gKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3M/LnNlbGVjdGVkSWRzIHx8IFtdKS5pbmNsdWRlcygnJyArIGl0ZW0pKSkgfHxcbiAgICAgICAgKCF0aGlzLnNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5hbGxTZWxlY3RlZCAmJlxuICAgICAgICAgIHRoaXMucm93RGF0YSAmJlxuICAgICAgICAgICF0aGlzLnJvd0RhdGFcbiAgICAgICAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dbdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5zZWxlY3Rpb25JZGVudGlmaWVyRmllbGRLZXldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnNvbWUoKGlkKSA9PiAodGhpcy5zZWxlY3Rpb25TZXR0aW5ncz8uZXhjbHVkZWRJZHMgfHwgW10pLmluY2x1ZGVzKCcnICsgaWQpKSkgfHxcbiAgICAgICAgKHRoaXMuc2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25TZXR0aW5ncy5leGNsdWRlZElkcy5sZW5ndGggPT09IDApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fc2VsZWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25TZXR0aW5ncyAmJiBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMgJiYgcGFnaW5hdGlvbkVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX190b3BiYXItc2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoIHx8IHNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXItc2VsZWN0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkOyBlbHNlIG5vdEFsbFNlbGVjdGVkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uU2V0dGluZ3MuZXhjbHVkZWRJZHMubGVuZ3RoID4gMDsgZWxzZSBleGx1ZGVkSWRzRW1wdHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgPGJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtcyAtIHNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5zZWxlY3RlZExhYmVsIHx8ICdzZWxlY3RlZCcgfX08L2JcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0dGluZ3MudG90YWxTZWxlY3RhYmxlSXRlbXMgLVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldHRpbmdzLmV4Y2x1ZGVkSWRzLmxlbmd0aCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHBsdXJpYWxBbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93T25QYWdlTGFiZWwgfHwgJ3JvdyBvbiB0aGUgcGFnZS4gJyB9fS1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsdXJpYWxBbGxTZWxlY3RlZD5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9cIiAoY2xpY2spPVwic2VsZWN0QWxsKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMuc2VsZWN0QWxsTGFiZWwgfHwgJ1NlbGVjdCBhbGwnIH19XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy50b3RhbFNlbGVjdGFibGVJdGVtcyB9fVxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uU2V0dGluZ3MubGFiZWxzLnJvd3NPZlRhYmxlTGFiZWwgfHwgJ3Jvd3Mgb2YgdGhlIHRhYmxlJyB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2V4bHVkZWRJZHNFbXB0eT5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzU2VsZWN0ZWRMYWJlbCB8fFxuICAgICAgICAgICAgICAgICAgICAnQWxsIHJvd3MgYXJlIHNlbGVjdGVkIGluIHRoZSB0YWJsZS4nXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9cIiAoY2xpY2spPVwiY2xlYXJBbGwoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5jbGVhclNlbGVjdGlvbkxhYmVsIHx8ICdDbGVhciBzZWxlY3Rpb24nIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QWxsU2VsZWN0ZWQ+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGJcbiAgICAgICAgICAgICAgICA+e3sgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoIH19XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uU2V0dGluZ3MubGFiZWxzLnNlbGVjdGVkTGFiZWwgfHwgJ3NlbGVjdGVkJyB9fTwvYlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzICYmIHNlbGVjdGlvblNldHRpbmdzLnNlbGVjdGVkSWRzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMgJiYgc2VsZWN0aW9uU2V0dGluZ3Muc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHBsdXJpYWxOb3RBbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93T25QYWdlTGFiZWwgfHwgJ3JvdyBvbiB0aGUgcGFnZS4gJyB9fS1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsdXJpYWxOb3RBbGxTZWxlY3RlZD5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5yb3dzT25QYWdlTGFiZWwgfHwgJ3Jvd3Mgb24gdGhlIHBhZ2UuICcgfX0tXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiL1wiIChjbGljayk9XCJzZWxlY3RBbGwoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLmxhYmVscy5zZWxlY3RBbGxMYWJlbCB8fCAnU2VsZWN0IGFsbCcgfX1cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblNldHRpbmdzLnRvdGFsU2VsZWN0YWJsZUl0ZW1zIH19XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3Rpb25TZXR0aW5ncy5sYWJlbHMucm93c09mVGFibGVMYWJlbCB8fCAncm93cyBvZiB0aGUgdGFibGUnIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|