myrta-ui 17.2.6 → 17.2.8
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/lib/components/form/checkbox-group/checkbox-group.component.mjs +4 -78
- package/esm2022/lib/components/form/editor/editor.component.mjs +59 -15
- package/esm2022/lib/components/form/radio/radio.component.mjs +7 -4
- package/esm2022/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.mjs +2 -2
- package/esm2022/lib/components/form/radio-group/radio-group.component.mjs +2 -2
- package/fesm2022/myrta-ui.mjs +69 -96
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/components/form/checkbox-group/checkbox-group.component.d.ts +1 -7
- package/lib/components/form/radio/radio.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -37,10 +37,6 @@ export class CheckboxGroupComponent {
|
|
|
37
37
|
customClasses = '';
|
|
38
38
|
expandable = false;
|
|
39
39
|
isExpanded = false;
|
|
40
|
-
minSelected = null; // минимальное количество выбранных
|
|
41
|
-
maxSelected = null; // максимальное количество выбранных
|
|
42
|
-
minSelectedMessage = 'Выберите минимум {count} вариант(ов)';
|
|
43
|
-
maxSelectedMessage = 'Выберите максимум {count} вариант(ов)';
|
|
44
40
|
// TOOLTIP
|
|
45
41
|
tooltip = '';
|
|
46
42
|
// LABEL
|
|
@@ -72,33 +68,10 @@ export class CheckboxGroupComponent {
|
|
|
72
68
|
return this.list.some((item) => item.items?.length);
|
|
73
69
|
}
|
|
74
70
|
get getInvalid() {
|
|
75
|
-
|
|
76
|
-
if (this.invalid) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
// Проверяем минимальное количество
|
|
80
|
-
if (this.minSelected !== null && this.checkedList.length < this.minSelected) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
// Проверяем максимальное количество
|
|
84
|
-
if (this.maxSelected !== null && this.checkedList.length > this.maxSelected) {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
71
|
+
return this.invalid;
|
|
88
72
|
}
|
|
89
73
|
get getInvalidMessage() {
|
|
90
|
-
|
|
91
|
-
if (this.invalidMessage) {
|
|
92
|
-
return this.invalidMessage;
|
|
93
|
-
}
|
|
94
|
-
// Генерируем сообщение на основе нарушенного ограничения
|
|
95
|
-
if (this.minSelected !== null && this.checkedList.length < this.minSelected) {
|
|
96
|
-
return this.minSelectedMessage.replace('{count}', this.minSelected.toString());
|
|
97
|
-
}
|
|
98
|
-
if (this.maxSelected !== null && this.checkedList.length > this.maxSelected) {
|
|
99
|
-
return this.maxSelectedMessage.replace('{count}', this.maxSelected.toString());
|
|
100
|
-
}
|
|
101
|
-
return '';
|
|
74
|
+
return this.invalidMessage;
|
|
102
75
|
}
|
|
103
76
|
get getClasses() {
|
|
104
77
|
return `${this.customClasses}`;
|
|
@@ -136,22 +109,6 @@ export class CheckboxGroupComponent {
|
|
|
136
109
|
const findItem = getItemInnerById(cloneList, item.id);
|
|
137
110
|
let changedItem = null;
|
|
138
111
|
if (findItem) {
|
|
139
|
-
// Проверяем ограничение на максимальное количество при попытке выбрать
|
|
140
|
-
if (value === true && this.maxSelected !== null) {
|
|
141
|
-
const currentCheckedCount = getCheckedItems(cloneList).length;
|
|
142
|
-
if (currentCheckedCount >= this.maxSelected) {
|
|
143
|
-
// Не позволяем выбрать больше максимума
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
// Проверяем ограничение на минимальное количество при попытке снять выбор
|
|
148
|
-
if (value === false && this.minSelected !== null) {
|
|
149
|
-
const currentCheckedCount = getCheckedItems(cloneList).length;
|
|
150
|
-
if (currentCheckedCount <= this.minSelected && this.isItemChecked(findItem)) {
|
|
151
|
-
// Не позволяем снять выбор, если будет меньше минимума
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
112
|
changedItem = changeItemValue(findItem, value);
|
|
156
113
|
changeGroupValue(cloneList, item.parentId, value);
|
|
157
114
|
getSortedList(cloneList, this.sortable);
|
|
@@ -165,30 +122,7 @@ export class CheckboxGroupComponent {
|
|
|
165
122
|
}
|
|
166
123
|
this._detector.detectChanges();
|
|
167
124
|
}
|
|
168
|
-
isItemChecked(item) {
|
|
169
|
-
return item.value === true;
|
|
170
|
-
}
|
|
171
|
-
checkAll() {
|
|
172
|
-
if (this.maxSelected !== null && this.innerList.length > this.maxSelected) {
|
|
173
|
-
// Если максимум меньше общего количества, выводим ошибку
|
|
174
|
-
console.warn(`Cannot select all items. Max selected is ${this.maxSelected}, total items is ${this.innerList.length}`);
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const cloneList = cloneDeep(this.innerList);
|
|
178
|
-
changeListValue(cloneList, true);
|
|
179
|
-
getSortedList(cloneList, this.sortable);
|
|
180
|
-
this.innerList = cloneList;
|
|
181
|
-
this.filteredList = filterSearchGroup(this.innerList, this._searchValue);
|
|
182
|
-
this.checkedList = getCheckedItems(cloneList);
|
|
183
|
-
this.updateValue([], this.checkedList);
|
|
184
|
-
this._detector.detectChanges();
|
|
185
|
-
}
|
|
186
125
|
clearFilters() {
|
|
187
|
-
if (this.minSelected !== null && this.minSelected > 0) {
|
|
188
|
-
// Если есть минимальное ограничение, не позволяем очистить все
|
|
189
|
-
console.warn(`Cannot clear all items. Min selected is ${this.minSelected}`);
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
126
|
const cloneList = cloneDeep(this.filteredList);
|
|
193
127
|
changeListValue(cloneList, false);
|
|
194
128
|
getSortedList(cloneList, this.sortable);
|
|
@@ -218,7 +152,7 @@ export class CheckboxGroupComponent {
|
|
|
218
152
|
}
|
|
219
153
|
}
|
|
220
154
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
221
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CheckboxGroupComponent, selector: "mrx-checkbox-group", inputs: { fields: "fields", scrollMaxHeight: "scrollMaxHeight", searchable: "searchable", scrollable: "scrollable", sortable: "sortable", disabled: "disabled", readonly: "readonly", enableMessage: "enableMessage", searchPlaceholder: "searchPlaceholder", customClasses: "customClasses", expandable: "expandable", isExpanded: "isExpanded",
|
|
155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CheckboxGroupComponent, selector: "mrx-checkbox-group", inputs: { fields: "fields", scrollMaxHeight: "scrollMaxHeight", searchable: "searchable", scrollable: "scrollable", sortable: "sortable", disabled: "disabled", readonly: "readonly", enableMessage: "enableMessage", searchPlaceholder: "searchPlaceholder", customClasses: "customClasses", expandable: "expandable", isExpanded: "isExpanded", tooltip: "tooltip", labelText: "labelText", linkText: "linkText", invalid: "invalid", invalidMessage: "invalidMessage", items: "items" }, outputs: { changed: "changed", modelChange: "modelChange", changedInner: "changedInner", modelChangeInner: "modelChangeInner", modelItemChange: "modelItemChange" }, providers: [
|
|
222
156
|
{
|
|
223
157
|
provide: NG_VALUE_ACCESSOR,
|
|
224
158
|
useExisting: forwardRef(() => CheckboxGroupComponent),
|
|
@@ -265,14 +199,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
265
199
|
type: Input
|
|
266
200
|
}], isExpanded: [{
|
|
267
201
|
type: Input
|
|
268
|
-
}], minSelected: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], maxSelected: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], minSelectedMessage: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], maxSelectedMessage: [{
|
|
275
|
-
type: Input
|
|
276
202
|
}], tooltip: [{
|
|
277
203
|
type: Input
|
|
278
204
|
}], labelText: [{
|
|
@@ -299,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
299
225
|
}], modelItemChange: [{
|
|
300
226
|
type: Output
|
|
301
227
|
}] } });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vY2hlY2tib3gtZ3JvdXAvY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vY2hlY2tib3gtZ3JvdXAvY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU96RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBa0J0RSxNQUFNLE9BQU8sc0JBQXNCO0lBNkRiO0lBNURaLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFbkIsSUFBSSxHQUF3QixFQUFFLENBQUM7SUFDL0IsU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFekMsV0FBVyxHQUE2QixFQUFFLENBQUM7SUFDM0MsWUFBWSxHQUE2QixFQUFFLENBQUM7SUFFbkQsYUFBYTtJQUNOLElBQUksR0FBVyxJQUFJLEVBQUUsQ0FBQztJQUNiLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFFckIsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUN0QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsYUFBYSxHQUFHLG1CQUFtQixDQUFDO0lBQ3BDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUN2QixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUU1QixXQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFFLG1DQUFtQztJQUN2RSxXQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFFLG9DQUFvQztJQUV4RSxrQkFBa0IsR0FBVyxzQ0FBc0MsQ0FBQztJQUNwRSxrQkFBa0IsR0FBVyx1Q0FBdUMsQ0FBQztJQUVyRixVQUFVO0lBQ0QsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUV0QixRQUFRO0lBQ0MsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFdkIsV0FBVztJQUNLLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsY0FBYyxHQUFzQixFQUFFLENBQUM7SUFFdkQsSUFBYSxLQUFLLENBQUMsSUFBeUI7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRStCLGlCQUFpQixDQUFjO0lBRTlDLE9BQU8sR0FBc0MsSUFBSSxZQUFZLEVBQXVCLENBQUM7SUFDckYsV0FBVyxHQUEyQyxJQUFJLFlBQVksRUFBNEIsQ0FBQztJQUVuRyxZQUFZLEdBQTJDLElBQUksWUFBWSxFQUE0QixDQUFDO0lBQ3BHLGdCQUFnQixHQUFnRCxJQUFJLFlBQVksRUFBaUMsQ0FBQztJQUVsSCxlQUFlLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO0lBRXBILFlBQW9CLFNBQTRCO1FBQTVCLGNBQVMsR0FBVCxTQUFTLENBQW1CO0lBQ2hELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQiw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzdCLENBQUM7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUM7UUFDdEQsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNsRSxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUE0QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLFFBQVEsR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtJQUNsRCxDQUFDLENBQUM7SUFDTSxTQUFTLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLENBQUMsQ0FBQztJQUVLLFVBQVUsQ0FBQyxhQUFrQztRQUNsRCxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sOEJBQThCLENBQUMsV0FBbUI7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sZUFBZSxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBMEQ7UUFDM0YsTUFBTSxTQUFTLEdBQTZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEUsTUFBTSxRQUFRLEdBQWtDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckYsSUFBSSxXQUFXLEdBQWtDLElBQUksQ0FBQztRQUV0RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsdUVBQXVFO1lBQ3ZFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNoRCxNQUFNLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQzlELElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUM1Qyx3Q0FBd0M7b0JBQ3hDLE9BQU87Z0JBQ1QsQ0FBQztZQUNILENBQUM7WUFFRCwwRUFBMEU7WUFDMUUsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDOUQsSUFBSSxtQkFBbUIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDNUUsdURBQXVEO29CQUN2RCxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDO1lBRUQsV0FBVyxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXZDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUE0QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUUseURBQXlEO1lBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLElBQUksQ0FBQyxXQUFXLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEgsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBNkIsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELCtEQUErRDtZQUMvRCxPQUFPLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUM1RSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUE2QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBTztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQXlCLEVBQUUsV0FBcUM7UUFDakYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUV4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUVuRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7d0dBOVBVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDB6QkFSdEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysa0pDM0NILDY4REFpREE7NEdESmEsc0JBQXNCLGNBZnJCLHNCQUFzQjs7NEZBZXZCLHNCQUFzQjtrQkFoQmxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSx3QkFBd0I7aUJBQ25DOztrQkFDQSxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtzRkFhZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUVPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBUzBCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRWIsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUVVLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUVVLGVBQWU7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDaGVja2JveEdyb3VwSW5uZXJJdGVtLFxyXG4gIENoZWNrYm94R3JvdXBJdGVtLFxyXG4gIENoZWNrYm94R3JvdXBWYWx1ZUlubmVyV2l0aElkLFxyXG4gIENoZWNrYm94R3JvdXBWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vbW9kZWxzL2NoZWNrYm94LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgZ2V0U29ydGVkTGlzdCB9IGZyb20gJy4vaGVscGVycy9nZXQtc29ydGVkLWxpc3QnO1xyXG5pbXBvcnQgeyBmaWx0ZXJTZWFyY2hHcm91cCB9IGZyb20gJy4vaGVscGVycy9maWx0ZXItc2VhcmNoLWdyb3VwJztcclxuaW1wb3J0IHsgZ2V0SXRlbUlubmVyQnlJZCB9IGZyb20gJy4vaGVscGVycy9nZXQtaXRlbS1ieS1pZCc7XHJcbmltcG9ydCB7IGNoYW5nZUl0ZW1WYWx1ZSwgY2hhbmdlTGlzdFZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzL2NoYW5nZS1pdGVtLXZhbHVlJztcclxuaW1wb3J0IHsgY2hhbmdlR3JvdXBWYWx1ZSB9IGZyb20gJy4vaGVscGVycy9jaGFuZ2UtZ3JvdXAtdmFsdWUnO1xyXG5pbXBvcnQgeyBnZXRDaGVja2VkSXRlbXMgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWNoZWNrZWQtaXRlbXMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRJbm5lckxpc3QgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWlubmVyLWxpc3QuaGVscGVyJztcclxuaW1wb3J0IHsgaW5uZXJMaXN0VG9MaXN0IH0gZnJvbSAnLi9oZWxwZXJzL2lubmVyLWxpc3QtdG8tbGlzdC5oZWxwZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IENoZWNrYm94R3JvdXBDb21wb25lbnRcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtY2hlY2tib3gtZ3JvdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94R3JvdXBDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfc2VhcmNoVmFsdWUgPSAnJztcclxuXHJcbiAgcHVibGljIGxpc3Q6IENoZWNrYm94R3JvdXBJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgaW5uZXJMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGNoZWNrZWRMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgZmlsdGVyZWRMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkKCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsTWF4SGVpZ2h0ID0gMjAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc29ydGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlTWVzc2FnZSA9ICfQndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3Qvic7XHJcbiAgQElucHV0KCkgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5TZWxlY3RlZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7ICAvLyDQvNC40L3QuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INCy0YvQsdGA0LDQvdC90YvRhVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTZWxlY3RlZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7ICAvLyDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLRi9Cx0YDQsNC90L3Ri9GFXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5TZWxlY3RlZE1lc3NhZ2U6IHN0cmluZyA9ICfQktGL0LHQtdGA0LjRgtC1INC80LjQvdC40LzRg9C8IHtjb3VudH0g0LLQsNGA0LjQsNC90YIo0L7QsiknO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTZWxlY3RlZE1lc3NhZ2U6IHN0cmluZyA9ICfQktGL0LHQtdGA0LjRgtC1INC80LDQutGB0LjQvNGD0Lwge2NvdW50fSDQstCw0YDQuNCw0L3RgijQvtCyKSc7XHJcblxyXG4gIC8vIFRPT0xUSVBcclxuICBASW5wdXQoKSB0b29sdGlwID0gJyc7XHJcblxyXG4gIC8vIExBQkVMXHJcbiAgQElucHV0KCkgbGFiZWxUZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgbGlua1RleHQgPSAnJztcclxuXHJcbiAgLy8gVkFMSURBVEVcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuXHJcbiAgQElucHV0KCkgc2V0IGl0ZW1zKGxpc3Q6IENoZWNrYm94R3JvdXBJdGVtW10pIHtcclxuICAgIHRoaXMubGlzdCA9IGxpc3Q7XHJcbiAgICB0aGlzLl91cGRhdGVNb2RpZmllZExpc3QoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtcygpOiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JvdXBJdGVtc1dyYXBwZXInKSBncm91cEl0ZW1zV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwSXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZElubmVyOiBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2VJbm5lcjogRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBWYWx1ZUlubmVyV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cFZhbHVlSW5uZXJXaXRoSWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBJbm5lckl0ZW0+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc3BsYWNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxpc3Quc29tZSgoaXRlbTogQ2hlY2tib3hHcm91cEl0ZW0pID0+IGl0ZW0uaXRlbXM/Lmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyDQn9GA0L7QstC10YDRj9C10Lwg0LHQsNC30L7QstGD0Y4g0LLQsNC70LjQtNCw0YbQuNGOXHJcbiAgICBpZiAodGhpcy5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyDQn9GA0L7QstC10YDRj9C10Lwg0LzQuNC90LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQvlxyXG4gICAgaWYgKHRoaXMubWluU2VsZWN0ZWQgIT09IG51bGwgJiYgdGhpcy5jaGVja2VkTGlzdC5sZW5ndGggPCB0aGlzLm1pblNlbGVjdGVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyDQn9GA0L7QstC10YDRj9C10Lwg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+XHJcbiAgICBpZiAodGhpcy5tYXhTZWxlY3RlZCAhPT0gbnVsbCAmJiB0aGlzLmNoZWNrZWRMaXN0Lmxlbmd0aCA+IHRoaXMubWF4U2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SW52YWxpZE1lc3NhZ2UoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgLy8g0JXRgdC70Lgg0LXRgdGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LUg0YHQvtC+0LHRidC10L3QuNC1INC+0LEg0L7RiNC40LHQutC1LCDQuNGB0L/QvtC70YzQt9GD0LXQvCDQtdCz0L5cclxuICAgIGlmICh0aGlzLmludmFsaWRNZXNzYWdlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmludmFsaWRNZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyDQk9C10L3QtdGA0LjRgNGD0LXQvCDRgdC+0L7QsdGJ0LXQvdC40LUg0L3QsCDQvtGB0L3QvtCy0LUg0L3QsNGA0YPRiNC10L3QvdC+0LPQviDQvtCz0YDQsNC90LjRh9C10L3QuNGPXHJcbiAgICBpZiAodGhpcy5taW5TZWxlY3RlZCAhPT0gbnVsbCAmJiB0aGlzLmNoZWNrZWRMaXN0Lmxlbmd0aCA8IHRoaXMubWluU2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWluU2VsZWN0ZWRNZXNzYWdlLnJlcGxhY2UoJ3tjb3VudH0nLCB0aGlzLm1pblNlbGVjdGVkLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5tYXhTZWxlY3RlZCAhPT0gbnVsbCAmJiB0aGlzLmNoZWNrZWRMaXN0Lmxlbmd0aCA+IHRoaXMubWF4U2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4U2VsZWN0ZWRNZXNzYWdlLnJlcGxhY2UoJ3tjb3VudH0nLCB0aGlzLm1heFNlbGVjdGVkLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0U2hvd1Njcm9sbCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdyb3VwSXRlbXNXcmFwcGVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuICEhZWxlbWVudCAmJiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMuc2Nyb2xsTWF4SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBDaGVja2JveEdyb3VwSW5uZXJJdGVtKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IENoZWNrYm94R3JvdXBJdGVtW10pID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWU6IENoZWNrYm94R3JvdXBJdGVtW10pOiB2b2lkIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZExpc3QgPSBnZXRJbm5lckxpc3Qoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5jaGVja2VkTGlzdCk7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTGlzdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlTW9kaWZpZWRMaXN0KCkge1xyXG4gICAgdGhpcy5pbm5lckxpc3QgPSBnZXRJbm5lckxpc3QodGhpcy5saXN0LCB0aGlzLmNoZWNrZWRMaXN0KTtcclxuICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gZ2V0U29ydGVkTGlzdCh0aGlzLmlubmVyTGlzdCwgdGhpcy5zb3J0YWJsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tIZWlnaHRHcm91cFdyYXBwZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlQ2hlY2tib3hHcm91cFNlYXJjaFZhbHVlKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlYXJjaFZhbHVlID0gc2VhcmNoVmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IGZpbHRlclNlYXJjaEdyb3VwKHRoaXMuaW5uZXJMaXN0LCB0aGlzLl9zZWFyY2hWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tib3hDaGFuZ2VkKHt2YWx1ZSwgaXRlbX06IHsgdmFsdWU6IGJvb2xlYW4gfCBudWxsOyBpdGVtOiBDaGVja2JveEdyb3VwSW5uZXJJdGVtIH0pIHtcclxuICAgIGNvbnN0IGNsb25lTGlzdDogQ2hlY2tib3hHcm91cElubmVySXRlbVtdID0gY2xvbmVEZWVwKHRoaXMuaW5uZXJMaXN0KTtcclxuICAgIGNvbnN0IGZpbmRJdGVtOiBDaGVja2JveEdyb3VwSW5uZXJJdGVtIHwgbnVsbCA9IGdldEl0ZW1Jbm5lckJ5SWQoY2xvbmVMaXN0LCBpdGVtLmlkKTtcclxuXHJcbiAgICBsZXQgY2hhbmdlZEl0ZW06IENoZWNrYm94R3JvdXBJbm5lckl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAoZmluZEl0ZW0pIHtcclxuICAgICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8INC+0LPRgNCw0L3QuNGH0LXQvdC40LUg0L3QsCDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L/RgNC4INC/0L7Qv9GL0YLQutC1INCy0YvQsdGA0LDRgtGMXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSAmJiB0aGlzLm1heFNlbGVjdGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudENoZWNrZWRDb3VudCA9IGdldENoZWNrZWRJdGVtcyhjbG9uZUxpc3QpLmxlbmd0aDtcclxuICAgICAgICBpZiAoY3VycmVudENoZWNrZWRDb3VudCA+PSB0aGlzLm1heFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAvLyDQndC1INC/0L7Qt9Cy0L7Qu9GP0LXQvCDQstGL0LHRgNCw0YLRjCDQsdC+0LvRjNGI0LUg0LzQsNC60YHQuNC80YPQvNCwXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyDQn9GA0L7QstC10YDRj9C10Lwg0L7Qs9GA0LDQvdC40YfQtdC90LjQtSDQvdCwINC80LjQvdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L/RgNC4INC/0L7Qv9GL0YLQutC1INGB0L3Rj9GC0Ywg0LLRi9Cx0L7RgFxyXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlICYmIHRoaXMubWluU2VsZWN0ZWQgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50Q2hlY2tlZENvdW50ID0gZ2V0Q2hlY2tlZEl0ZW1zKGNsb25lTGlzdCkubGVuZ3RoO1xyXG4gICAgICAgIGlmIChjdXJyZW50Q2hlY2tlZENvdW50IDw9IHRoaXMubWluU2VsZWN0ZWQgJiYgdGhpcy5pc0l0ZW1DaGVja2VkKGZpbmRJdGVtKSkge1xyXG4gICAgICAgICAgLy8g0J3QtSDQv9C+0LfQstC+0LvRj9C10Lwg0YHQvdGP0YLRjCDQstGL0LHQvtGALCDQtdGB0LvQuCDQsdGD0LTQtdGCINC80LXQvdGM0YjQtSDQvNC40L3QuNC80YPQvNCwXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjaGFuZ2VkSXRlbSA9IGNoYW5nZUl0ZW1WYWx1ZShmaW5kSXRlbSwgdmFsdWUpO1xyXG4gICAgICBjaGFuZ2VHcm91cFZhbHVlKGNsb25lTGlzdCwgaXRlbS5wYXJlbnRJZCwgdmFsdWUpO1xyXG4gICAgICBnZXRTb3J0ZWRMaXN0KGNsb25lTGlzdCwgdGhpcy5zb3J0YWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbm5lckxpc3QgPSBjbG9uZUxpc3Q7XHJcbiAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IGZpbHRlclNlYXJjaEdyb3VwKHRoaXMuaW5uZXJMaXN0LCB0aGlzLl9zZWFyY2hWYWx1ZSk7XHJcbiAgICB0aGlzLmNoZWNrZWRMaXN0ID0gZ2V0Q2hlY2tlZEl0ZW1zKGNsb25lTGlzdCk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKFtdLCB0aGlzLmNoZWNrZWRMaXN0KTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZEl0ZW0pIHtcclxuICAgICAgdGhpcy5tb2RlbEl0ZW1DaGFuZ2UuZW1pdChjaGFuZ2VkSXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0l0ZW1DaGVja2VkKGl0ZW06IENoZWNrYm94R3JvdXBJbm5lckl0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpdGVtLnZhbHVlID09PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrQWxsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWF4U2VsZWN0ZWQgIT09IG51bGwgJiYgdGhpcy5pbm5lckxpc3QubGVuZ3RoID4gdGhpcy5tYXhTZWxlY3RlZCkge1xyXG4gICAgICAvLyDQldGB0LvQuCDQvNCw0LrRgdC40LzRg9C8INC80LXQvdGM0YjQtSDQvtCx0YnQtdCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAsINCy0YvQstC+0LTQuNC8INC+0YjQuNCx0LrRg1xyXG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBzZWxlY3QgYWxsIGl0ZW1zLiBNYXggc2VsZWN0ZWQgaXMgJHt0aGlzLm1heFNlbGVjdGVkfSwgdG90YWwgaXRlbXMgaXMgJHt0aGlzLmlubmVyTGlzdC5sZW5ndGh9YCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3QgY2xvbmVMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBjbG9uZURlZXAodGhpcy5pbm5lckxpc3QpO1xyXG4gICAgY2hhbmdlTGlzdFZhbHVlKGNsb25lTGlzdCwgdHJ1ZSk7XHJcbiAgICBnZXRTb3J0ZWRMaXN0KGNsb25lTGlzdCwgdGhpcy5zb3J0YWJsZSk7XHJcbiAgICBcclxuICAgIHRoaXMuaW5uZXJMaXN0ID0gY2xvbmVMaXN0O1xyXG4gICAgdGhpcy5maWx0ZXJlZExpc3QgPSBmaWx0ZXJTZWFyY2hHcm91cCh0aGlzLmlubmVyTGlzdCwgdGhpcy5fc2VhcmNoVmFsdWUpO1xyXG4gICAgdGhpcy5jaGVja2VkTGlzdCA9IGdldENoZWNrZWRJdGVtcyhjbG9uZUxpc3QpO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZShbXSwgdGhpcy5jaGVja2VkTGlzdCk7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMubWluU2VsZWN0ZWQgIT09IG51bGwgJiYgdGhpcy5taW5TZWxlY3RlZCA+IDApIHtcclxuICAgICAgLy8g0JXRgdC70Lgg0LXRgdGC0Ywg0LzQuNC90LjQvNCw0LvRjNC90L7QtSDQvtCz0YDQsNC90LjRh9C10L3QuNC1LCDQvdC1INC/0L7Qt9Cy0L7Qu9GP0LXQvCDQvtGH0LjRgdGC0LjRgtGMINCy0YHQtVxyXG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBjbGVhciBhbGwgaXRlbXMuIE1pbiBzZWxlY3RlZCBpcyAke3RoaXMubWluU2VsZWN0ZWR9YCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3QgY2xvbmVMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBjbG9uZURlZXAodGhpcy5maWx0ZXJlZExpc3QpO1xyXG4gICAgY2hhbmdlTGlzdFZhbHVlKGNsb25lTGlzdCwgZmFsc2UpO1xyXG4gICAgZ2V0U29ydGVkTGlzdChjbG9uZUxpc3QsIHRoaXMuc29ydGFibGUpO1xyXG4gICAgXHJcbiAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IGNsb25lTGlzdDtcclxuICAgIHRoaXMuY2hlY2tlZExpc3QgPSBnZXRDaGVja2VkSXRlbXMoY2xvbmVMaXN0KTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5maWx0ZXJlZExpc3QsIHRoaXMuY2hlY2tlZExpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUobGlzdDogQ2hlY2tib3hHcm91cEl0ZW1bXSwgY2hlY2tlZExpc3Q6IENoZWNrYm94R3JvdXBJbm5lckl0ZW1bXSk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xlYXJlZExpc3QgPSBpbm5lckxpc3RUb0xpc3QoY2hlY2tlZExpc3QpXHJcbiAgICBjb25zdCBjbGVhcmVkSW5uZXJMaXN0ID0gaW5uZXJMaXN0VG9MaXN0KHRoaXMuaW5uZXJMaXN0KVxyXG5cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KGNsZWFyZWRMaXN0KTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGNsZWFyZWRMaXN0LCBmdWxsOiBjbGVhcmVkSW5uZXJMaXN0LCBpZDogdGhpcy51dWlkfSk7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VkSW5uZXIuZW1pdChjaGVja2VkTGlzdCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlSW5uZXIuZW1pdCh7dmFsdWU6IGNoZWNrZWRMaXN0LCBmdWxsOiB0aGlzLmlubmVyTGlzdCwgaWQ6IHRoaXMudXVpZH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UoY2hlY2tlZExpc3QpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVDb250ZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xyXG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWNoZWNrYm94LWdyb3VwXCIgW2NsYXNzXT1cImdldENsYXNzZXNcIj5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiIHR5cGU9XCJjaGVja2JveEdyb3VwXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuXHJcbiAgPG1yeC1jaGVja2JveC1ncm91cC1oZWFkZXJcclxuICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgIFt0b29sdGlwXT1cInRvb2x0aXBcIlxyXG4gICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxyXG4gICAgW2xpbmtUZXh0XT1cImxpbmtUZXh0XCJcclxuICAgIFtjaGVja2VkSXRlbXNDb3VudF09XCJjaGVja2VkTGlzdC5sZW5ndGhcIlxyXG4gICAgW2V4cGFuZGFibGVdPVwiZXhwYW5kYWJsZVwiXHJcbiAgICBbaXNFeHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcclxuICAgICh1cGRhdGVDaGVja2JveEdyb3VwU2VhcmNoVmFsdWUpPVwidXBkYXRlQ2hlY2tib3hHcm91cFNlYXJjaFZhbHVlKCRldmVudClcIlxyXG4gICAgKGNsZWFyRmlsdGVycyk9XCJjbGVhckZpbHRlcnMoKVwiXHJcbiAgICAodG9nZ2xlKT1cInRvZ2dsZUNvbnRlbnQoKVwiXHJcbiAgPjwvbXJ4LWNoZWNrYm94LWdyb3VwLWhlYWRlcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHBhbmRhYmxlIHx8IGlzRXhwYW5kZWRcIj5cclxuICAgIEBpZiAoZmlsdGVyZWRMaXN0ICYmIGZpbHRlcmVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgICNncm91cEl0ZW1zV3JhcHBlclxyXG4gICAgICAgIGNsYXNzPVwibXJ4LWNoZWNrYm94LWdyb3VwLXdyYXBwZXJcIlxyXG4gICAgICAgIFtjbGFzcy5tcngtY2hlY2tib3gtZ3JvdXAtd3JhcHBlci0tc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcclxuICAgICAgICBbY2xhc3MuLS1hY3RpdmVdPVwiZ2V0U2hvd1Njcm9sbFwiXHJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwic2Nyb2xsYWJsZSA/IHNjcm9sbE1heEhlaWdodCArICdweCcgOiAnYXV0bydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZExpc3Q7IHRyYWNrIGl0ZW0uaWQ7IGxldCBsYXN0ID0gJGxhc3QpIHtcclxuICAgICAgICAgIDxtcngtY2hlY2tib3gtZ3JvdXAtaXRlbVxyXG4gICAgICAgICAgICBbZGlzcGxhY2VkXT1cImRpc3BsYWNlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICBbaXNMYXN0XT1cImxhc3RcIlxyXG4gICAgICAgICAgICBbYW5pbWF0aW9uVHJpZ2dlcl09XCIhIWlzU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICBbaW52YWxpZF09XCJpbnZhbGlkXCJcclxuICAgICAgICAgICAgKGFuaW1hdGlvbkVuZCk9XCJjaGVja0hlaWdodEdyb3VwV3JhcHBlcigpXCJcclxuICAgICAgICAgICAgKGNoZWNrYm94Q2hhbmdlZCk9XCJjaGVja2JveENoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9tcngtY2hlY2tib3gtZ3JvdXAtaXRlbT5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDxwIGNsYXNzPVwibXJ4LWNoZWNrYm94LWdyb3VwX19lbXB0eS1tZXNzYWdlXCI+e3sgZW5hYmxlTWVzc2FnZSB9fTwvcD5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKGdldEludmFsaWQgJiYgZ2V0SW52YWxpZE1lc3NhZ2UpIHtcclxuICAgICAgPG1yeC1lcnJvci1tZXNzYWdlIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRJbnZhbGlkTWVzc2FnZVwiIFtjdXN0b21DbGFzc2VzXT1cIidtdC0yJ1wiPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiAgICB9XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vY2hlY2tib3gtZ3JvdXAvY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vY2hlY2tib3gtZ3JvdXAvY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU96RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxF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Y3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDaGVja2JveEdyb3VwSW5uZXJJdGVtLFxyXG4gIENoZWNrYm94R3JvdXBJdGVtLFxyXG4gIENoZWNrYm94R3JvdXBWYWx1ZUlubmVyV2l0aElkLFxyXG4gIENoZWNrYm94R3JvdXBWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vbW9kZWxzL2NoZWNrYm94LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgZ2V0U29ydGVkTGlzdCB9IGZyb20gJy4vaGVscGVycy9nZXQtc29ydGVkLWxpc3QnO1xyXG5pbXBvcnQgeyBmaWx0ZXJTZWFyY2hHcm91cCB9IGZyb20gJy4vaGVscGVycy9maWx0ZXItc2VhcmNoLWdyb3VwJztcclxuaW1wb3J0IHsgZ2V0SXRlbUlubmVyQnlJZCB9IGZyb20gJy4vaGVscGVycy9nZXQtaXRlbS1ieS1pZCc7XHJcbmltcG9ydCB7IGNoYW5nZUl0ZW1WYWx1ZSwgY2hhbmdlTGlzdFZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzL2NoYW5nZS1pdGVtLXZhbHVlJztcclxuaW1wb3J0IHsgY2hhbmdlR3JvdXBWYWx1ZSB9IGZyb20gJy4vaGVscGVycy9jaGFuZ2UtZ3JvdXAtdmFsdWUnO1xyXG5pbXBvcnQgeyBnZXRDaGVja2VkSXRlbXMgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWNoZWNrZWQtaXRlbXMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRJbm5lckxpc3QgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LWlubmVyLWxpc3QuaGVscGVyJztcclxuaW1wb3J0IHsgaW5uZXJMaXN0VG9MaXN0IH0gZnJvbSAnLi9oZWxwZXJzL2lubmVyLWxpc3QtdG8tbGlzdC5oZWxwZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IENoZWNrYm94R3JvdXBDb21wb25lbnRcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtY2hlY2tib3gtZ3JvdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94R3JvdXBDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfc2VhcmNoVmFsdWUgPSAnJztcclxuXHJcbiAgcHVibGljIGxpc3Q6IENoZWNrYm94R3JvdXBJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgaW5uZXJMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGNoZWNrZWRMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgZmlsdGVyZWRMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkKCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsTWF4SGVpZ2h0ID0gMjAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc29ydGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlTWVzc2FnZSA9ICfQndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3Qvic7XHJcbiAgQElucHV0KCkgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFRPT0xUSVBcclxuICBASW5wdXQoKSB0b29sdGlwID0gJyc7XHJcblxyXG4gIC8vIExBQkVMXHJcbiAgQElucHV0KCkgbGFiZWxUZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgbGlua1RleHQgPSAnJztcclxuXHJcbiAgLy8gVkFMSURBVEVcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuXHJcbiAgQElucHV0KCkgc2V0IGl0ZW1zKGxpc3Q6IENoZWNrYm94R3JvdXBJdGVtW10pIHtcclxuICAgIHRoaXMubGlzdCA9IGxpc3Q7XHJcbiAgICB0aGlzLl91cGRhdGVNb2RpZmllZExpc3QoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtcygpOiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JvdXBJdGVtc1dyYXBwZXInKSBncm91cEl0ZW1zV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwSXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGVja2JveEdyb3VwVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZElubmVyOiBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2VJbm5lcjogRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBWYWx1ZUlubmVyV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cFZhbHVlSW5uZXJXaXRoSWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hlY2tib3hHcm91cElubmVySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPENoZWNrYm94R3JvdXBJbm5lckl0ZW0+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc3BsYWNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxpc3Quc29tZSgoaXRlbTogQ2hlY2tib3hHcm91cEl0ZW0pID0+IGl0ZW0uaXRlbXM/Lmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRJbnZhbGlkTWVzc2FnZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY3VzdG9tQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRTaG93U2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ3JvdXBJdGVtc1dyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gISFlbGVtZW50ICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5zY3JvbGxNYXhIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IENoZWNrYm94R3JvdXBJbm5lckl0ZW0pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogQ2hlY2tib3hHcm91cEl0ZW1bXSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUoc2VsZWN0ZWRWYWx1ZTogQ2hlY2tib3hHcm91cEl0ZW1bXSk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jaGVja2VkTGlzdCA9IGdldElubmVyTGlzdChzZWxlY3RlZFZhbHVlLCB0aGlzLmNoZWNrZWRMaXN0KTtcclxuICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWRMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVNb2RpZmllZExpc3QoKSB7XHJcbiAgICB0aGlzLmlubmVyTGlzdCA9IGdldElubmVyTGlzdCh0aGlzLmxpc3QsIHRoaXMuY2hlY2tlZExpc3QpO1xyXG4gICAgdGhpcy5maWx0ZXJlZExpc3QgPSBnZXRTb3J0ZWRMaXN0KHRoaXMuaW5uZXJMaXN0LCB0aGlzLnNvcnRhYmxlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0hlaWdodEdyb3VwV3JhcHBlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVDaGVja2JveEdyb3VwU2VhcmNoVmFsdWUoc2VhcmNoVmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gZmlsdGVyU2VhcmNoR3JvdXAodGhpcy5pbm5lckxpc3QsIHRoaXMuX3NlYXJjaFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja2JveENoYW5nZWQoe3ZhbHVlLCBpdGVtfTogeyB2YWx1ZTogYm9vbGVhbiB8IG51bGw7IGl0ZW06IENoZWNrYm94R3JvdXBJbm5lckl0ZW0gfSkge1xyXG4gICAgY29uc3QgY2xvbmVMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10gPSBjbG9uZURlZXAodGhpcy5pbm5lckxpc3QpO1xyXG4gICAgY29uc3QgZmluZEl0ZW06IENoZWNrYm94R3JvdXBJbm5lckl0ZW0gfCBudWxsID0gZ2V0SXRlbUlubmVyQnlJZChjbG9uZUxpc3QsIGl0ZW0uaWQpO1xyXG5cclxuICAgIGxldCBjaGFuZ2VkSXRlbTogQ2hlY2tib3hHcm91cElubmVySXRlbSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmIChmaW5kSXRlbSkge1xyXG4gICAgICBjaGFuZ2VkSXRlbSA9IGNoYW5nZUl0ZW1WYWx1ZShmaW5kSXRlbSwgdmFsdWUpO1xyXG4gICAgICBjaGFuZ2VHcm91cFZhbHVlKGNsb25lTGlzdCwgaXRlbS5wYXJlbnRJZCwgdmFsdWUpO1xyXG4gICAgICBnZXRTb3J0ZWRMaXN0KGNsb25lTGlzdCwgdGhpcy5zb3J0YWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbm5lckxpc3QgPSBjbG9uZUxpc3Q7XHJcbiAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IGZpbHRlclNlYXJjaEdyb3VwKHRoaXMuaW5uZXJMaXN0LCB0aGlzLl9zZWFyY2hWYWx1ZSk7XHJcbiAgICB0aGlzLmNoZWNrZWRMaXN0ID0gZ2V0Q2hlY2tlZEl0ZW1zKGNsb25lTGlzdCk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKFtdLCB0aGlzLmNoZWNrZWRMaXN0KTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZEl0ZW0pIHtcclxuICAgICAgdGhpcy5tb2RlbEl0ZW1DaGFuZ2UuZW1pdChjaGFuZ2VkSXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpIHtcclxuICAgIGNvbnN0IGNsb25lTGlzdDogQ2hlY2tib3hHcm91cElubmVySXRlbVtdID0gY2xvbmVEZWVwKHRoaXMuZmlsdGVyZWRMaXN0KTtcclxuXHJcbiAgICBjaGFuZ2VMaXN0VmFsdWUoY2xvbmVMaXN0LCBmYWxzZSk7XHJcbiAgICBnZXRTb3J0ZWRMaXN0KGNsb25lTGlzdCwgdGhpcy5zb3J0YWJsZSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJlZExpc3QgPSBjbG9uZUxpc3Q7XHJcbiAgICB0aGlzLmNoZWNrZWRMaXN0ID0gZ2V0Q2hlY2tlZEl0ZW1zKGNsb25lTGlzdCk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZmlsdGVyZWRMaXN0LCB0aGlzLmNoZWNrZWRMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGxpc3Q6IENoZWNrYm94R3JvdXBJdGVtW10sIGNoZWNrZWRMaXN0OiBDaGVja2JveEdyb3VwSW5uZXJJdGVtW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsZWFyZWRMaXN0ID0gaW5uZXJMaXN0VG9MaXN0KGNoZWNrZWRMaXN0KVxyXG4gICAgY29uc3QgY2xlYXJlZElubmVyTGlzdCA9IGlubmVyTGlzdFRvTGlzdCh0aGlzLmlubmVyTGlzdClcclxuXHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChjbGVhcmVkTGlzdCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBjbGVhcmVkTGlzdCwgZnVsbDogY2xlYXJlZElubmVyTGlzdCwgaWQ6IHRoaXMudXVpZH0pO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlZElubmVyLmVtaXQoY2hlY2tlZExpc3QpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZUlubmVyLmVtaXQoe3ZhbHVlOiBjaGVja2VkTGlzdCwgZnVsbDogdGhpcy5pbm5lckxpc3QsIGlkOiB0aGlzLnV1aWR9KTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKGNoZWNrZWRMaXN0KTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlQ29udGVudCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1jaGVja2JveC1ncm91cFwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCI+XHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIiB0eXBlPVwiY2hlY2tib3hHcm91cFwiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcblxyXG4gIDxtcngtY2hlY2tib3gtZ3JvdXAtaGVhZGVyXHJcbiAgICBbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcclxuICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICBbdG9vbHRpcF09XCJ0b29sdGlwXCJcclxuICAgIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcclxuICAgIFtsaW5rVGV4dF09XCJsaW5rVGV4dFwiXHJcbiAgICBbY2hlY2tlZEl0ZW1zQ291bnRdPVwiY2hlY2tlZExpc3QubGVuZ3RoXCJcclxuICAgIFtleHBhbmRhYmxlXT1cImV4cGFuZGFibGVcIlxyXG4gICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXHJcbiAgICAodXBkYXRlQ2hlY2tib3hHcm91cFNlYXJjaFZhbHVlKT1cInVwZGF0ZUNoZWNrYm94R3JvdXBTZWFyY2hWYWx1ZSgkZXZlbnQpXCJcclxuICAgIChjbGVhckZpbHRlcnMpPVwiY2xlYXJGaWx0ZXJzKClcIlxyXG4gICAgKHRvZ2dsZSk9XCJ0b2dnbGVDb250ZW50KClcIlxyXG4gID48L21yeC1jaGVja2JveC1ncm91cC1oZWFkZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXhwYW5kYWJsZSB8fCBpc0V4cGFuZGVkXCI+XHJcbiAgICBAaWYgKGZpbHRlcmVkTGlzdCAmJiBmaWx0ZXJlZExpc3QubGVuZ3RoKSB7XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAjZ3JvdXBJdGVtc1dyYXBwZXJcclxuICAgICAgICBjbGFzcz1cIm1yeC1jaGVja2JveC1ncm91cC13cmFwcGVyXCJcclxuICAgICAgICBbY2xhc3MubXJ4LWNoZWNrYm94LWdyb3VwLXdyYXBwZXItLXNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZVwiXHJcbiAgICAgICAgW2NsYXNzLi0tYWN0aXZlXT1cImdldFNob3dTY3JvbGxcIlxyXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cInNjcm9sbGFibGUgPyBzY3JvbGxNYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nXCJcclxuICAgICAgPlxyXG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRMaXN0OyB0cmFjayBpdGVtLmlkOyBsZXQgbGFzdCA9ICRsYXN0KSB7XHJcbiAgICAgICAgICA8bXJ4LWNoZWNrYm94LWdyb3VwLWl0ZW1cclxuICAgICAgICAgICAgW2Rpc3BsYWNlZF09XCJkaXNwbGFjZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgICAgW2lzTGFzdF09XCJsYXN0XCJcclxuICAgICAgICAgICAgW2FuaW1hdGlvblRyaWdnZXJdPVwiISFpc1NlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFwiXHJcbiAgICAgICAgICAgIChhbmltYXRpb25FbmQpPVwiY2hlY2tIZWlnaHRHcm91cFdyYXBwZXIoKVwiXHJcbiAgICAgICAgICAgIChjaGVja2JveENoYW5nZWQpPVwiY2hlY2tib3hDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvbXJ4LWNoZWNrYm94LWdyb3VwLWl0ZW0+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8cCBjbGFzcz1cIm1yeC1jaGVja2JveC1ncm91cF9fZW1wdHktbWVzc2FnZVwiPnt7IGVuYWJsZU1lc3NhZ2UgfX08L3A+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChnZXRJbnZhbGlkICYmIGdldEludmFsaWRNZXNzYWdlKSB7XHJcbiAgICAgIDxtcngtZXJyb3ItbWVzc2FnZSBbaW52YWxpZE1lc3NhZ2VdPVwiZ2V0SW52YWxpZE1lc3NhZ2VcIiBbY3VzdG9tQ2xhc3Nlc109XCInbXQtMidcIj48L21yeC1lcnJvci1tZXNzYWdlPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -79,6 +79,31 @@ export class EditorComponent {
|
|
|
79
79
|
blur: () => {
|
|
80
80
|
this.changeFocused(false);
|
|
81
81
|
},
|
|
82
|
+
keydown: (event) => {
|
|
83
|
+
const editor = this.editorElementRef?.jodit;
|
|
84
|
+
if (!editor || this.maxLength <= 0)
|
|
85
|
+
return true;
|
|
86
|
+
// 1. Получаем текущую длину текста
|
|
87
|
+
const currentLength = editor.text.length;
|
|
88
|
+
// 2. Список системных клавиш, которые нельзя блокировать
|
|
89
|
+
const isNavigationKey = [
|
|
90
|
+
'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight',
|
|
91
|
+
'ArrowUp', 'ArrowDown', 'End', 'Home', 'Tab', 'Enter'
|
|
92
|
+
].includes(event.key);
|
|
93
|
+
// Разрешаем сочетания с Ctrl/Cmd (Copy, Paste, Select All)
|
|
94
|
+
const isModifier = event.ctrlKey || event.metaKey;
|
|
95
|
+
if (currentLength >= this.maxLength && !isNavigationKey && !isModifier) {
|
|
96
|
+
// 3. Самый надежный способ проверить, выделено ли что-то:
|
|
97
|
+
// Если метод sel.isCollapsed недоступен, проверяем длину выделения через строку
|
|
98
|
+
const selectedText = editor.s.sel ? editor.s.sel.toString() : '';
|
|
99
|
+
// Если ничего не выделено, блокируем ввод нового символа
|
|
100
|
+
if (!selectedText.length) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
},
|
|
82
107
|
paste: (event) => {
|
|
83
108
|
this.handlePaste(event);
|
|
84
109
|
},
|
|
@@ -189,22 +214,35 @@ export class EditorComponent {
|
|
|
189
214
|
this.changeDetection.detectChanges();
|
|
190
215
|
}
|
|
191
216
|
handlePaste(event) {
|
|
192
|
-
|
|
217
|
+
const editor = this.editorElementRef?.jodit;
|
|
218
|
+
if (!event.clipboardData || !editor)
|
|
193
219
|
return;
|
|
220
|
+
const textData = event.clipboardData.getData('text/plain');
|
|
221
|
+
const currentLength = editor.text.length;
|
|
222
|
+
// Если вставка превышает лимит
|
|
223
|
+
if (this.maxLength > 0 && (currentLength + textData.length) > this.maxLength) {
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
const remainingSpace = this.maxLength - currentLength;
|
|
226
|
+
if (remainingSpace > 0) {
|
|
227
|
+
// Вставляем только разрешенный кусочек
|
|
228
|
+
const truncatedText = textData.substring(0, remainingSpace);
|
|
229
|
+
editor.s.insertHTML(truncatedText);
|
|
230
|
+
}
|
|
231
|
+
return; // Прекращаем выполнение, чтобы не сработала логика картинок ниже
|
|
194
232
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const hasHtmlImage = htmlData?.includes('<img');
|
|
198
|
-
const hasImage = Array.from(clipboardData.items).some(item => item.type.startsWith('image/'));
|
|
199
|
-
if (!hasImage && !hasHtmlImage) {
|
|
233
|
+
// Ваша существующая логика защиты от картинок
|
|
234
|
+
if (this.hasImageButton())
|
|
200
235
|
return;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
236
|
+
const htmlData = event.clipboardData.getData('text/html');
|
|
237
|
+
const hasHtmlImage = htmlData?.includes('<img');
|
|
238
|
+
const hasImage = Array.from(event.clipboardData.items).some(item => item.type.startsWith('image/'));
|
|
239
|
+
if (hasImage || hasHtmlImage) {
|
|
240
|
+
event.preventDefault();
|
|
241
|
+
const sanitizedHtml = this.removeImagesFromHtml(htmlData);
|
|
242
|
+
const contentToInsert = sanitizedHtml || textData;
|
|
243
|
+
if (contentToInsert) {
|
|
244
|
+
editor.s.insertHTML(contentToInsert);
|
|
245
|
+
}
|
|
208
246
|
}
|
|
209
247
|
}
|
|
210
248
|
removeImagesFromHtml(html) {
|
|
@@ -250,6 +288,7 @@ export class EditorComponent {
|
|
|
250
288
|
}
|
|
251
289
|
}
|
|
252
290
|
updateValue(insideValue) {
|
|
291
|
+
// Сначала считаем, потом проверяем инициализацию
|
|
253
292
|
if (this.maxLength) {
|
|
254
293
|
this._calculateChartsCount();
|
|
255
294
|
}
|
|
@@ -265,7 +304,12 @@ export class EditorComponent {
|
|
|
265
304
|
return value ? value.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '') : value;
|
|
266
305
|
}
|
|
267
306
|
_calculateChartsCount() {
|
|
268
|
-
|
|
307
|
+
// В Jodit правильно считать длину через .text,
|
|
308
|
+
// но в ngx-jodit инстанс доступен через .jodit
|
|
309
|
+
if (this.editorElementRef?.jodit) {
|
|
310
|
+
this.valueLength = this.editorElementRef.jodit.text.length;
|
|
311
|
+
this.changeDetection.detectChanges(); // Форсируем обновление UI для счетчика
|
|
312
|
+
}
|
|
269
313
|
}
|
|
270
314
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
271
315
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditorComponent, selector: "mrx-editor", inputs: { fields: "fields", toolbar: "toolbar", maxLength: "maxLength", minHeight: "minHeight", customClasses: "customClasses", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", iframe: "iframe", defaultInlineStyle: "defaultInlineStyle", config: "config", editHTMLDocumentMode: "editHTMLDocumentMode", defaultMode: "defaultMode", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid" }, outputs: { changed: "changed", modelChange: "modelChange" }, providers: [
|
|
@@ -325,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
325
369
|
}], modelChange: [{
|
|
326
370
|
type: Output
|
|
327
371
|
}] } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRzlCLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZDLE9BQU8sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBRTVFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUVuQiwyREFBMkQ7QUFDM0QsK0JBQStCO0FBQy9CLGVBQWU7QUFDZixvQkFBb0I7QUFDcEIsSUFBSTtBQWVKLE1BQU0sT0FBTyxlQUFlO0lBMkZOO0lBMUZaLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsU0FBUyxHQUFtQixLQUFLLENBQUM7SUFFbEMsT0FBTyxHQUFHO1FBQ2YsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0lBRUssYUFBYSxHQUFRO1FBQzFCLEdBQUcsY0FBYztRQUNqQixLQUFLLEVBQUUsYUFBYTtRQUNwQixXQUFXLEVBQUUsbUJBQW1CLENBQUMsWUFBWTtRQUM3QyxRQUFRLEVBQUUsSUFBSTtRQUNkLGdCQUFnQixFQUFFLEtBQUs7UUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLElBQUksRUFBRTtZQUNKLGdCQUFnQixFQUFFLEtBQUs7U0FDeEI7UUFDRCxTQUFTLEVBQUUsR0FBRztRQUNkLE1BQU0sRUFBRSxLQUFLO1FBQ2IsaUJBQWlCLEVBQUUsR0FBRztRQUN0QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLFNBQVMsRUFBRTtZQUNULGtCQUFrQixFQUFFLElBQUk7U0FDekI7UUFDRCxXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLHlCQUF5QixFQUFFLEtBQUs7UUFDaEMsdUJBQXVCLEVBQUUsRUFBRTtRQUMzQiw0QkFBNEIsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN4QyxRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO1FBQ2Ysa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxrQkFBa0I7UUFDeEMsc0JBQXNCLEVBQUUsS0FBSztRQUM3QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQzVCLE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztTQUNGO1FBQ0QsY0FBYztRQUNkLGlDQUFpQztRQUNqQyxLQUFLO1FBQ0wsVUFBVSxFQUFFLEVBQUU7UUFDZCxrQkFBa0I7S0FDbkIsQ0FBQztJQUVGLGFBQWE7SUFDTixJQUFJLEdBQVcsTUFBTSxFQUFFLENBQUM7SUFDZixNQUFNLEdBQVksRUFBRSxDQUFDO0lBRXJCLE9BQU8sQ0FBaUI7SUFDeEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDaEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2Ysa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sR0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBRWpDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixXQUFXLEdBQXdCLG1CQUFtQixDQUFDLFlBQVksQ0FBQztJQUVwRSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBc0IsRUFBRSxDQUFDO0lBQ3ZDLFlBQVksR0FBd0IsSUFBSSxDQUFDO0lBRTFCLGdCQUFnQixDQUFPO0lBRXJDLE9BQU8sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUMzRCxXQUFXLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO0lBRWhILFlBQW9CLGVBQWtDO1FBQWxDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtJQUN0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxFQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBQyxDQUFDO1FBQ2pHLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBQyxDQUFDO1FBQ3ZGLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRztnQkFDbkIsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDckIsZ0JBQWdCLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsR0FBRywwQkFBMEIsRUFBQzthQUMxRixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixvQkFBb0IsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxZQUFZO2FBQ25FLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsWUFBWSxFQUFDLENBQUM7UUFDL0csQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixzQkFBc0IsRUFBRSxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxZQUFZO2FBQ3ZFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFDLENBQUM7UUFDakcsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixvQkFBb0IsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxZQUFZO2FBQ25FLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxFQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pJLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQVk7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBcUI7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDbEQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyxhQUFhLElBQUksUUFBUSxDQUFDO1FBRWxELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFFSCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBWTtRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUV6RCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6QixPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN0QixDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU87Z0JBQ2xCLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLE9BQU8sQ0FDM0IsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUNsQyxDQUFDLENBQUM7SUFDTSxTQUFTLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLENBQUMsQ0FBQztJQUVLLGdCQUFnQixDQUFDLEVBQU87UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQVk7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxZQUFpQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0MsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUFtQjtRQUVwQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHFEQUFxRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEcsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xGLENBQUM7d0dBdFJVLGVBQWU7NEZBQWYsZUFBZSx3aEJBUmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHFLQ3JESCw0dkJBd0JBOzs0RkQrQmEsZUFBZTtrQkFiM0IsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQW9FZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFeUIsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFWixPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNoYW5nZUljb25zRnVuY3Rpb24gfSBmcm9tICcuL21vZHVsZXMvY2hhbmdlLWljb24tbW9kdWxlJztcclxuaW1wb3J0IHsgZGVmYXVsdFRvb2xiYXIgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcG9wdXBUb29sYmFycyB9IGZyb20gJy4vY29uZmlnL3BvcHVwcy10b29sYmFyJztcclxuaW1wb3J0IHsgVG9vbGJhckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3Rvb2xiYXIubW9kZWwnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlLXN0b3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGRlZmF1bHRJbmxpbmVTdHlsZUNvbnN0YW50IH0gZnJvbSAnLi9jb25maWcvZGVmYXVsdC1pbmxpbmUtc3R5bGUnO1xyXG5cclxuaW1wb3J0IHsgSm9kaXQgfSBmcm9tICdqb2RpdCc7XHJcbmltcG9ydCB7IEpvZGl0Q29uZmlnIH0gZnJvbSAnbmd4LWpvZGl0JztcclxuXHJcbmltcG9ydCBydSBmcm9tICdqb2RpdC9lc20vbGFuZ3MvcnUuanMnO1xyXG5cclxuaW1wb3J0ICdqb2RpdC9lc20vcGx1Z2lucy9zb3VyY2Uvc291cmNlLmpzJztcclxuaW1wb3J0ICdqb2RpdC9lc20vcGx1Z2lucy9saW5lLWhlaWdodC9saW5lLWhlaWdodC5qcyc7XHJcbmltcG9ydCAnam9kaXQvZXNtL3BsdWdpbnMvaW5kZW50L2luZGVudC5qcyc7XHJcbmltcG9ydCAnam9kaXQvZXNtL3BsdWdpbnMvdmlkZW8vdmlkZW8uanMnO1xyXG5pbXBvcnQgJ2pvZGl0L2VzbS9wbHVnaW5zL3NlYXJjaC9zZWFyY2guanMnO1xyXG5pbXBvcnQgJ2pvZGl0L2VzbS9wbHVnaW5zL3Jlc2l6ZXIvcmVzaXplci5qcyc7XHJcbmltcG9ydCB7IElucHV0RWRpdG9yTW9kZUVudW0sIElucHV0RWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL2VkaXRvci5lbnVtJztcclxuXHJcbkpvZGl0LmxhbmcuZGUgPSBydTtcclxuXHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSm9kaXRDb25maWcgZXh0ZW5kcyBKb2RpdENvbmZpZyB7XHJcbi8vICAgZ2V0SWNvbjogKGE6IGFueSkgPT4gdm9pZCxcclxuLy8gICBsaW5rOiBhbnksXHJcbi8vICAgY2xlYW5IVE1MOiBhbnksXHJcbi8vIH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfaXNJbml0ID0gZmFsc2U7XHJcbiAgcHVibGljIHZhbHVlID0gJyc7XHJcbiAgcHVibGljIHZhbHVlTGVuZ3RoID0gMDtcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgb3B0aW9ucyA9IHtcclxuICAgIGxhbmd1YWdlOiAncnUnXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGRlZmF1bHRDb25maWc6IGFueSA9IHtcclxuICAgIC4uLmRlZmF1bHRUb29sYmFyLFxyXG4gICAgcG9wdXA6IHBvcHVwVG9vbGJhcnMsXHJcbiAgICBkZWZhdWx0TW9kZTogSW5wdXRFZGl0b3JNb2RlRW51bS5NT0RFX1dZU0lXWUcsXHJcbiAgICBsYW5ndWFnZTogJ3J1JyxcclxuICAgIHNob3dDaGFyc0NvdW50ZXI6IGZhbHNlLFxyXG4gICAgc2hvd1dvcmRzQ291bnRlcjogZmFsc2UsXHJcbiAgICBzaG93WFBhdGhJblN0YXR1c2JhcjogZmFsc2UsXHJcbiAgICBsaW5rOiB7XHJcbiAgICAgIG5vRm9sbG93Q2hlY2tib3g6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgbWluSGVpZ2h0OiAxMTAsXHJcbiAgICBpZnJhbWU6IGZhbHNlLFxyXG4gICAgaW1hZ2VEZWZhdWx0V2lkdGg6IDIwMCxcclxuICAgIGVkaXRIVE1MRG9jdW1lbnRNb2RlOiB0cnVlLFxyXG4gICAgY2xlYW5IVE1MOiB7XHJcbiAgICAgIGZpbGxFbXB0eVBhcmFncmFwaDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgIHRvb2xiYXJBZGFwdGl2ZTogZmFsc2UsXHJcbiAgICB0b29sYmFySW5saW5lOiB0cnVlLFxyXG4gICAgdG9vbGJhcklubGluZUZvclNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZUZvcjogW10sXHJcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZWRCdXR0b25zOiBbJ3NvdXJjZSddLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgcmVhZG9ubHk6IGZhbHNlLFxyXG4gICAgYXNrQmVmb3JlUGFzdGVIVE1MOiBmYWxzZSxcclxuICAgIGRlZmF1bHRBY3Rpb25PblBhc3RlOiAnaW5zZXJ0X29ubHlfdGV4dCcsXHJcbiAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBmYWxzZSxcclxuICAgIGhpZGVQb3dlcmVkQnlKb2RpdDogdHJ1ZSxcclxuICAgIGJlYXV0aWZ5SFRNTDogdHJ1ZSxcclxuICAgIGFkZE5ld0xpbmU6IHRydWUsXHJcbiAgICBjcmVhdGVBdHRyaWJ1dGVzOiB7fSxcclxuICAgIGdldEljb246IChpY29uTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGFuZ2VJY29uc0Z1bmN0aW9uKGljb25OYW1lKTtcclxuICAgIH0sXHJcbiAgICBldmVudHM6IHtcclxuICAgICAgZm9jdXM6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWQodHJ1ZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGJsdXI6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWQoZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICBwYXN0ZTogKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUGFzdGUoZXZlbnQpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIHVwbG9hZGVyOiB7XHJcbiAgICAvLyAgIGluc2VydEltYWdlQXNCYXNlNjRVUkk6IHRydWVcclxuICAgIC8vIH0sXHJcbiAgICBsaW1pdENoYXJzOiAxMCxcclxuICAgIC8vIGxpbWl0SFRNTDogMTcwLFxyXG4gIH07XHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbGJhciE6IFRvb2xiYXJDb25maWc7XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIG1pbkhlaWdodCA9IDExMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZnJhbWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdElubGluZVN0eWxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZzogYW55ID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZWRpdEhUTUxEb2N1bWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdE1vZGU6IElucHV0RWRpdG9yTW9kZUVudW0gPSBJbnB1dEVkaXRvck1vZGVFbnVtLk1PREVfV1lTSVdZRztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvckVsZW1lbnRSZWYnKSBlZGl0b3JFbGVtZW50UmVmITogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPElucHV0RWRpdG9yVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dEVkaXRvclZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd0b29sYmFyJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uY2hhbmdlc1sndG9vbGJhciddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snbWF4TGVuZ3RoJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgbGltaXRDaGFyczogY2hhbmdlc1snbWF4TGVuZ3RoJ10uY3VycmVudFZhbHVlfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwbGFjZWhvbGRlciddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIHBsYWNlaG9sZGVyOiBjaGFuZ2VzWydwbGFjZWhvbGRlciddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBkaXNhYmxlZDogY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3JlYWRvbmx5J10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgcmVhZG9ubHk6IGNoYW5nZXNbJ3JlYWRvbmx5J10uY3VycmVudFZhbHVlfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydpZnJhbWUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBpZnJhbWU6IGNoYW5nZXNbJ2lmcmFtZSddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdElubGluZVN0eWxlJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBjcmVhdGVBdHRyaWJ1dGVzOiB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLmNyZWF0ZUF0dHJpYnV0ZXMsIC4uLmRlZmF1bHRJbmxpbmVTdHlsZUNvbnN0YW50fVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRIVE1MRG9jdW1lbnRNb2RlJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogY2hhbmdlc1snZWRpdEhUTUxEb2N1bWVudE1vZGUnXS5jdXJyZW50VmFsdWVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBhc2tCZWZvcmVQYXN0ZUhUTUw6IGNoYW5nZXNbJ2Fza0JlZm9yZVBhc3RlSFRNTCddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snYXNrQmVmb3JlUGFzdGVGcm9tV29yZCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcclxuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXHJcbiAgICAgICAgYXNrQmVmb3JlUGFzdGVGcm9tV29yZDogY2hhbmdlc1snYXNrQmVmb3JlUGFzdGVGcm9tV29yZCddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRNb2RlJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgZGVmYXVsdE1vZGU6IGNoYW5nZXNbJ2RlZmF1bHRNb2RlJ10uY3VycmVudFZhbHVlfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0QWN0aW9uT25QYXN0ZSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcclxuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXHJcbiAgICAgICAgZGVmYXVsdEFjdGlvbk9uUGFzdGU6IGNoYW5nZXNbJ2RlZmF1bHRBY3Rpb25PblBhc3RlJ10uY3VycmVudFZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snbWluSGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgbWluSGVpZ2h0OiBjaGFuZ2VzWydtaW5IZWlnaHQnXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlPy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID8gJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDogdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydFBvc2l0aW9uVGV4dCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZWRpdG9yRWxlbWVudFJlZi5qb2RpdC5zLmluc2VydEhUTUwodGV4dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlRm9jdXNlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB0aGlzLmhhc0ltYWdlQnV0dG9uKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHtjbGlwYm9hcmREYXRhfSA9IGV2ZW50O1xyXG4gICAgY29uc3QgaHRtbERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpO1xyXG4gICAgY29uc3QgaGFzSHRtbEltYWdlID0gaHRtbERhdGE/LmluY2x1ZGVzKCc8aW1nJyk7XHJcbiAgICBjb25zdCBoYXNJbWFnZSA9IEFycmF5LmZyb20oY2xpcGJvYXJkRGF0YS5pdGVtcykuc29tZShpdGVtID0+IGl0ZW0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSk7XHJcblxyXG4gICAgaWYgKCFoYXNJbWFnZSAmJiAhaGFzSHRtbEltYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IHNhbml0aXplZEh0bWwgPSB0aGlzLnJlbW92ZUltYWdlc0Zyb21IdG1sKGh0bWxEYXRhKTtcclxuICAgIGNvbnN0IHRleHREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICBjb25zdCBjb250ZW50VG9JbnNlcnQgPSBzYW5pdGl6ZWRIdG1sIHx8IHRleHREYXRhO1xyXG5cclxuICAgIGlmIChjb250ZW50VG9JbnNlcnQpIHtcclxuICAgICAgdGhpcy5lZGl0b3JFbGVtZW50UmVmLmpvZGl0LnMuaW5zZXJ0SFRNTChjb250ZW50VG9JbnNlcnQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVJbWFnZXNGcm9tSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghaHRtbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGRpdi5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpLmZvckVhY2goaW1nID0+IGltZy5yZW1vdmUoKSk7XHJcblxyXG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzSW1hZ2VCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBidXR0b25zID0gdGhpcy5kZWZhdWx0Q29uZmlnPy5idXR0b25zO1xyXG5cclxuICAgIGlmICghYnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBidXR0b25zID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gYnV0dG9ucy5pbmNsdWRlcygnaW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShidXR0b25zKSkge1xyXG4gICAgICByZXR1cm4gYnV0dG9ucy5zb21lKGl0ZW0gPT5cclxuICAgICAgICB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZydcclxuICAgICAgICAgID8gaXRlbSA9PT0gJ2ltYWdlJ1xyXG4gICAgICAgICAgOiBpdGVtPy5uYW1lID09PSAnaW1hZ2UnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zYW5pdGl6ZVZhbHVlKG91dHNpZGVWYWx1ZSk7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdCA9IHRydWU7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IHN0cmluZykge1xyXG5cclxuICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICB0aGlzLl9jYWxjdWxhdGVDaGFydHNDb3VudCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gaW5zaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zYW5pdGl6ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUucmVwbGFjZSgvPHNjcmlwdFxcYltePF0qKD86KD8hPFxcL3NjcmlwdD4pPFtePF0qKSo8XFwvc2NyaXB0Pi9naSwgJycpIDogdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxjdWxhdGVDaGFydHNDb3VudCgpIHtcclxuICAgIHRoaXMudmFsdWVMZW5ndGggPSB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnRleHQucmVwbGFjZSgvXFxzKy9nLCAnJykubGVuZ3RoO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJtcngtZWRpdG9yXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cIiFpc1ZhbGlkIHx8IGludmFsaWRcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MuLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuPlxyXG4gIDxuZ3gtam9kaXRcclxuICAgICNlZGl0b3JFbGVtZW50UmVmXHJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgIFtvcHRpb25zXT1cImRlZmF1bHRDb25maWdcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gID48L25neC1qb2RpdD5cclxuXHJcbiAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAqbmdJZj1cIighaXNWYWxpZCB8fCBpbnZhbGlkKSAmJiBpc0ludmFsaWRNZXNzYWdlXCJcclxuICAgIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiXHJcbiAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gIDxtcngtY2hhcnMtbGVmdCBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiIFt2YWx1ZUxlbmd0aF09XCJ2YWx1ZUxlbmd0aFwiPjwvbXJ4LWNoYXJzLWxlZnQ+XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSB0eXBlPVwiZWRpdG9yXCIgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRzlCLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZDLE9BQU8sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxl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Z0JBRVosT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjaGFuZ2VJY29uc0Z1bmN0aW9uIH0gZnJvbSAnLi9tb2R1bGVzL2NoYW5nZS1pY29uLW1vZHVsZSc7XHJcbmltcG9ydCB7IGRlZmF1bHRUb29sYmFyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHBvcHVwVG9vbGJhcnMgfSBmcm9tICcuL2NvbmZpZy9wb3B1cHMtdG9vbGJhcic7XHJcbmltcG9ydCB7IFRvb2xiYXJDb25maWcgfSBmcm9tICcuL21vZGVscy90b29sYmFyLm1vZGVsJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0SW5saW5lU3R5bGVDb25zdGFudCB9IGZyb20gJy4vY29uZmlnL2RlZmF1bHQtaW5saW5lLXN0eWxlJztcclxuXHJcbmltcG9ydCB7IEpvZGl0IH0gZnJvbSAnam9kaXQnO1xyXG5pbXBvcnQgeyBKb2RpdENvbmZpZyB9IGZyb20gJ25neC1qb2RpdCc7XHJcblxyXG5pbXBvcnQgcnUgZnJvbSAnam9kaXQvZXNtL2xhbmdzL3J1LmpzJztcclxuXHJcbmltcG9ydCAnam9kaXQvZXNtL3BsdWdpbnMvc291cmNlL3NvdXJjZS5qcyc7XHJcbmltcG9ydCAnam9kaXQvZXNtL3BsdWdpbnMvbGluZS1oZWlnaHQvbGluZS1oZWlnaHQuanMnO1xyXG5pbXBvcnQgJ2pvZGl0L2VzbS9wbHVnaW5zL2luZGVudC9pbmRlbnQuanMnO1xyXG5pbXBvcnQgJ2pvZGl0L2VzbS9wbHVnaW5zL3ZpZGVvL3ZpZGVvLmpzJztcclxuaW1wb3J0ICdqb2RpdC9lc20vcGx1Z2lucy9zZWFyY2gvc2VhcmNoLmpzJztcclxuaW1wb3J0ICdqb2RpdC9lc20vcGx1Z2lucy9yZXNpemVyL3Jlc2l6ZXIuanMnO1xyXG5pbXBvcnQgeyBJbnB1dEVkaXRvck1vZGVFbnVtLCBJbnB1dEVkaXRvclZhbHVlV2l0aElkIH0gZnJvbSAnLi9lZGl0b3IuZW51bSc7XHJcblxyXG5Kb2RpdC5sYW5nLmRlID0gcnU7XHJcblxyXG4vLyBleHBvcnQgaW50ZXJmYWNlIEN1c3RvbUpvZGl0Q29uZmlnIGV4dGVuZHMgSm9kaXRDb25maWcge1xyXG4vLyAgIGdldEljb246IChhOiBhbnkpID0+IHZvaWQsXHJcbi8vICAgbGluazogYW55LFxyXG4vLyAgIGNsZWFuSFRNTDogYW55LFxyXG4vLyB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyB2YWx1ZSA9ICcnO1xyXG4gIHB1YmxpYyB2YWx1ZUxlbmd0aCA9IDA7XHJcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIG9wdGlvbnMgPSB7XHJcbiAgICBsYW5ndWFnZTogJ3J1J1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBhbnkgPSB7XHJcbiAgICAuLi5kZWZhdWx0VG9vbGJhcixcclxuICAgIHBvcHVwOiBwb3B1cFRvb2xiYXJzLFxyXG4gICAgZGVmYXVsdE1vZGU6IElucHV0RWRpdG9yTW9kZUVudW0uTU9ERV9XWVNJV1lHLFxyXG4gICAgbGFuZ3VhZ2U6ICdydScsXHJcbiAgICBzaG93Q2hhcnNDb3VudGVyOiBmYWxzZSxcclxuICAgIHNob3dXb3Jkc0NvdW50ZXI6IGZhbHNlLFxyXG4gICAgc2hvd1hQYXRoSW5TdGF0dXNiYXI6IGZhbHNlLFxyXG4gICAgbGluazoge1xyXG4gICAgICBub0ZvbGxvd0NoZWNrYm94OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIG1pbkhlaWdodDogMTEwLFxyXG4gICAgaWZyYW1lOiBmYWxzZSxcclxuICAgIGltYWdlRGVmYXVsdFdpZHRoOiAyMDAsXHJcbiAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogdHJ1ZSxcclxuICAgIGNsZWFuSFRNTDoge1xyXG4gICAgICBmaWxsRW1wdHlQYXJhZ3JhcGg6IHRydWVcclxuICAgIH0sXHJcbiAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICB0b29sYmFyQWRhcHRpdmU6IGZhbHNlLFxyXG4gICAgdG9vbGJhcklubGluZTogdHJ1ZSxcclxuICAgIHRvb2xiYXJJbmxpbmVGb3JTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgdG9vbGJhcklubGluZURpc2FibGVGb3I6IFtdLFxyXG4gICAgdG9vbGJhcklubGluZURpc2FibGVkQnV0dG9uczogWydzb3VyY2UnXSxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIHJlYWRvbmx5OiBmYWxzZSxcclxuICAgIGFza0JlZm9yZVBhc3RlSFRNTDogZmFsc2UsXHJcbiAgICBkZWZhdWx0QWN0aW9uT25QYXN0ZTogJ2luc2VydF9vbmx5X3RleHQnLFxyXG4gICAgYXNrQmVmb3JlUGFzdGVGcm9tV29yZDogZmFsc2UsXHJcbiAgICBoaWRlUG93ZXJlZEJ5Sm9kaXQ6IHRydWUsXHJcbiAgICBiZWF1dGlmeUhUTUw6IHRydWUsXHJcbiAgICBhZGROZXdMaW5lOiB0cnVlLFxyXG4gICAgY3JlYXRlQXR0cmlidXRlczoge30sXHJcbiAgICBnZXRJY29uOiAoaWNvbk5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gY2hhbmdlSWNvbnNGdW5jdGlvbihpY29uTmFtZSk7XHJcbiAgICB9LFxyXG4gICAgZXZlbnRzOiB7XHJcbiAgICAgIGZvY3VzOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkKHRydWUpO1xyXG4gICAgICB9LFxyXG4gICAgICBibHVyOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkKGZhbHNlKTtcclxuICAgICAgfSxcclxuICAgICAga2V5ZG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB8IHZvaWQgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yRWxlbWVudFJlZj8uam9kaXQ7XHJcbiAgICAgICAgaWYgKCFlZGl0b3IgfHwgdGhpcy5tYXhMZW5ndGggPD0gMCkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIC8vIDEuINCf0L7Qu9GD0YfQsNC10Lwg0YLQtdC60YPRidGD0Y4g0LTQu9C40L3RgyDRgtC10LrRgdGC0LBcclxuICAgICAgICBjb25zdCBjdXJyZW50TGVuZ3RoID0gZWRpdG9yLnRleHQubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyAyLiDQodC/0LjRgdC+0Log0YHQuNGB0YLQtdC80L3Ri9GFINC60LvQsNCy0LjRiCwg0LrQvtGC0L7RgNGL0LUg0L3QtdC70YzQt9GPINCx0LvQvtC60LjRgNC+0LLQsNGC0YxcclxuICAgICAgICBjb25zdCBpc05hdmlnYXRpb25LZXkgPSBbXHJcbiAgICAgICAgICAnQmFja3NwYWNlJywgJ0RlbGV0ZScsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsIFxyXG4gICAgICAgICAgJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0VuZCcsICdIb21lJywgJ1RhYicsICdFbnRlcidcclxuICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g0KDQsNC30YDQtdGI0LDQtdC8INGB0L7Rh9C10YLQsNC90LjRjyDRgSBDdHJsL0NtZCAoQ29weSwgUGFzdGUsIFNlbGVjdCBBbGwpXHJcbiAgICAgICAgY29uc3QgaXNNb2RpZmllciA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPj0gdGhpcy5tYXhMZW5ndGggJiYgIWlzTmF2aWdhdGlvbktleSAmJiAhaXNNb2RpZmllcikge1xyXG4gICAgICAgICAgLy8gMy4g0KHQsNC80YvQuSDQvdCw0LTQtdC20L3Ri9C5INGB0L/QvtGB0L7QsSDQv9GA0L7QstC10YDQuNGC0YwsINCy0YvQtNC10LvQtdC90L4g0LvQuCDRh9GC0L4t0YLQvjpcclxuICAgICAgICAgIC8vINCV0YHQu9C4INC80LXRgtC+0LQgc2VsLmlzQ29sbGFwc2VkINC90LXQtNC+0YHRgtGD0L/QtdC9LCDQv9GA0L7QstC10YDRj9C10Lwg0LTQu9C40L3RgyDQstGL0LTQtdC70LXQvdC40Y8g0YfQtdGA0LXQtyDRgdGC0YDQvtC60YNcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9IGVkaXRvci5zLnNlbCA/IGVkaXRvci5zLnNlbC50b1N0cmluZygpIDogJyc7XHJcblxyXG4gICAgICAgICAgLy8g0JXRgdC70Lgg0L3QuNGH0LXQs9C+INC90LUg0LLRi9C00LXQu9C10L3Qviwg0LHQu9C+0LrQuNGA0YPQtdC8INCy0LLQvtC0INC90L7QstC+0LPQviDRgdC40LzQstC+0LvQsFxyXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZFRleHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG5cclxuICAgICAgcGFzdGU6IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVBhc3RlKGV2ZW50KTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICAvLyB1cGxvYWRlcjoge1xyXG4gICAgLy8gICBpbnNlcnRJbWFnZUFzQmFzZTY0VVJJOiB0cnVlXHJcbiAgICAvLyB9LFxyXG4gICAgbGltaXRDaGFyczogMTAsXHJcbiAgICAvLyBsaW1pdEhUTUw6IDE3MCxcclxuICB9O1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHRvb2xiYXIhOiBUb29sYmFyQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhMZW5ndGggPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5IZWlnaHQgPSAxMTA7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaWZyYW1lID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRJbmxpbmVTdHlsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IGFueSA9IHRoaXMuZGVmYXVsdENvbmZpZztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGVkaXRIVE1MRG9jdW1lbnRNb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRNb2RlOiBJbnB1dEVkaXRvck1vZGVFbnVtID0gSW5wdXRFZGl0b3JNb2RlRW51bS5NT0RFX1dZU0lXWUc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGl0b3JFbGVtZW50UmVmJykgZWRpdG9yRWxlbWVudFJlZiE6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dEVkaXRvclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndG9vbGJhciddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNoYW5nZXNbJ3Rvb2xiYXInXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21heExlbmd0aCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIGxpbWl0Q2hhcnM6IGNoYW5nZXNbJ21heExlbmd0aCddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1sncGxhY2Vob2xkZXInXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBwbGFjZWhvbGRlcjogY2hhbmdlc1sncGxhY2Vob2xkZXInXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgZGlzYWJsZWQ6IGNoYW5nZXNbJ2Rpc2FibGVkJ10uY3VycmVudFZhbHVlfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydyZWFkb25seSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIHJlYWRvbmx5OiBjaGFuZ2VzWydyZWFkb25seSddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaWZyYW1lJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgaWZyYW1lOiBjaGFuZ2VzWydpZnJhbWUnXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRJbmxpbmVTdHlsZSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcclxuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXHJcbiAgICAgICAgY3JlYXRlQXR0cmlidXRlczogey4uLnRoaXMuZGVmYXVsdENvbmZpZy5jcmVhdGVBdHRyaWJ1dGVzLCAuLi5kZWZhdWx0SW5saW5lU3R5bGVDb25zdGFudH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydlZGl0SFRNTERvY3VtZW50TW9kZSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcclxuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXHJcbiAgICAgICAgZWRpdEhUTUxEb2N1bWVudE1vZGU6IGNoYW5nZXNbJ2VkaXRIVE1MRG9jdW1lbnRNb2RlJ10uY3VycmVudFZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snYXNrQmVmb3JlUGFzdGVIVE1MJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgYXNrQmVmb3JlUGFzdGVIVE1MOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2Fza0JlZm9yZVBhc3RlRnJvbVdvcmQnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxyXG4gICAgICAgIGFza0JlZm9yZVBhc3RlRnJvbVdvcmQ6IGNoYW5nZXNbJ2Fza0JlZm9yZVBhc3RlRnJvbVdvcmQnXS5jdXJyZW50VmFsdWVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0TW9kZSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIGRlZmF1bHRNb2RlOiBjaGFuZ2VzWydkZWZhdWx0TW9kZSddLmN1cnJlbnRWYWx1ZX07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdEFjdGlvbk9uUGFzdGUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxyXG4gICAgICAgIGRlZmF1bHRBY3Rpb25PblBhc3RlOiBjaGFuZ2VzWydkZWZhdWx0QWN0aW9uT25QYXN0ZSddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21pbkhlaWdodCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIG1pbkhlaWdodDogY2hhbmdlc1snbWluSGVpZ2h0J10uY3VycmVudFZhbHVlfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZT8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6IHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRQb3NpdGlvblRleHQodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVkaXRvckVsZW1lbnRSZWYuam9kaXQucy5pbnNlcnRIVE1MKHRleHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZUZvY3VzZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvckVsZW1lbnRSZWY/LmpvZGl0O1xyXG4gICAgaWYgKCFldmVudC5jbGlwYm9hcmREYXRhIHx8ICFlZGl0b3IpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0ZXh0RGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xyXG4gICAgY29uc3QgY3VycmVudExlbmd0aCA9IGVkaXRvci50ZXh0Lmxlbmd0aDtcclxuXHJcbiAgICAvLyDQldGB0LvQuCDQstGB0YLQsNCy0LrQsCDQv9GA0LXQstGL0YjQsNC10YIg0LvQuNC80LjRglxyXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoID4gMCAmJiAoY3VycmVudExlbmd0aCArIHRleHREYXRhLmxlbmd0aCkgPiB0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb25zdCByZW1haW5pbmdTcGFjZSA9IHRoaXMubWF4TGVuZ3RoIC0gY3VycmVudExlbmd0aDtcclxuXHJcbiAgICAgIGlmIChyZW1haW5pbmdTcGFjZSA+IDApIHtcclxuICAgICAgICAvLyDQktGB0YLQsNCy0LvRj9C10Lwg0YLQvtC70YzQutC+INGA0LDQt9GA0LXRiNC10L3QvdGL0Lkg0LrRg9GB0L7Rh9C10LpcclxuICAgICAgICBjb25zdCB0cnVuY2F0ZWRUZXh0ID0gdGV4dERhdGEuc3Vic3RyaW5nKDAsIHJlbWFpbmluZ1NwYWNlKTtcclxuICAgICAgICBlZGl0b3Iucy5pbnNlcnRIVE1MKHRydW5jYXRlZFRleHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjsgLy8g0J/RgNC10LrRgNCw0YnQsNC10Lwg0LLRi9C/0L7Qu9C90LXQvdC40LUsINGH0YLQvtCx0Ysg0L3QtSDRgdGA0LDQsdC+0YLQsNC70LAg0LvQvtCz0LjQutCwINC60LDRgNGC0LjQvdC+0Log0L3QuNC20LVcclxuICAgIH1cclxuXHJcbiAgICAvLyDQktCw0YjQsCDRgdGD0YnQtdGB0YLQstGD0Y7RidCw0Y8g0LvQvtCz0LjQutCwINC30LDRidC40YLRiyDQvtGCINC60LDRgNGC0LjQvdC+0LpcclxuICAgIGlmICh0aGlzLmhhc0ltYWdlQnV0dG9uKCkpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgaHRtbERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpO1xyXG4gICAgY29uc3QgaGFzSHRtbEltYWdlID0gaHRtbERhdGE/LmluY2x1ZGVzKCc8aW1nJyk7XHJcbiAgICBjb25zdCBoYXNJbWFnZSA9IEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcykuc29tZShpdGVtID0+IGl0ZW0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSk7XHJcblxyXG4gICAgaWYgKGhhc0ltYWdlIHx8IGhhc0h0bWxJbWFnZSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb25zdCBzYW5pdGl6ZWRIdG1sID0gdGhpcy5yZW1vdmVJbWFnZXNGcm9tSHRtbChodG1sRGF0YSk7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRUb0luc2VydCA9IHNhbml0aXplZEh0bWwgfHwgdGV4dERhdGE7XHJcbiAgICAgIGlmIChjb250ZW50VG9JbnNlcnQpIHtcclxuICAgICAgICBlZGl0b3Iucy5pbnNlcnRIVE1MKGNvbnRlbnRUb0luc2VydCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVJbWFnZXNGcm9tSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghaHRtbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGRpdi5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpLmZvckVhY2goaW1nID0+IGltZy5yZW1vdmUoKSk7XHJcblxyXG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzSW1hZ2VCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBidXR0b25zID0gdGhpcy5kZWZhdWx0Q29uZmlnPy5idXR0b25zO1xyXG5cclxuICAgIGlmICghYnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBidXR0b25zID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gYnV0dG9ucy5pbmNsdWRlcygnaW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShidXR0b25zKSkge1xyXG4gICAgICByZXR1cm4gYnV0dG9ucy5zb21lKGl0ZW0gPT5cclxuICAgICAgICB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZydcclxuICAgICAgICAgID8gaXRlbSA9PT0gJ2ltYWdlJ1xyXG4gICAgICAgICAgOiBpdGVtPy5uYW1lID09PSAnaW1hZ2UnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zYW5pdGl6ZVZhbHVlKG91dHNpZGVWYWx1ZSk7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdCA9IHRydWU7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IHN0cmluZykge1xyXG4gICAgLy8g0KHQvdCw0YfQsNC70LAg0YHRh9C40YLQsNC10LwsINC/0L7RgtC+0Lwg0L/RgNC+0LLQtdGA0Y/QtdC8INC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGOXHJcbiAgICBpZiAodGhpcy5tYXhMZW5ndGgpIHtcclxuICAgICAgdGhpcy5fY2FsY3VsYXRlQ2hhcnRzQ291bnQoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gaW5zaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zYW5pdGl6ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUucmVwbGFjZSgvPHNjcmlwdFxcYltePF0qKD86KD8hPFxcL3NjcmlwdD4pPFtePF0qKSo8XFwvc2NyaXB0Pi9naSwgJycpIDogdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxjdWxhdGVDaGFydHNDb3VudCgpIHtcclxuICAgIC8vINCSIEpvZGl0INC/0YDQsNCy0LjQu9GM0L3QviDRgdGH0LjRgtCw0YLRjCDQtNC70LjQvdGDINGH0LXRgNC10LcgLnRleHQsIFxyXG4gICAgLy8g0L3QviDQsiBuZ3gtam9kaXQg0LjQvdGB0YLQsNC90YEg0LTQvtGB0YLRg9C/0LXQvSDRh9C10YDQtdC3IC5qb2RpdFxyXG4gICAgaWYgKHRoaXMuZWRpdG9yRWxlbWVudFJlZj8uam9kaXQpIHtcclxuICAgICAgdGhpcy52YWx1ZUxlbmd0aCA9IHRoaXMuZWRpdG9yRWxlbWVudFJlZi5qb2RpdC50ZXh0Lmxlbmd0aDtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpOyAvLyDQpNC+0YDRgdC40YDRg9C10Lwg0L7QsdC90L7QstC70LXQvdC40LUgVUkg0LTQu9GPINGB0YfQtdGC0YfQuNC60LBcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWVkaXRvclwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1mb2N1c2VkXT1cImlzRm9jdXNlZFwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbj5cclxuICA8bmd4LWpvZGl0XHJcbiAgICAjZWRpdG9yRWxlbWVudFJlZlxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICBbb3B0aW9uc109XCJkZWZhdWx0Q29uZmlnXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcclxuICA+PC9uZ3gtam9kaXQ+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LWNoYXJzLWxlZnQgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIiBbdmFsdWVMZW5ndGhdPVwidmFsdWVMZW5ndGhcIj48L21yeC1jaGFycy1sZWZ0PlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgdHlwZT1cImVkaXRvclwiIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -15,6 +15,7 @@ export class RadioComponent {
|
|
|
15
15
|
placeholder = '';
|
|
16
16
|
label = '';
|
|
17
17
|
customClasses = '';
|
|
18
|
+
id = '';
|
|
18
19
|
invalid = false;
|
|
19
20
|
_value;
|
|
20
21
|
get value() {
|
|
@@ -47,13 +48,13 @@ export class RadioComponent {
|
|
|
47
48
|
this.onChange(this.modelValue);
|
|
48
49
|
}
|
|
49
50
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RadioComponent, selector: "mrx-radio", inputs: { required: "required", type: "type", name: "name", boldLabel: "boldLabel", disabled: "disabled", readonly: "readonly", placeholder: "placeholder", label: "label", customClasses: "customClasses", invalid: "invalid", _value: ["value", "_value"] }, providers: [
|
|
51
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RadioComponent, selector: "mrx-radio", inputs: { required: "required", type: "type", name: "name", boldLabel: "boldLabel", disabled: "disabled", readonly: "readonly", placeholder: "placeholder", label: "label", customClasses: "customClasses", id: "id", invalid: "invalid", _value: ["value", "_value"] }, providers: [
|
|
51
52
|
{
|
|
52
53
|
provide: NG_VALUE_ACCESSOR,
|
|
53
54
|
useExisting: forwardRef(() => RadioComponent),
|
|
54
55
|
multi: true,
|
|
55
56
|
},
|
|
56
|
-
], ngImport: i0, template: "<div class=\"mrx-radio__wrapper\">\r\n <label\r\n class=\"mrx-radio\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [(ngModel)]=\"modelValue\"\r\n [disabled]=\"disabled || readonly\"\r\n [readonly]=\"readonly\"\r\n (change)=\"valueChanged(value)\"\r\n />\r\n\r\n <span class=\"mrx-radio__mark\"><span class=\"mrx-radio__mark__inner\"></span></span>\r\n\r\n <span class=\"ml-1\" [class]=\"boldLabel ? 'mrx-radio__label--bold' : 'mrx-radio__label'\">\r\n {{label}}\r\n <ng-content></ng-content>\r\n <span *ngIf=\"required && !disabled\" class=\"required-active\">*</span>\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [".mrx-radio.mrx-radio{display:flex!important;align-items:center;min-height:auto!important;margin-bottom:0!important;overflow:visible;background-color:transparent;cursor:pointer;box-sizing:border-box;position:relative}.mrx-radio input[type=radio]{position:absolute;z-index:-1;opacity:0;width:0;height:0;margin:0}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark{display:flex;align-items:center;justify-content:center;height:var(--sizing-4);width:var(--sizing-4);min-width:var(--sizing-4);border:var(--border-width-checkbox) solid var(--neutral-bg-stroke-default, #DBDFE5);border-radius:50%;transition:border .2s;position:relative}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark .mrx-radio__mark__inner{display:block;width:6px;height:6px;border-radius:50%;background:var(--brand-bg-primary-default, #2A6AB8);opacity:0;transition:opacity .2s}.mrx-radio.mrx-radio.mrx-radio-default:hover .mrx-radio__mark{border-color:var(--neutral-bg-stroke-hover, #0F54AA)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark .mrx-radio__mark__inner{opacity:1}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:not(:checked):disabled+.mrx-radio__mark{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark{border-color:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark .mrx-radio__mark__inner{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-input-error.mrx-radio-default .mrx-radio__mark{border-color:var(--system-bg-controls-negative-default, #B83B15)}.mrx-radio.mrx-radio .mrx-radio__label{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:400;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .mrx-radio__label--bold{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:700;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .required-active{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--system-icon-negative, #C65836);margin-left:var(--spacing-1);position:relative;display:inline-block}.mrx-radio__wrapper.mrx-radio__wrapper{display:flex;align-items:center;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
|
+
], ngImport: i0, template: "<div class=\"mrx-radio__wrapper\">\r\n <label\r\n class=\"mrx-radio\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [(ngModel)]=\"modelValue\"\r\n [disabled]=\"disabled || readonly\"\r\n [readonly]=\"readonly\"\r\n (change)=\"valueChanged(value)\"\r\n />\r\n\r\n <span class=\"mrx-radio__mark\"><span class=\"mrx-radio__mark__inner\"></span></span>\r\n\r\n <span class=\"ml-1\" [class]=\"boldLabel ? 'mrx-radio__label--bold' : 'mrx-radio__label'\">\r\n {{label}}\r\n <ng-content></ng-content>\r\n <span *ngIf=\"required && !disabled\" class=\"required-active\">*</span>\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [".mrx-radio.mrx-radio{display:flex!important;align-items:center;min-height:auto!important;margin-bottom:0!important;overflow:visible;background-color:transparent;cursor:pointer;box-sizing:border-box;position:relative}.mrx-radio input[type=radio]{position:absolute;z-index:-1;opacity:0;width:0;height:0;margin:0}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark{display:flex;align-items:center;justify-content:center;height:var(--sizing-4);width:var(--sizing-4);min-width:var(--sizing-4);border:var(--border-width-checkbox) solid var(--neutral-bg-stroke-default, #DBDFE5);border-radius:50%;transition:border .2s;position:relative}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark .mrx-radio__mark__inner{display:block;width:6px;height:6px;border-radius:50%;background:var(--brand-bg-primary-default, #2A6AB8);opacity:0;transition:opacity .2s}.mrx-radio.mrx-radio.mrx-radio-default:hover .mrx-radio__mark{border-color:var(--neutral-bg-stroke-hover, #0F54AA)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark .mrx-radio__mark__inner{opacity:1}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:not(:checked):disabled+.mrx-radio__mark{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark{border-color:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark .mrx-radio__mark__inner{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-input-error.mrx-radio-default .mrx-radio__mark{border-color:var(--system-bg-controls-negative-default, #B83B15)}.mrx-radio.mrx-radio .mrx-radio__label{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:400;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .mrx-radio__label--bold{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:700;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .required-active{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--system-icon-negative, #C65836);margin-left:var(--spacing-1);position:relative;display:inline-block}.mrx-radio__wrapper.mrx-radio__wrapper{display:flex;align-items:center;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
58
|
}
|
|
58
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioComponent, decorators: [{
|
|
59
60
|
type: Component,
|
|
@@ -63,7 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
63
64
|
useExisting: forwardRef(() => RadioComponent),
|
|
64
65
|
multi: true,
|
|
65
66
|
},
|
|
66
|
-
], template: "<div class=\"mrx-radio__wrapper\">\r\n <label\r\n class=\"mrx-radio\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [(ngModel)]=\"modelValue\"\r\n [disabled]=\"disabled || readonly\"\r\n [readonly]=\"readonly\"\r\n (change)=\"valueChanged(value)\"\r\n />\r\n\r\n <span class=\"mrx-radio__mark\"><span class=\"mrx-radio__mark__inner\"></span></span>\r\n\r\n <span class=\"ml-1\" [class]=\"boldLabel ? 'mrx-radio__label--bold' : 'mrx-radio__label'\">\r\n {{label}}\r\n <ng-content></ng-content>\r\n <span *ngIf=\"required && !disabled\" class=\"required-active\">*</span>\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [".mrx-radio.mrx-radio{display:flex!important;align-items:center;min-height:auto!important;margin-bottom:0!important;overflow:visible;background-color:transparent;cursor:pointer;box-sizing:border-box;position:relative}.mrx-radio input[type=radio]{position:absolute;z-index:-1;opacity:0;width:0;height:0;margin:0}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark{display:flex;align-items:center;justify-content:center;height:var(--sizing-4);width:var(--sizing-4);min-width:var(--sizing-4);border:var(--border-width-checkbox) solid var(--neutral-bg-stroke-default, #DBDFE5);border-radius:50%;transition:border .2s;position:relative}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark .mrx-radio__mark__inner{display:block;width:6px;height:6px;border-radius:50%;background:var(--brand-bg-primary-default, #2A6AB8);opacity:0;transition:opacity .2s}.mrx-radio.mrx-radio.mrx-radio-default:hover .mrx-radio__mark{border-color:var(--neutral-bg-stroke-hover, #0F54AA)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark .mrx-radio__mark__inner{opacity:1}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:not(:checked):disabled+.mrx-radio__mark{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark{border-color:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark .mrx-radio__mark__inner{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-input-error.mrx-radio-default .mrx-radio__mark{border-color:var(--system-bg-controls-negative-default, #B83B15)}.mrx-radio.mrx-radio .mrx-radio__label{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:400;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .mrx-radio__label--bold{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:700;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .required-active{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--system-icon-negative, #C65836);margin-left:var(--spacing-1);position:relative;display:inline-block}.mrx-radio__wrapper.mrx-radio__wrapper{display:flex;align-items:center;justify-content:flex-start}\n"] }]
|
|
67
|
+
], template: "<div class=\"mrx-radio__wrapper\">\r\n <label\r\n class=\"mrx-radio\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [(ngModel)]=\"modelValue\"\r\n [disabled]=\"disabled || readonly\"\r\n [readonly]=\"readonly\"\r\n (change)=\"valueChanged(value)\"\r\n />\r\n\r\n <span class=\"mrx-radio__mark\"><span class=\"mrx-radio__mark__inner\"></span></span>\r\n\r\n <span class=\"ml-1\" [class]=\"boldLabel ? 'mrx-radio__label--bold' : 'mrx-radio__label'\">\r\n {{label}}\r\n <ng-content></ng-content>\r\n <span *ngIf=\"required && !disabled\" class=\"required-active\">*</span>\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [".mrx-radio.mrx-radio{display:flex!important;align-items:center;min-height:auto!important;margin-bottom:0!important;overflow:visible;background-color:transparent;cursor:pointer;box-sizing:border-box;position:relative}.mrx-radio input[type=radio]{position:absolute;z-index:-1;opacity:0;width:0;height:0;margin:0}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark{display:flex;align-items:center;justify-content:center;height:var(--sizing-4);width:var(--sizing-4);min-width:var(--sizing-4);border:var(--border-width-checkbox) solid var(--neutral-bg-stroke-default, #DBDFE5);border-radius:50%;transition:border .2s;position:relative}.mrx-radio.mrx-radio.mrx-radio-default .mrx-radio__mark .mrx-radio__mark__inner{display:block;width:6px;height:6px;border-radius:50%;background:var(--brand-bg-primary-default, #2A6AB8);opacity:0;transition:opacity .2s}.mrx-radio.mrx-radio.mrx-radio-default:hover .mrx-radio__mark{border-color:var(--neutral-bg-stroke-hover, #0F54AA)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:checked+.mrx-radio__mark .mrx-radio__mark__inner{opacity:1}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:not(:checked):disabled+.mrx-radio__mark{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark{border-color:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-radio-default input[type=radio]:disabled+.mrx-radio__mark .mrx-radio__mark__inner{background:var(--neutral-control-bg-accent-disabled, #71767E)}.mrx-radio.mrx-radio.mrx-input-error.mrx-radio-default .mrx-radio__mark{border-color:var(--system-bg-controls-negative-default, #B83B15)}.mrx-radio.mrx-radio .mrx-radio__label{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:400;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .mrx-radio__label--bold{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:700;line-height:var(--body-md-line-height)}.mrx-radio.mrx-radio .required-active{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--system-icon-negative, #C65836);margin-left:var(--spacing-1);position:relative;display:inline-block}.mrx-radio__wrapper.mrx-radio__wrapper{display:flex;align-items:center;justify-content:flex-start}\n"] }]
|
|
67
68
|
}], propDecorators: { required: [{
|
|
68
69
|
type: Input
|
|
69
70
|
}], type: [{
|
|
@@ -82,10 +83,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
82
83
|
type: Input
|
|
83
84
|
}], customClasses: [{
|
|
84
85
|
type: Input
|
|
86
|
+
}], id: [{
|
|
87
|
+
type: Input
|
|
85
88
|
}], invalid: [{
|
|
86
89
|
type: Input
|
|
87
90
|
}], _value: [{
|
|
88
91
|
type: Input,
|
|
89
92
|
args: ['value']
|
|
90
93
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBaUIxRCxNQUFNLE9BQU8sY0FBYztJQUNsQixVQUFVLENBQU07SUFFUCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLElBQUksR0FBZSxTQUFTLENBQUM7SUFDN0IsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFUixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLE1BQU0sQ0FBTTtJQUU1QixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQUs7UUFFYixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRU8sUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7SUFDbEMsQ0FBQyxDQUFDO0lBQ00sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUN6QixDQUFDLENBQUM7SUFFRixnQkFBZ0IsQ0FBQyxFQUFZO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFZO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsWUFBaUI7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBdERVLGNBQWM7NEZBQWQsY0FBYyw2U0FSZDtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDakJILCt5QkEwQkE7OzRGRFBhLGNBQWM7a0JBYjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQzs0QkFDN0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBS2UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsRUFBRTtzQkFBakIsS0FBSztnQkFFVSxPQUFPO3NCQUF0QixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBSYWRpb1R5cGVzLCBSYWRpb1R5cGVzRW51bSB9IGZyb20gXCIuL3JhZGlvLmVudW1cIjtcclxuXHJcbmV4cG9ydCB0eXBlIFJhZGlvVmFsdWVUeXBlcyA9IGZhbHNlO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtcmFkaW8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8uY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwdWJsaWMgbW9kZWxWYWx1ZTogYW55O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogUmFkaW9UeXBlcyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGJvbGRMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaWQgPSAnJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZTogYW55O1xyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsdWUpIHtcclxuXHJcbiAgICBpZiAoISF2YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke1JhZGlvVHlwZXNFbnVtW3RoaXMudHlwZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHt9KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLm1vZGVsVmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLm1vZGVsVmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LXJhZGlvX193cmFwcGVyXCI+XHJcbiAgPGxhYmVsXHJcbiAgICBjbGFzcz1cIm1yeC1yYWRpb1wiXHJcbiAgICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gID5cclxuICAgIDxpbnB1dFxyXG4gICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbFZhbHVlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgKGNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQodmFsdWUpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJtcngtcmFkaW9fX21hcmtcIj48c3BhbiBjbGFzcz1cIm1yeC1yYWRpb19fbWFya19faW5uZXJcIj48L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwibWwtMVwiIFtjbGFzc109XCJib2xkTGFiZWwgPyAnbXJ4LXJhZGlvX19sYWJlbC0tYm9sZCcgOiAnbXJ4LXJhZGlvX19sYWJlbCdcIj5cclxuICAgICAgICB7e2xhYmVsfX1cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwicmVxdWlyZWQgJiYgIWRpc2FibGVkXCIgY2xhc3M9XCJyZXF1aXJlZC1hY3RpdmVcIj4qPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbjwvZGl2PlxyXG4iXX0=
|