@myrtex-org/form 1.1.53 → 1.1.55
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/modules/object-form/components/elements/input/date/input-date.component.mjs +30 -14
- package/esm2022/lib/modules/object-form/components/elements/input/table/components/input-table-modal/input-table-modal.component.mjs +14 -1
- package/esm2022/lib/modules/object-form/components/elements/input/table/input-table.component.mjs +18 -16
- package/fesm2022/myrtex-org-form.mjs +59 -28
- package/fesm2022/myrtex-org-form.mjs.map +1 -1
- package/lib/modules/object-form/components/elements/input/table/input-table.component.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/modules/object-form/components/elements/input/date/input-date.component.mjs
CHANGED
|
@@ -58,7 +58,7 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
58
58
|
}
|
|
59
59
|
updateValue(event) {
|
|
60
60
|
if (this._isInit) {
|
|
61
|
-
this._isUpdatingInternal = true;
|
|
61
|
+
this._isUpdatingInternal = true;
|
|
62
62
|
if (this.settings.options.range) {
|
|
63
63
|
if (!event.value || event.value.length === 0) {
|
|
64
64
|
this.dateModel = [];
|
|
@@ -67,21 +67,22 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
67
67
|
this.modelCounter = 0;
|
|
68
68
|
}
|
|
69
69
|
else if (event.value.length === 2) {
|
|
70
|
-
console.log(event, 'event date');
|
|
71
70
|
this.dateModel = [event.value[0], event.value[1]];
|
|
72
71
|
this.modelStart.value = event.value[0];
|
|
73
72
|
this.modelEnd.value = event.value[1];
|
|
74
73
|
this.modelCounter = this._getDaysDifference(this.modelStart.value, this.modelEnd.value);
|
|
75
74
|
}
|
|
76
|
-
|
|
75
|
+
// Упаковываем массив измененных моделей в объект, соответствующий типу InputDateTimeValueWithId
|
|
76
|
+
this.dispatchModify({
|
|
77
|
+
id: event.id, // сохраняем id события, полученный от mrx-input-date-time
|
|
78
|
+
value: [structuredClone(this.modelStart), structuredClone(this.modelEnd)]
|
|
79
|
+
});
|
|
77
80
|
}
|
|
78
81
|
else {
|
|
79
82
|
this.dateModel = event.value;
|
|
80
83
|
this.model.value = event.value;
|
|
84
|
+
this.dispatchModify(event);
|
|
81
85
|
}
|
|
82
|
-
console.log(this.dateModel, 'dateModel date');
|
|
83
|
-
this.dispatchModify(event);
|
|
84
|
-
// Снимаем блокировку чуть позже, когда Store переварит изменения
|
|
85
86
|
setTimeout(() => this._isUpdatingInternal = false, 600);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
@@ -155,15 +156,30 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
155
156
|
_loadFromInputs() {
|
|
156
157
|
if (!this.values)
|
|
157
158
|
return;
|
|
158
|
-
const
|
|
159
|
-
if (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
const valuesArray = this.values;
|
|
160
|
+
if (this.settings.options.range) {
|
|
161
|
+
// Ищем значения по суффиксам внутри переданного массива строки
|
|
162
|
+
const startNode = valuesArray.find(x => x.sysName === `${this.settings.sysName}-id0`);
|
|
163
|
+
const endNode = valuesArray.find(x => x.sysName === `${this.settings.sysName}-id1`);
|
|
164
|
+
this.modelStart = startNode ? structuredClone(startNode) : { ...defaultValueModel(this.settings), sysName: `${this.settings.sysName}-id0` };
|
|
165
|
+
this.modelEnd = endNode ? structuredClone(endNode) : { ...defaultValueModel(this.settings), sysName: `${this.settings.sysName}-id1` };
|
|
166
|
+
if (this.modelStart.value && this.modelEnd.value) {
|
|
167
|
+
this.dateModel = [this.modelStart.value, this.modelEnd.value];
|
|
168
|
+
this.modelCounter = this._getDaysDifference(this.modelStart.value, this.modelEnd.value);
|
|
169
|
+
}
|
|
170
|
+
else if (this.modelStart.value) {
|
|
171
|
+
this.dateModel = [this.modelStart.value, ''];
|
|
172
|
+
this.modelCounter = 0;
|
|
165
173
|
}
|
|
166
174
|
else {
|
|
175
|
+
this.dateModel = [];
|
|
176
|
+
this.modelCounter = 0;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Логика для обычной даты без ренджа
|
|
181
|
+
const found = valuesArray.find(x => x.sysName === this.settings.sysName);
|
|
182
|
+
if (found) {
|
|
167
183
|
this.model = structuredClone(found);
|
|
168
184
|
this.dateModel = this.model.value;
|
|
169
185
|
}
|
|
@@ -239,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
239
255
|
type: Component,
|
|
240
256
|
args: [{ selector: 'app-input-date', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (settings) {\r\n <div class=\"input-date-content\">\r\n <div class=\"row\">\r\n <div class=\"col\" [class.col-8]=\"settings.options.counter\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <mrx-input-date-time\r\n [dateFormat]=\"settings.options.format\"\r\n [ngModel]=\"dateModel\"\r\n [fields]=\"autosaveFields\"\r\n [range]=\"settings.options.range\"\r\n [datePlaceholder]=\"(settings.options.range ? settings.options.placeholder + ' - ' + settings.options.placeholder : settings.options.placeholder) || ''\"\r\n [isManualInput]=\"!settings.options.range\"\r\n [timepicker]=\"getViewTypeTimepicker\"\r\n [invalid]=\"getInvalid\"\r\n [invalidMessage]=\"getInvalidMessage\"\r\n [minDate]=\"settings.options.minDate\"\r\n [maxDate]=\"settings.options.maxDate\"\r\n [disabled]=\"disabled\"\r\n (modelChange)=\"updateValue($event)\"\r\n ></mrx-input-date-time>\r\n\r\n @if(!!settings.options.minDate) {\r\n <mrx-hint-error-message \r\n message=\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u2014 {{ settings.options.minDate | dateTimeFormat: 'mos' : dateFormat}}\"\r\n ></mrx-hint-error-message>\r\n }\r\n\r\n @if(!!settings.options.maxDate) {\r\n <mrx-hint-error-message \r\n message=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u2014 {{ settings.options.maxDate | dateTimeFormat: 'mos' : dateFormat}}\"\r\n ></mrx-hint-error-message>\r\n }\r\n </div>\r\n\r\n @if (settings.options.counter && settings.options.range) {\r\n <div class=\"col col-4\">\r\n <mrx-label>\r\n {{ settings.options.counterLabel }}\r\n </mrx-label>\r\n <mrx-input-number\r\n [ngModel]=\"modelCounter\"\r\n [placeholder]=\"'0'\"\r\n [disabled]=\"!settings.options.counterEditable\"\r\n (ngModelChange)=\"updateCounter($event)\"\r\n ></mrx-input-number>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n" }]
|
|
241
257
|
}] });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC9kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUE0RDtJQU5wRzs7UUFPRSxTQUFJLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUVkLHVCQUFrQixHQUFXLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUUxRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWQsY0FBUyxHQUE2QixFQUFFLENBQUM7UUFJekMsaUJBQVksR0FBVyxDQUFDLENBQUM7S0EyUGpDO0lBelBDLElBQWEsVUFB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S0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzVILE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzsrR0F2UVUsa0JBQWtCO21HQUFsQixrQkFBa0IsNkVDZi9CLDQ5RUEwREE7OzRGRDNDYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgRGF0ZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkLWZvcm0vZW51bXMnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlJztcclxuaW1wb3J0IHsgSW5wdXREYXRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZWxlbWV0cy9pbnB1dHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgb2JqZWN0Rm9ybVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlJztcclxuaW1wb3J0IHsgZGVmYXVsdFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgSW5wdXREYXRlVGltZVZhbHVlV2l0aElkIH0gZnJvbSAnQG15cnRleC1vcmcvdWknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtZGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpZWxkQ29tcG9uZW50PElucHV0RGF0ZU1vZGVsLCBJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICB0eXBlID0gQ29tcG9uZW50VHlwZS5JbnB1dERhdGU7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbGxpc2Vjb25kc0luRGF5OiBudW1iZXIgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG5cclxuICBwcml2YXRlIF9pc0luaXQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1VwZGF0aW5nSW50ZXJuYWwgPSBmYWxzZTtcclxuICBwcml2YXRlIF9mb3JtYXQgPSAnJztcclxuXHJcbiAgcHVibGljIGRhdGVNb2RlbDogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gJyc7XHJcblxyXG4gIHB1YmxpYyBtb2RlbFN0YXJ0ITogQ29tcG9uZW50VmFsdWVNb2RlbDtcclxuICBwdWJsaWMgbW9kZWxFbmQhOiBDb21wb25lbnRWYWx1ZU1vZGVsO1xyXG4gIHB1YmxpYyBtb2RlbENvdW50ZXI6IG51bWJlciA9IDA7XHJcblxyXG4gIG92ZXJyaWRlIGdldCBnZXRJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy5faXNDaGVja1JlcXVpcmVkICYmIHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJldHVybiAhKCEhdGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiAhIXRoaXMubW9kZWxFbmQ/LnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VwZXIuZ2V0SW52YWxpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xyXG5cclxuICAgIHN3aXRjaCh0aGlzLnNldHRpbmdzLm9wdGlvbnMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UoJ9C00LQu0LzQvC7Qs9Cz0LPQsycpOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICdkZC5NTS55eXl5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgXHJcbiAgICAgIGNhc2UoJ9C80Lwu0LPQs9Cz0LMnKTpcclxuICAgICAgICB0aGlzLl9mb3JtYXQgPSAnTU0ueXl5eSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlKCfQs9Cz0LPQsycpOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICd5eXl5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gJ2RkLk1NLnl5eXknO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy52aWV3VHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcclxuICAgICAgdGhpcy5fZm9ybWF0ICs9ICcgSEg6bW0nO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9mb3JtYXRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICByZXR1cm4gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Vmlld1R5cGVUaW1lcGlja2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3B0aW9ucy52aWV3VHlwZSA9PT0gRGF0ZVR5cGVFbnVtLkRhdGVUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGV2ZW50OiBJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQpIHtcclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNVcGRhdGluZ0ludGVybmFsID0gdHJ1ZTsgLy8g0JHQu9C+0LrQuNGA0YPQtdC8INCy0L3QtdGI0L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINC90LAg0LLRgNC10LzRjyDQstCy0L7QtNCwXHJcblxyXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgaWYgKCFldmVudC52YWx1ZSB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEVuZC52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC52YWx1ZS5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGV2ZW50LCAnZXZlbnQgZGF0ZScpXHJcbiAgICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IFtldmVudC52YWx1ZVswXSwgZXZlbnQudmFsdWVbMV1dO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbFN0YXJ0LnZhbHVlID0gZXZlbnQudmFsdWVbMF07XHJcbiAgICAgICAgICB0aGlzLm1vZGVsRW5kLnZhbHVlID0gZXZlbnQudmFsdWVbMV07XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IHRoaXMuX2dldERheXNEaWZmZXJlbmNlKHRoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSB0aGlzLmRhdGVNb2RlbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5kYXRlTW9kZWwsICdkYXRlTW9kZWwgZGF0ZScpXHJcbiAgICAgIHRoaXMuZGlzcGF0Y2hNb2RpZnkoZXZlbnQpO1xyXG4gICAgICBcclxuICAgICAgLy8g0KHQvdC40LzQsNC10Lwg0LHQu9C+0LrQuNGA0L7QstC60YMg0YfRg9GC0Ywg0L/QvtC30LbQtSwg0LrQvtCz0LTQsCBTdG9yZSDQv9C10YDQtdCy0LDRgNC40YIg0LjQt9C80LXQvdC10L3QuNGPXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5faXNVcGRhdGluZ0ludGVybmFsID0gZmFsc2UsIDYwMCk7IFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUNvdW50ZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm1vZGVsQ291bnRlciA9IHZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYodGhpcy5tb2RlbC52YWx1ZSAmJiB0aGlzLm1vZGVsLnZhbHVlWzBdKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IFt0aGlzLm1vZGVsLnZhbHVlWzBdLCBuZXcgRGF0ZSgpXVxyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWVbMV0gPSB0aGlzLl9jaGFuZ2VEYXlzKHRoaXMubW9kZWwudmFsdWVbMF0sIHRoaXMubW9kZWxDb3VudGVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB0aGlzLm1vZGVsLnZhbHVlOyBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlID0gW25ldyBEYXRlKCksIG5ldyBEYXRlKCldXHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWVbMV0gPSB0aGlzLl9jaGFuZ2VEYXlzKHRoaXMubW9kZWwudmFsdWVbMF0sIHRoaXMubW9kZWxDb3VudGVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB0aGlzLm1vZGVsLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaXNwYXRjaE1vZGlmeShzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbC52YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgX3RyYW5zZm9ybU91dHB1dFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICByZXR1cm4gW3N0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsU3RhcnQpLCBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbEVuZCldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIF9pbml0U3Vic2NyaXB0aW9uRm9yVmFsdWUoKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5wdXNoKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogQ29tcG9uZW50VmFsdWVNb2RlbCB8IG51bGwgfCAoQ29tcG9uZW50VmFsdWVNb2RlbCB8IG51bGwpW10pID0+IHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8g0JrQoNCY0KLQmNCn0J3QniDQlNCb0K8g0JzQntCU0JDQm9Ca0Jg6INCV0YHQu9C4INC80Ysg0L3QsNGF0L7QtNC40LzRgdGPINCyINC80L7QtNCw0LvRjNC90L7QvCDRgNC10LbQuNC80LUgKHZhbHVlTW9kZSA9PT0gJ21hbnVhbCcpLFxyXG4gICAgICAgICAgLy8g0LzRiyDQuNCz0L3QvtGA0LjRgNGD0LXQvCDQs9C70L7QsdCw0LvRjNC90YvQuSBTdG9yZSDRhNC+0YDQvNGLLCDRgtCw0Log0LrQsNC6INC00LDQvdC90YvQtSDQtNC+0LvQttC90Ysg0LHRgNCw0YLRjNGB0Y8g0LjQtyBgQElucHV0KCkgdmFsdWVzYFxyXG4gICAgICAgICAgaWYgKCh0aGlzIGFzIGFueSkudmFsdWVNb2RlID09PSAnbWFudWFsJykge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkRnJvbUlucHV0cygpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKCFyZXN1bHQgfHwgdGhpcy5faXNVcGRhdGluZ0ludGVybmFsKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSBcclxuICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFtyZXN1bHRbMF0/LnZhbHVlLCByZXN1bHRbMV0/LnZhbHVlXSlcclxuICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2VcclxuICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFt0aGlzLm1vZGVsU3RhcnQ/LnZhbHVlLCB0aGlzLm1vZGVsRW5kPy52YWx1ZV0pXHJcbiAgICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsPy52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0gc3RydWN0dXJlZENsb25lKHJlc3VsdFswXSkgfHwgZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxFbmQgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0WzFdKSB8fCBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0IHx8IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vINCV0YHQu9C4IHJhbmdlPXRydWUsINC90L4gbmdyeCDQstGL0LTQsNC7INC+0LTQuNC90L7Rh9C90YPRjiDQvNC+0LTQtdC70YwsINGDINC60L7RgtC+0YDQvtC5INCyIHZhbHVlINC70LXQttC40YIg0LzQsNGB0YHQuNCyIFtzdGFydCwgZW5kXVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlICYmIEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQgPSB7IC4uLmRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpLCB2YWx1ZTogdGhpcy5tb2RlbC52YWx1ZVswXSwgc3lzTmFtZTogYCR7dGhpcy5zZXR0aW5ncy5zeXNOYW1lfV9zdGFydGAgfTtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGVsRW5kID0geyAuLi5kZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSwgdmFsdWU6IHRoaXMubW9kZWwudmFsdWVbMV0sIHN5c05hbWU6IGAke3RoaXMuc2V0dGluZ3Muc3lzTmFtZX1fZW5kYCB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fY3VzdG9tSW5pdCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8g0JTQvtCx0LDQstC40Lwg0LzQtdGC0L7QtCDRgNGD0YfQvdC+0Lkg0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LjQtyDQv9C10YDQtdC00LDQvdC90L7Qs9C+IElucHV0LdCwICjQtNC70Y8g0LjQt9C+0LvRj9GG0LjQuCDQsiDQvNC+0LTQsNC70LrQtSlcclxuICBwcml2YXRlIF9sb2FkRnJvbUlucHV0cygpIHtcclxuICAgIGlmICghKHRoaXMgYXMgYW55KS52YWx1ZXMpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgZm91bmQgPSAodGhpcyBhcyBhbnkpLnZhbHVlcy5maW5kKCh4OiBhbnkpID0+IHguc3lzTmFtZSA9PT0gdGhpcy5zZXR0aW5ncy5zeXNOYW1lKTtcclxuICAgIGlmIChmb3VuZCkge1xyXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlICYmIEFycmF5LmlzQXJyYXkoZm91bmQudmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0geyAuLi5kZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSwgdmFsdWU6IGZvdW5kLnZhbHVlWzBdIH07XHJcbiAgICAgICAgdGhpcy5tb2RlbEVuZCA9IHsgLi4uZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyksIHZhbHVlOiBmb3VuZC52YWx1ZVsxXSB9O1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW2ZvdW5kLnZhbHVlWzBdLCBmb3VuZC52YWx1ZVsxXV07XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB0aGlzLl9nZXREYXlzRGlmZmVyZW5jZShmb3VuZC52YWx1ZVswXSwgZm91bmQudmFsdWVbMV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBzdHJ1Y3R1cmVkQ2xvbmUoZm91bmQpO1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5faXNJbml0ID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgX2N1c3RvbUluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIGlmICghdGhpcy5tb2RlbFN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0gZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5tb2RlbEVuZCkge1xyXG4gICAgICAgIHRoaXMubW9kZWxFbmQgPSBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZWxTdGFydD8udmFsdWUgJiYgdGhpcy5tb2RlbEVuZD8udmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IFt0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWVdO1xyXG4gICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdGhpcy5fZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiAhdGhpcy5tb2RlbEVuZD8udmFsdWUpIHtcclxuICAgICAgICAvLyDQntGH0LjRidCw0LXQvCDRgtC+0LvRjNC60L4g0LXRgdC70Lgg0LIgU3RvcmUg0YDQtdCw0LvRjNC90L4g0L/Rg9GB0YLQvlxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSAwO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVNb2RlbCA9IHRoaXMubW9kZWwudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faXNJbml0ID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpOyBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERheXNEaWZmZXJlbmNlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcblxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBkYXRlIGZvcm1hdCcpO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlSW5NcyA9IE1hdGguYWJzKGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpO1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGFuZ2VEYXlzKHN0YXJ0RGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmIChzdGFydERhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHN0YXJ0IGRhdGUgZm9ybWF0Jyk7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGRheXMpIHx8IGRheXMgPCAwKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRGF5cyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXInKTtcclxuICAgICAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LmdldFRpbWUoKSArIGRheXMgKiB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLnNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSAmJiBuZXdEYXRlID4gbmV3IERhdGUodGhpcy5zZXR0aW5ncy5vcHRpb25zLm1heERhdGUpKSB7XHJcbiAgICAgICAgY29uc3QgbWF4RGF5cyA9IE1hdGguZmxvb3IoKG5ldyBEYXRlKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5tYXhEYXRlKS5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpIC8gdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICAgIG5ld0RhdGUgPSBuZXcgRGF0ZShzdGFydC5nZXRUaW1lKCkgKyAobWF4RGF5cyArIDEpICogdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0ZS50b0lTT1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoc2V0dGluZ3MpIHtcclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGF0ZS1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBbY2xhc3MuY29sLThdPVwic2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzZXR0aW5ncy5vcHRpb25zLmxhYmVsKSB7XHJcbiAgICAgICAgICA8bXJ4LWxhYmVsXHJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwic2V0dGluZ3Mub3B0aW9ucy50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9tcngtbGFiZWw+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8bXJ4LWlucHV0LWRhdGUtdGltZVxyXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwic2V0dGluZ3Mub3B0aW9ucy5mb3JtYXRcIlxyXG4gICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZU1vZGVsXCJcclxuICAgICAgICAgIFtmaWVsZHNdPVwiYXV0b3NhdmVGaWVsZHNcIlxyXG4gICAgICAgICAgW3JhbmdlXT1cInNldHRpbmdzLm9wdGlvbnMucmFuZ2VcIlxyXG4gICAgICAgICAgW2RhdGVQbGFjZWhvbGRlcl09XCIoc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSA/IHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgKyAnIC0gJyArIHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgOiBzZXR0aW5ncy5vcHRpb25zLnBsYWNlaG9sZGVyKSB8fCAnJ1wiXHJcbiAgICAgICAgICBbaXNNYW51YWxJbnB1dF09XCIhc2V0dGluZ3Mub3B0aW9ucy5yYW5nZVwiXHJcbiAgICAgICAgICBbdGltZXBpY2tlcl09XCJnZXRWaWV3VHlwZVRpbWVwaWNrZXJcIlxyXG4gICAgICAgICAgW2ludmFsaWRdPVwiZ2V0SW52YWxpZFwiXHJcbiAgICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZ2V0SW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW21pbkRhdGVdPVwic2V0dGluZ3Mub3B0aW9ucy5taW5EYXRlXCJcclxuICAgICAgICAgIFttYXhEYXRlXT1cInNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1kYXRlLXRpbWU+XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWluRGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQuNC90LjQvNCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1IOKAlCB7eyBzZXR0aW5ncy5vcHRpb25zLm1pbkRhdGUgfCBkYXRlVGltZUZvcm1hdDogJ21vcycgOiBkYXRlRm9ybWF0fX1cIlxyXG4gICAgICAgICAgPjwvbXJ4LWhpbnQtZXJyb3ItbWVzc2FnZT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUg4oCUIHt7IHNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSB8IGRhdGVUaW1lRm9ybWF0OiAnbW9zJyA6IGRhdGVGb3JtYXR9fVwiXHJcbiAgICAgICAgICA+PC9tcngtaGludC1lcnJvci1tZXNzYWdlPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMuY291bnRlciAmJiBzZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtNFwiPlxyXG4gICAgICAgICAgPG1yeC1sYWJlbD5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyTGFiZWwgfX1cclxuICAgICAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgICAgICAgPG1yeC1pbnB1dC1udW1iZXJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWxDb3VudGVyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicwJ1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyRWRpdGFibGVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDb3VudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvbXJ4LWlucHV0LW51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC9kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUE0RDtJQU5wRzs7UUFPRSxTQUFJLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUVkLHVCQUFrQixHQUFXLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUUxRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWQsY0FBUyxHQUE2QixFQUFFLENBQUM7UUFJekMsaUJBQVksR0FBVyxDQUFDLENBQUM7S0E2UWpDO0lBM1FDLElBQWEsVUFB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QU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7K0dBelJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZFQ2YvQiw0OUVBMERBOzs0RkQzQ2Esa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIERhdGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL2VudW1zJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZSc7XHJcbmltcG9ydCB7IElucHV0RGF0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2VsZW1ldHMvaW5wdXRzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZSc7XHJcbmltcG9ydCB7IGRlZmF1bHRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZCB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGF0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWVsZENvbXBvbmVudDxJbnB1dERhdGVNb2RlbCwgSW5wdXREYXRlVGltZVZhbHVlV2l0aElkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdHlwZSA9IENvbXBvbmVudFR5cGUuSW5wdXREYXRlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9taWxsaXNlY29uZHNJbkRheTogbnVtYmVyID0gMTAwMCAqIDYwICogNjAgKiAyNDtcclxuXHJcbiAgcHJpdmF0ZSBfaXNJbml0ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNVcGRhdGluZ0ludGVybmFsID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZm9ybWF0ID0gJyc7XHJcblxyXG4gIHB1YmxpYyBkYXRlTW9kZWw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9ICcnO1xyXG5cclxuICBwdWJsaWMgbW9kZWxTdGFydCE6IENvbXBvbmVudFZhbHVlTW9kZWw7XHJcbiAgcHVibGljIG1vZGVsRW5kITogQ29tcG9uZW50VmFsdWVNb2RlbDtcclxuICBwdWJsaWMgbW9kZWxDb3VudGVyOiBudW1iZXIgPSAwO1xyXG5cclxuICBvdmVycmlkZSBnZXQgZ2V0SW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYgKHRoaXMuX2lzQ2hlY2tSZXF1aXJlZCAmJiB0aGlzLnNldHRpbmdzLm9wdGlvbnMucmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4gISghIXRoaXMubW9kZWxTdGFydD8udmFsdWUgJiYgISF0aGlzLm1vZGVsRW5kPy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cGVyLmdldEludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuXHJcbiAgICBzd2l0Y2godGhpcy5zZXR0aW5ncy5vcHRpb25zLmZvcm1hdCkge1xyXG4gICAgICBjYXNlKCfQtNC0LtC80Lwu0LPQs9Cz0LMnKTpcclxuICAgICAgICB0aGlzLl9mb3JtYXQgPSAnZGQuTU0ueXl5eSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIFxyXG4gICAgICBjYXNlKCfQvNC8LtCz0LPQs9CzJyk6XHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gJ01NLnl5eXknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSgn0LPQs9Cz0LMnKTpcclxuICAgICAgICB0aGlzLl9mb3JtYXQgPSAneXl5eSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICdkZC5NTS55eXl5JztcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNldHRpbmdzLm9wdGlvbnMudmlld1R5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1hdCArPSAnIEhIOm1tJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubW9kZWwudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldFZpZXdUeXBlVGltZXBpY2tlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLm9wdGlvbnMudmlld1R5cGUgPT09IERhdGVUeXBlRW51bS5EYXRlVGltZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShldmVudDogSW5wdXREYXRlVGltZVZhbHVlV2l0aElkKSB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVXBkYXRpbmdJbnRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgaWYgKCFldmVudC52YWx1ZSB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEVuZC52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC52YWx1ZS5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW2V2ZW50LnZhbHVlWzBdLCBldmVudC52YWx1ZVsxXV07XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBldmVudC52YWx1ZVswXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxFbmQudmFsdWUgPSBldmVudC52YWx1ZVsxXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdGhpcy5fZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vINCj0L/QsNC60L7QstGL0LLQsNC10Lwg0LzQsNGB0YHQuNCyINC40LfQvNC10L3QtdC90L3Ri9GFINC80L7QtNC10LvQtdC5INCyINC+0LHRitC10LrRgiwg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INGC0LjQv9GDIElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZFxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hNb2RpZnkoe1xyXG4gICAgICAgICAgaWQ6IGV2ZW50LmlkLCAvLyDRgdC+0YXRgNCw0L3Rj9C10LwgaWQg0YHQvtCx0YvRgtC40Y8sINC/0L7Qu9GD0YfQtdC90L3Ri9C5INC+0YIgbXJ4LWlucHV0LWRhdGUtdGltZVxyXG4gICAgICAgICAgdmFsdWU6IFtzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbFN0YXJ0KSwgc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWxFbmQpXSBhcyBhbnlcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoTW9kaWZ5KGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9pc1VwZGF0aW5nSW50ZXJuYWwgPSBmYWxzZSwgNjAwKTsgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlQ291bnRlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICBpZih0aGlzLm1vZGVsLnZhbHVlICYmIHRoaXMubW9kZWwudmFsdWVbMF0pIHtcclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlID0gW3RoaXMubW9kZWwudmFsdWVbMF0sIG5ldyBEYXRlKCldXHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZVsxXSA9IHRoaXMuX2NoYW5nZURheXModGhpcy5tb2RlbC52YWx1ZVswXSwgdGhpcy5tb2RlbENvdW50ZXIpO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IHRoaXMubW9kZWwudmFsdWU7IFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSBbbmV3IERhdGUoKSwgbmV3IERhdGUoKV1cclxuXHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZVsxXSA9IHRoaXMuX2NoYW5nZURheXModGhpcy5tb2RlbC52YWx1ZVswXSwgdGhpcy5tb2RlbENvdW50ZXIpO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IHRoaXMubW9kZWwudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpc3BhdGNoTW9kaWZ5KHN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsLnZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBfdHJhbnNmb3JtT3V0cHV0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIHJldHVybiBbc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWxTdGFydCksIHN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsRW5kKV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgX2luaXRTdWJzY3JpcHRpb25Gb3JWYWx1ZSgpIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMkLnB1c2goXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncykpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBDb21wb25lbnRWYWx1ZU1vZGVsIHwgbnVsbCB8IChDb21wb25lbnRWYWx1ZU1vZGVsIHwgbnVsbClbXSkgPT4ge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyDQmtCg0JjQotCY0KfQndCeINCU0JvQryDQnNCe0JTQkNCb0JrQmDog0JXRgdC70Lgg0LzRiyDQvdCw0YXQvtC00LjQvNGB0Y8g0LIg0LzQvtC00LDQu9GM0L3QvtC8INGA0LXQttC40LzQtSAodmFsdWVNb2RlID09PSAnbWFudWFsJyksXHJcbiAgICAgICAgICAvLyDQvNGLINC40LPQvdC+0YDQuNGA0YPQtdC8INCz0LvQvtCx0LDQu9GM0L3Ri9C5IFN0b3JlINGE0L7RgNC80YssINGC0LDQuiDQutCw0Log0LTQsNC90L3Ri9C1INC00L7Qu9C20L3RiyDQsdGA0LDRgtGM0YHRjyDQuNC3IGBASW5wdXQoKSB2YWx1ZXNgXHJcbiAgICAgICAgICBpZiAoKHRoaXMgYXMgYW55KS52YWx1ZU1vZGUgPT09ICdtYW51YWwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRGcm9tSW5wdXRzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXJlc3VsdCB8fCB0aGlzLl9pc1VwZGF0aW5nSW50ZXJuYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gQXJyYXkuaXNBcnJheShyZXN1bHQpIFxyXG4gICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkoW3Jlc3VsdFswXT8udmFsdWUsIHJlc3VsdFsxXT8udmFsdWVdKVxyXG4gICAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZVxyXG4gICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkoW3RoaXMubW9kZWxTdGFydD8udmFsdWUsIHRoaXMubW9kZWxFbmQ/LnZhbHVlXSlcclxuICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWw/LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0WzBdKSB8fCBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbEVuZCA9IHN0cnVjdHVyZWRDbG9uZShyZXN1bHRbMV0pIHx8IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHN0cnVjdHVyZWRDbG9uZShyZXN1bHQgfHwgZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncykpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g0JXRgdC70LggcmFuZ2U9dHJ1ZSwg0L3QviBuZ3J4INCy0YvQtNCw0Lsg0L7QtNC40L3QvtGH0L3Rg9GOINC80L7QtNC10LvRjCwg0YMg0LrQvtGC0L7RgNC+0Lkg0LIgdmFsdWUg0LvQtdC20LjRgiDQvNCw0YHRgdC40LIgW3N0YXJ0LCBlbmRdXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWxTdGFydCA9IHsgLi4uZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyksIHZhbHVlOiB0aGlzLm1vZGVsLnZhbHVlWzBdLCBzeXNOYW1lOiBgJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9X3N0YXJ0YCB9O1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWxFbmQgPSB7IC4uLmRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpLCB2YWx1ZTogdGhpcy5tb2RlbC52YWx1ZVsxXSwgc3lzTmFtZTogYCR7dGhpcy5zZXR0aW5ncy5zeXNOYW1lfV9lbmRgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLl9jdXN0b21Jbml0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyDQlNC+0LHQsNCy0LjQvCDQvNC10YLQvtC0INGA0YPRh9C90L7QuSDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQuNC3INC/0LXRgNC10LTQsNC90L3QvtCz0L4gSW5wdXQt0LAgKNC00LvRjyDQuNC30L7Qu9GP0YbQuNC4INCyINC80L7QtNCw0LvQutC1KVxyXG4gIHByaXZhdGUgX2xvYWRGcm9tSW5wdXRzKCkge1xyXG4gICAgaWYgKCEodGhpcyBhcyBhbnkpLnZhbHVlcykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBjb25zdCB2YWx1ZXNBcnJheSA9ICh0aGlzIGFzIGFueSkudmFsdWVzIGFzIENvbXBvbmVudFZhbHVlTW9kZWxbXTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIC8vINCY0YnQtdC8INC30L3QsNGH0LXQvdC40Y8g0L/QviDRgdGD0YTRhNC40LrRgdCw0Lwg0LLQvdGD0YLRgNC4INC/0LXRgNC10LTQsNC90L3QvtCz0L4g0LzQsNGB0YHQuNCy0LAg0YHRgtGA0L7QutC4XHJcbiAgICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHZhbHVlc0FycmF5LmZpbmQoeCA9PiB4LnN5c05hbWUgPT09IGAke3RoaXMuc2V0dGluZ3Muc3lzTmFtZX0taWQwYCk7XHJcbiAgICAgIGNvbnN0IGVuZE5vZGUgPSB2YWx1ZXNBcnJheS5maW5kKHggPT4geC5zeXNOYW1lID09PSBgJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9LWlkMWApO1xyXG5cclxuICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0gc3RhcnROb2RlID8gc3RydWN0dXJlZENsb25lKHN0YXJ0Tm9kZSkgOiB7IC4uLmRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpLCBzeXNOYW1lOiBgJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9LWlkMGAgfTtcclxuICAgICAgdGhpcy5tb2RlbEVuZCA9IGVuZE5vZGUgPyBzdHJ1Y3R1cmVkQ2xvbmUoZW5kTm9kZSkgOiB7IC4uLmRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpLCBzeXNOYW1lOiBgJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9LWlkMWAgfTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm1vZGVsU3RhcnQudmFsdWUgJiYgdGhpcy5tb2RlbEVuZC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZV07XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB0aGlzLl9nZXREYXlzRGlmZmVyZW5jZSh0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWxTdGFydC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgJyddO1xyXG4gICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gMDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g0JvQvtCz0LjQutCwINC00LvRjyDQvtCx0YvRh9C90L7QuSDQtNCw0YLRiyDQsdC10Lcg0YDQtdC90LTQttCwXHJcbiAgICAgIGNvbnN0IGZvdW5kID0gdmFsdWVzQXJyYXkuZmluZCh4ID0+IHguc3lzTmFtZSA9PT0gdGhpcy5zZXR0aW5ncy5zeXNOYW1lKTtcclxuICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHN0cnVjdHVyZWRDbG9uZShmb3VuZCk7XHJcbiAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB0aGlzLm1vZGVsLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faXNJbml0ID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgX2N1c3RvbUluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIGlmICghdGhpcy5tb2RlbFN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0gZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5tb2RlbEVuZCkge1xyXG4gICAgICAgIHRoaXMubW9kZWxFbmQgPSBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZWxTdGFydD8udmFsdWUgJiYgdGhpcy5tb2RlbEVuZD8udmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IFt0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWVdO1xyXG4gICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdGhpcy5fZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiAhdGhpcy5tb2RlbEVuZD8udmFsdWUpIHtcclxuICAgICAgICAvLyDQntGH0LjRidCw0LXQvCDRgtC+0LvRjNC60L4g0LXRgdC70Lgg0LIgU3RvcmUg0YDQtdCw0LvRjNC90L4g0L/Rg9GB0YLQvlxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSAwO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVNb2RlbCA9IHRoaXMubW9kZWwudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faXNJbml0ID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpOyBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERheXNEaWZmZXJlbmNlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcblxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBkYXRlIGZvcm1hdCcpO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlSW5NcyA9IE1hdGguYWJzKGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpO1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGFuZ2VEYXlzKHN0YXJ0RGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmIChzdGFydERhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHN0YXJ0IGRhdGUgZm9ybWF0Jyk7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGRheXMpIHx8IGRheXMgPCAwKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRGF5cyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXInKTtcclxuICAgICAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LmdldFRpbWUoKSArIGRheXMgKiB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLnNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSAmJiBuZXdEYXRlID4gbmV3IERhdGUodGhpcy5zZXR0aW5ncy5vcHRpb25zLm1heERhdGUpKSB7XHJcbiAgICAgICAgY29uc3QgbWF4RGF5cyA9IE1hdGguZmxvb3IoKG5ldyBEYXRlKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5tYXhEYXRlKS5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpIC8gdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICAgIG5ld0RhdGUgPSBuZXcgRGF0ZShzdGFydC5nZXRUaW1lKCkgKyAobWF4RGF5cyArIDEpICogdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0ZS50b0lTT1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoc2V0dGluZ3MpIHtcclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGF0ZS1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBbY2xhc3MuY29sLThdPVwic2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzZXR0aW5ncy5vcHRpb25zLmxhYmVsKSB7XHJcbiAgICAgICAgICA8bXJ4LWxhYmVsXHJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwic2V0dGluZ3Mub3B0aW9ucy50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9tcngtbGFiZWw+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8bXJ4LWlucHV0LWRhdGUtdGltZVxyXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwic2V0dGluZ3Mub3B0aW9ucy5mb3JtYXRcIlxyXG4gICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZU1vZGVsXCJcclxuICAgICAgICAgIFtmaWVsZHNdPVwiYXV0b3NhdmVGaWVsZHNcIlxyXG4gICAgICAgICAgW3JhbmdlXT1cInNldHRpbmdzLm9wdGlvbnMucmFuZ2VcIlxyXG4gICAgICAgICAgW2RhdGVQbGFjZWhvbGRlcl09XCIoc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSA/IHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgKyAnIC0gJyArIHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgOiBzZXR0aW5ncy5vcHRpb25zLnBsYWNlaG9sZGVyKSB8fCAnJ1wiXHJcbiAgICAgICAgICBbaXNNYW51YWxJbnB1dF09XCIhc2V0dGluZ3Mub3B0aW9ucy5yYW5nZVwiXHJcbiAgICAgICAgICBbdGltZXBpY2tlcl09XCJnZXRWaWV3VHlwZVRpbWVwaWNrZXJcIlxyXG4gICAgICAgICAgW2ludmFsaWRdPVwiZ2V0SW52YWxpZFwiXHJcbiAgICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZ2V0SW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW21pbkRhdGVdPVwic2V0dGluZ3Mub3B0aW9ucy5taW5EYXRlXCJcclxuICAgICAgICAgIFttYXhEYXRlXT1cInNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1kYXRlLXRpbWU+XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWluRGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQuNC90LjQvNCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1IOKAlCB7eyBzZXR0aW5ncy5vcHRpb25zLm1pbkRhdGUgfCBkYXRlVGltZUZvcm1hdDogJ21vcycgOiBkYXRlRm9ybWF0fX1cIlxyXG4gICAgICAgICAgPjwvbXJ4LWhpbnQtZXJyb3ItbWVzc2FnZT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUg4oCUIHt7IHNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSB8IGRhdGVUaW1lRm9ybWF0OiAnbW9zJyA6IGRhdGVGb3JtYXR9fVwiXHJcbiAgICAgICAgICA+PC9tcngtaGludC1lcnJvci1tZXNzYWdlPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMuY291bnRlciAmJiBzZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtNFwiPlxyXG4gICAgICAgICAgPG1yeC1sYWJlbD5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyTGFiZWwgfX1cclxuICAgICAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgICAgICAgPG1yeC1pbnB1dC1udW1iZXJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWxDb3VudGVyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicwJ1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyRWRpdGFibGVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDb3VudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvbXJ4LWlucHV0LW51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
|
|
@@ -55,10 +55,23 @@ export class InputTableModalComponent extends ModalServiceComponent {
|
|
|
55
55
|
}
|
|
56
56
|
_transformValues(value) {
|
|
57
57
|
const cloneRowModel = structuredClone(this.rowModel);
|
|
58
|
+
// Ищем точное совпадение по sysName (например, itb6-id0 или itb6-id1)
|
|
58
59
|
const findValue = cloneRowModel.data.find((c) => c.sysName === value.sysName);
|
|
59
60
|
if (findValue) {
|
|
60
61
|
findValue.value = value.value;
|
|
61
62
|
}
|
|
63
|
+
else {
|
|
64
|
+
// На случай, если компонент даты вернул базовый sysName, а в модели строки лежат суффиксы
|
|
65
|
+
// (Подстраховка для обратной совместимости структур)
|
|
66
|
+
if (Array.isArray(value.value) && value.value.length === 2) {
|
|
67
|
+
const startNode = cloneRowModel.data.find((c) => c.sysName === `${value.sysName}-id0`);
|
|
68
|
+
const endNode = cloneRowModel.data.find((c) => c.sysName === `${value.sysName}-id1`);
|
|
69
|
+
if (startNode)
|
|
70
|
+
startNode.value = value.value[0];
|
|
71
|
+
if (endNode)
|
|
72
|
+
endNode.value = value.value[1];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
62
75
|
this.rowModel = cloneRowModel;
|
|
63
76
|
}
|
|
64
77
|
_recalculateFormulaFields() {
|
|
@@ -177,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
177
190
|
type: Inject,
|
|
178
191
|
args: [MODAL_DATA]
|
|
179
192
|
}] }] });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvY29tcG9uZW50cy9pbnB1dC10YWJsZS1tb2RhbC9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC90YWJsZS9jb21wb25lbnRzL2lucHV0LXRhYmxlLW1vZGFsL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFpQzlGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBbUU7SUFTL0csWUFDVSxTQUEwQyxFQUMxQyxLQUFZLEVBQ1osdUJBQWdELEVBQ3BDLElBQTJCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBTEEsY0FBUyxHQUFULFNBQVMsQ0FBaUM7UUFDMUMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFMbkQsYUFBUSxHQUFZLElBQUksQ0FBQztRQVU5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRTVDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFVBQXVEO1FBQ2xGLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxFQUFFO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDcEIsQ0FBQztZQUNDLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEYsT0FBTztRQUNULENBQUM7UUFFRCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV0RyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSztRQUNWLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUEwQjtRQUNqRCxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFvQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFFdkIsS0FBSyxNQUFNLFNBQVMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNiLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFakcsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNqRCxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsV0FBVyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQzNCLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDcEIsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7SUFDaEMsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFVBQWdDO1FBQ2xFLE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7UUFFdEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUNFLFNBQVMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFdBQVc7Z0JBQzNDLFNBQThCLENBQUMsT0FBTyxFQUFFLFVBQVUsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUMxRSxDQUFDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBNkIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGdDQUFnQztJQUNoQywwQkFBMEI7SUFDMUIsb0ZBQW9GO0lBQ3BGLGtEQUFrRDtJQUNsRCx1Q0FBdUM7SUFDdkMsa0RBQWtEO0lBQ2xELDJEQUEyRDtJQUMzRCwyREFBMkQ7SUFDM0QsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QixlQUFlO0lBQ2YsUUFBUTtJQUNSLE1BQU07SUFDTixzQkFBc0I7SUFDdEIsSUFBSTtJQUVJLFFBQVE7UUFDZCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqRixLQUFLLE1BQU0sU0FBUyxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFNUUsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxTQUFTLElBQUssU0FBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ3BGLG9FQUFvRTtnQkFDcEUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFHLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ2hCLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixvQkFBb0I7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDdEYsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDaEIsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUFnQztRQUM3RCxJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9GLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDekMsSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM5QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0F4TFUsd0JBQXdCLHNHQWF6QixVQUFVO21HQWJULHdCQUF3QixvRUFOeEI7WUFDVCxjQUFjLEVBQUU7WUFDaEIsdUJBQXVCO1lBQ3ZCLGdCQUFnQixDQUFDLHdCQUF3QjtTQUMxQyxpREMxQ0gsd3hCQThCQSx5RERJSSxXQUFXLHdXQUNYLFlBQVksNlVBQ1osa0JBQWtCOzs0RkFRVCx3QkFBd0I7a0JBakJwQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGtCQUFrQjtxQkFDbkIsYUFDVTt3QkFDVCxjQUFjLEVBQUU7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCLENBQUMsd0JBQXdCO3FCQUMxQzs7MEJBZUUsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUsIE1PREFMX0RBVEEsIE1vZGFsTW9kdWxlLCBNb2RhbFJlZiwgTW9kYWxTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnQG15cnRleC1vcmcvdWknO1xyXG5pbXBvcnQgeyBJbnB1dFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMvZWxlbWV0cy9pbnB1dHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRWYWx1ZU1vZGVsLCBUYWJsZVJvd01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybURpc3BlbnNlck1vZGFsIH0gZnJvbSAnLi9mb3JtLWRpc3BlbnNlci1tb2RhbC9mb3JtLWRpc3BlbnNlci1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBwcm92aWRlTmd4TWFzayB9IGZyb20gJ25neC1tYXNrJztcclxuaW1wb3J0IHsgRm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UsIFJlZmVyZW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBvYmplY3RGb3JtQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0b3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWxCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkLWZvcm0vbW9kZWxzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgSW5wdXRTdGF0ZSwgVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkLWZvcm0vZW51bXMnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2VsZW1ldHMvaW5wdXRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRUYWJsZU1vZGFsUGFyYW1zIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIG9rVGV4dDogc3RyaW5nO1xyXG4gIHNldHRpbmdzOiBJbnB1dFRhYmxlTW9kZWw7XHJcbiAgcm93TW9kZWw6IFRhYmxlUm93TW9kZWw7XHJcbiAgaXNDaGVja1JlcXVpcmVkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElucHV0VGFibGVNb2RhbFJlc3VsdCB7XHJcbiAgcmVzdWx0OiBib29sZWFuO1xyXG4gIHJvd01vZGVsOiBUYWJsZVJvd01vZGVsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC10YWJsZS1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTW9kYWxNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtRGlzcGVuc2VyTW9kYWwsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHByb3ZpZGVOZ3hNYXNrKCksXHJcbiAgICBGb3JtdWxhQ2FsY3VsYXRlU2VydmljZSxcclxuICAgIFJlZmVyZW5jZVNlcnZpY2UgLy8g0LTQu9GPINC60L7QvNC/0L7QvdC10L3RgtCwINGB0L/QuNGB0L7QulxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0VGFibGVNb2RhbENvbXBvbmVudCBleHRlbmRzIE1vZGFsU2VydmljZUNvbXBvbmVudDxJbnB1dFRhYmxlTW9kYWxQYXJhbXMsIElucHV0VGFibGVNb2RhbFJlc3VsdD4ge1xyXG4gIHB1YmxpYyB0aXRsZSE6IHN0cmluZztcclxuICBwdWJsaWMgb2tUZXh0ITogc3RyaW5nO1xyXG4gIHB1YmxpYyBzZXR0aW5ncyE6IElucHV0VGFibGVNb2RlbDtcclxuICBwdWJsaWMgcm93TW9kZWwhOiBUYWJsZVJvd01vZGVsO1xyXG4gIC8vINCX0LDQv9C+0LzQuNC90LDQtdC8INGB0YLQsNGC0YPRgSDQv9GA0L7QstC10YDQutC4INGE0L7RgNC80Ysg0L/RgNC4INC+0YLQutGA0YvRgtC40Lgg0LzQvtC00LDQu9C60LhcclxuICBwdWJsaWMgaXNDaGVja1JlcXVpcmVkITogYm9vbGVhbjtcclxuICBwdWJsaWMgZW1wdHlSb3c6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNb2RhbFJlZjxJbnB1dFRhYmxlTW9kYWxSZXN1bHQ+LFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIGZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlOiBGb3JtdWxhQ2FsY3VsYXRlU2VydmljZSxcclxuICAgIEBJbmplY3QoTU9EQUxfREFUQSkgZGF0YTogSW5wdXRUYWJsZU1vZGFsUGFyYW1zLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcclxuICAgIHRoaXMub2tUZXh0ID0gZGF0YS5va1RleHRcclxuICAgIHRoaXMuc2V0dGluZ3MgPSBkYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5yb3dNb2RlbCA9IGRhdGEucm93TW9kZWw7XHJcbiAgICB0aGlzLmlzQ2hlY2tSZXF1aXJlZCA9IGRhdGEuaXNDaGVja1JlcXVpcmVkO1xyXG5cclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogZmFsc2UsIHJvd01vZGVsOiB0aGlzLnJvd01vZGVsfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wb25lbnRWYWx1ZUNoYW5nZWQodmFsdWVNb2RlbDogQ29tcG9uZW50VmFsdWVNb2RlbCB8IENvbXBvbmVudFZhbHVlTW9kZWxbXSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWVNb2RlbCkpIHtcclxuICAgICAgdmFsdWVNb2RlbC5mb3JFYWNoKG1vZGVsID0+IHtcclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm1WYWx1ZXMobW9kZWwpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3RyYW5zZm9ybVZhbHVlcyh2YWx1ZU1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWNhbGN1bGF0ZUZvcm11bGFGaWVsZHMoKTtcclxuXHJcbiAgICB0aGlzLmVtcHR5Um93ID0gdGhpcy5yb3dNb2RlbC5kYXRhLmV2ZXJ5KHggPT4gdGhpcy5pc0VtcHR5KHgudmFsdWUsIHgudmFsdWVUeXBlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb2soKSB7XHJcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWQoKSlcclxuICAgIHtcclxuICAgICAgLy8g0LLQutC70Y7Rh9Cw0LXQvCDQv9C+0LTRgdCy0LXRgtC60YMg0L/QvtC70LXQuVxyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnVwZGF0ZUNoZWNrUmVxdWlyZWQoeyBpc0NoZWNrUmVxdWlyZWQ6IHRydWUgfSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0LLQvtC30LLRgNCw0YnQsNC10Lwg0L/RgNC40LfQvdCw0Log0LrQsNC6INCx0YvQuyDQtNC+INC+0YLQutGA0YvRgtC40Y8g0LzQvtC00LDQu9C60LhcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlQ2hlY2tSZXF1aXJlZCh7IGlzQ2hlY2tSZXF1aXJlZDogdGhpcy5pc0NoZWNrUmVxdWlyZWQgfSkpO1xyXG5cclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogdHJ1ZSwgcm93TW9kZWw6IHRoaXMucm93TW9kZWx9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoc3RydWN0dXJlZENsb25lKHRoaXMucmVzdWx0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKSB7XHJcbiAgICAvLyDQstC+0LfQstGA0LDRidCw0LXQvCDQv9GA0LjQt9C90LDQuiDQutCw0Log0LHRi9C7INC00L4g0L7RgtC60YDRi9GC0LjRjyDQvNC+0LTQsNC70LrQuFxyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy51cGRhdGVDaGVja1JlcXVpcmVkKHsgaXNDaGVja1JlcXVpcmVkOiB0aGlzLmlzQ2hlY2tSZXF1aXJlZCB9KSk7XHJcblxyXG4gICAgdGhpcy5yZXN1bHQgPSB7cmVzdWx0OiBmYWxzZSwgcm93TW9kZWw6IHRoaXMucm93TW9kZWx9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5yZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVmFsdWVzKHZhbHVlOiBDb21wb25lbnRWYWx1ZU1vZGVsKSB7XHJcbiAgICBjb25zdCBjbG9uZVJvd01vZGVsID0gc3RydWN0dXJlZENsb25lKHRoaXMucm93TW9kZWwpO1xyXG4gICAgY29uc3QgZmluZFZhbHVlOiBDb21wb25lbnRWYWx1ZU1vZGVsIHwgdW5kZWZpbmVkID0gY2xvbmVSb3dNb2RlbC5kYXRhLmZpbmQoKGM6IENvbXBvbmVudFZhbHVlTW9kZWwpID0+IGMuc3lzTmFtZSA9PT0gdmFsdWUuc3lzTmFtZSk7XHJcblxyXG4gICAgaWYgKGZpbmRWYWx1ZSkge1xyXG4gICAgICBmaW5kVmFsdWUudmFsdWUgPSB2YWx1ZS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvd01vZGVsID0gY2xvbmVSb3dNb2RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlY2FsY3VsYXRlRm9ybXVsYUZpZWxkcygpIHtcclxuICAgIGNvbnN0IGZvcm11bGFDb21wb25lbnRzID0gdGhpcy5fZ2V0Rm9ybXVsYU51bWJlckNvbXBvbmVudHModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuXHJcbiAgICBpZiAoIWZvcm11bGFDb21wb25lbnRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xvbmVSb3dNb2RlbCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm11bGFDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBoYXNVcGRhdGVzID0gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBmb3JtdWxhQ29tcG9uZW50cykge1xyXG4gICAgICAgIGNvbnN0IGZvcm11bGEgPSBjb21wb25lbnQub3B0aW9ucz8uZm9ybXVsYT8udHJpbSgpO1xyXG4gICAgICAgIGlmICghZm9ybXVsYSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLmNhbGN1bGF0ZU1hdGhFeHByZXNzaW9uKGZvcm11bGEsIGNsb25lUm93TW9kZWwuZGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gY2xvbmVSb3dNb2RlbC5kYXRhLmZpbmQoeCA9PiB4LnN5c05hbWUgPT09IGNvbXBvbmVudC5zeXNOYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldFZhbHVlIHx8IHRhcmdldFZhbHVlLnZhbHVlID09PSByZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0VmFsdWUudmFsdWUgPSByZXN1bHQ7XHJcbiAgICAgICAgaGFzVXBkYXRlcyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghaGFzVXBkYXRlcykge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3dNb2RlbCA9IGNsb25lUm93TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRGb3JtdWxhTnVtYmVyQ29tcG9uZW50cyhjb21wb25lbnRzOiBDb21wb25lbnRNb2RlbEJhc2VbXSk6IElucHV0TnVtYmVyTW9kZWxbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IElucHV0TnVtYmVyTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbXBvbmVudC50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0TnVtYmVyICYmXHJcbiAgICAgICAgKGNvbXBvbmVudCBhcyBJbnB1dE51bWJlck1vZGVsKS5vcHRpb25zPy5pbnB1dFN0YXRlID09PSBJbnB1dFN0YXRlLkZvcm11bGFcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuX2dldEZvcm11bGFOdW1iZXJDb21wb25lbnRzKGNvbXBvbmVudC5jb21wb25lbnRzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8g0L7RgdGC0LDQstC70Y4g0L/QvtC60LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60LhcclxuICAvLyBwcml2YXRlIF9pc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gIC8vICAgdmFyIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgLy8gICB2YXIgcmVxdWlyZWRDb21wb25lbnRzID0gdGhpcy5fZ2V0UmVxdWlyZWRDb21wb25lbnRzKHRoaXMuc2V0dGluZ3MuY29tcG9uZW50cyk7XHJcbiAgLy8gICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiByZXF1aXJlZENvbXBvbmVudHMpIHtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJvd01vZGVsLmRhdGFcclxuICAvLyAgICAgICAuZmluZCh4ID0+IHguc3lzTmFtZSA9PSBjb21wb25lbnQuc3lzTmFtZVxyXG4gIC8vICAgICAgICAgICAgIHx8IHguc3lzTmFtZSA9PSBgJHtjb21wb25lbnQuc3lzTmFtZX1fc3RhcnRgXHJcbiAgLy8gICAgICAgICAgICAgfHwgeC5zeXNOYW1lID09IGAke2NvbXBvbmVudC5zeXNOYW1lfV9lbmRgKTtcclxuICAvLyAgICAgaWYgKCF2YWx1ZT8udmFsdWUpIHtcclxuICAvLyAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiAhaGFzRXJyb3I7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIF9pc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICBjb25zdCByZXF1aXJlZENvbXBvbmVudHMgPSB0aGlzLl9nZXRSZXF1aXJlZENvbXBvbmVudHModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgcmVxdWlyZWRDb21wb25lbnRzKSB7XHJcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5yb3dNb2RlbC5kYXRhLmZpbmQoeCA9PiB4LnN5c05hbWUgPT09IGNvbXBvbmVudC5zeXNOYW1lKTtcclxuICAgICAgXHJcbiAgICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gQ29tcG9uZW50VHlwZS5JbnB1dERhdGUgJiYgKGNvbXBvbmVudCBhcyBhbnkpLm9wdGlvbnM/LnJhbmdlKSB7XHJcbiAgICAgICAgLy8g0JTQu9GPINC00LjQsNC/0LDQt9C+0L3QsCDQv9GA0L7QstC10YDRj9C10LwsINGH0YLQviDRjdGC0L4g0LzQsNGB0YHQuNCyINC4INCyINC90LXQvCDQtdGB0YLRjCDQvtCx0LAg0LfQvdCw0YfQtdC90LjRj1xyXG4gICAgICAgIGlmICghZm91bmQgfHwgIUFycmF5LmlzQXJyYXkoZm91bmQudmFsdWUpIHx8IGZvdW5kLnZhbHVlLmxlbmd0aCA8IDIgfHwgIWZvdW5kLnZhbHVlWzBdIHx8ICFmb3VuZC52YWx1ZVsxXSkge1xyXG4gICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vINCU0LvRjyDQvtCx0YvRh9C90YvRhSDQv9C+0LvQtdC5XHJcbiAgICAgICAgaWYgKCFmb3VuZCB8fCBmb3VuZC52YWx1ZSA9PT0gbnVsbCB8fCBmb3VuZC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZvdW5kLnZhbHVlID09PSAnJykge1xyXG4gICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWhhc0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UmVxdWlyZWRDb21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudE1vZGVsQmFzZVtdKTogQ29tcG9uZW50TW9kZWxCYXNlW117XHJcbiAgICB2YXIgY29tcG9uZW50cyA9IGNvbXBvbmVudHMuZmlsdGVyKHggPT4geC50eXBlICE9IENvbXBvbmVudFR5cGUuR3JvdXAgJiYgISF4Lm9wdGlvbnMucmVxdWlyZWQpO1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gQ29tcG9uZW50VHlwZS5Hcm91cCAmJiB4LmNvbXBvbmVudHMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgdGhpcy5fZ2V0UmVxdWlyZWRDb21wb25lbnRzKGNvbXBvbmVudC5jb21wb25lbnRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wb25lbnRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VtcHR5KHZhbHVlOiBhbnksIHR5cGU6IFZhbHVlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHR5cGUgPT09IFZhbHVlVHlwZS5VbmRlZmluZWQpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPG1yeC1tb2RhbFxyXG4gIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgc2l6ZT1cImxhcmdlXCJcclxuICAoY2xvc2UpPVwiY2xvc2UoKVwiXHJcbiAgKG9rKT1cIm9rKClcIlxyXG4+XHJcbiAgPGFwcC1mb3JtLWRpc3BlbnNlci1tb2RhbFxyXG4gICAgW3NlY3Rpb25TZXR0aW5nc109XCJzZXR0aW5nc1wiXHJcbiAgICBbdmFsdWVzXT1cInJvd01vZGVsLmRhdGFcIlxyXG4gICAgW3ZhbHVlTW9kZV09XCInbWFudWFsJ1wiXHJcbiAgICAoY2hhbmdlZCk9XCJjb21wb25lbnRWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgPjwvYXBwLWZvcm0tZGlzcGVuc2VyLW1vZGFsPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2Zvb3RlckNvbnRlbnQ+XHJcbiAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICBbY3VzdG9tQ2xhc3Nlc109XCInbXItMydcIlxyXG4gICAgICBbdHlwZV09XCInc2Vjb25kYXJ5J1wiXHJcbiAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4gICAgPtCe0YLQvNC10L3QsFxyXG4gICAgPC9tcngtYnV0dG9uPlxyXG4gICAgPG1yeC1idXR0b25cclxuICAgICAgW3R5cGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZW1wdHlSb3dcIlxyXG4gICAgICAoY2xpY2spPVwib2soKVwiXHJcbiAgICA+e3sgb2tUZXh0IH19XHJcbiAgICA8L21yeC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9tcngtbW9kYWw+XHJcbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvY29tcG9uZW50cy9pbnB1dC10YWJsZS1tb2RhbC9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC90YWJsZS9jb21wb25lbnRzL2lucHV0LXRhYmxlLW1vZGFsL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFp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blN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlLCBNT0RBTF9EQVRBLCBNb2RhbE1vZHVsZSwgTW9kYWxSZWYsIE1vZGFsU2VydmljZUNvbXBvbmVudCB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpJztcclxuaW1wb3J0IHsgSW5wdXRUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2VsZW1ldHMvaW5wdXRzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VmFsdWVNb2RlbCwgVGFibGVSb3dNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm1EaXNwZW5zZXJNb2RhbCB9IGZyb20gJy4vZm9ybS1kaXNwZW5zZXItbW9kYWwvZm9ybS1kaXNwZW5zZXItbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgcHJvdmlkZU5neE1hc2sgfSBmcm9tICduZ3gtbWFzayc7XHJcbmltcG9ydCB7IEZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLCBSZWZlcmVuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2JqZWN0Rm9ybUFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdG9yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE1vZGVsQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIElucHV0U3RhdGUsIFZhbHVlVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL2VudW1zJztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElucHV0VGFibGVNb2RhbFBhcmFtcyB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBva1RleHQ6IHN0cmluZztcclxuICBzZXR0aW5nczogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHJvd01vZGVsOiBUYWJsZVJvd01vZGVsO1xyXG4gIGlzQ2hlY2tSZXF1aXJlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRhYmxlTW9kYWxSZXN1bHQge1xyXG4gIHJlc3VsdDogYm9vbGVhbjtcclxuICByb3dNb2RlbDogVGFibGVSb3dNb2RlbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1vZGFsTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgRm9ybURpc3BlbnNlck1vZGFsLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgRm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UsXHJcbiAgICBSZWZlcmVuY2VTZXJ2aWNlIC8vINC00LvRjyDQutC+0LzQv9C+0L3QtdC90YLQsCDRgdC/0LjRgdC+0LpcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRhYmxlTW9kYWxDb21wb25lbnQgZXh0ZW5kcyBNb2RhbFNlcnZpY2VDb21wb25lbnQ8SW5wdXRUYWJsZU1vZGFsUGFyYW1zLCBJbnB1dFRhYmxlTW9kYWxSZXN1bHQ+IHtcclxuICBwdWJsaWMgdGl0bGUhOiBzdHJpbmc7XHJcbiAgcHVibGljIG9rVGV4dCE6IHN0cmluZztcclxuICBwdWJsaWMgc2V0dGluZ3MhOiBJbnB1dFRhYmxlTW9kZWw7XHJcbiAgcHVibGljIHJvd01vZGVsITogVGFibGVSb3dNb2RlbDtcclxuICAvLyDQl9Cw0L/QvtC80LjQvdCw0LXQvCDRgdGC0LDRgtGD0YEg0L/RgNC+0LLQtdGA0LrQuCDRhNC+0YDQvNGLINC/0YDQuCDQvtGC0LrRgNGL0YLQuNC4INC80L7QtNCw0LvQutC4XHJcbiAgcHVibGljIGlzQ2hlY2tSZXF1aXJlZCE6IGJvb2xlYW47XHJcbiAgcHVibGljIGVtcHR5Um93OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTW9kYWxSZWY8SW5wdXRUYWJsZU1vZGFsUmVzdWx0PixcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSBmb3JtdWxhQ2FsY3VsYXRlU2VydmljZTogRm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1PREFMX0RBVEEpIGRhdGE6IElucHV0VGFibGVNb2RhbFBhcmFtcyxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLm9rVGV4dCA9IGRhdGEub2tUZXh0XHJcbiAgICB0aGlzLnNldHRpbmdzID0gZGF0YS5zZXR0aW5ncztcclxuICAgIHRoaXMucm93TW9kZWwgPSBkYXRhLnJvd01vZGVsO1xyXG4gICAgdGhpcy5pc0NoZWNrUmVxdWlyZWQgPSBkYXRhLmlzQ2hlY2tSZXF1aXJlZDtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IGZhbHNlLCByb3dNb2RlbDogdGhpcy5yb3dNb2RlbH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29tcG9uZW50VmFsdWVDaGFuZ2VkKHZhbHVlTW9kZWw6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBDb21wb25lbnRWYWx1ZU1vZGVsW10pIHtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlTW9kZWwpKSB7XHJcbiAgICAgIHZhbHVlTW9kZWwuZm9yRWFjaChtb2RlbCA9PiB7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtVmFsdWVzKG1vZGVsKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl90cmFuc2Zvcm1WYWx1ZXModmFsdWVNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjdWxhdGVGb3JtdWxhRmllbGRzKCk7XHJcblxyXG4gICAgdGhpcy5lbXB0eVJvdyA9IHRoaXMucm93TW9kZWwuZGF0YS5ldmVyeSh4ID0+IHRoaXMuaXNFbXB0eSh4LnZhbHVlLCB4LnZhbHVlVHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9rKCkge1xyXG4gICAgaWYgKCF0aGlzLl9pc1ZhbGlkKCkpXHJcbiAgICB7XHJcbiAgICAgIC8vINCy0LrQu9GO0YfQsNC10Lwg0L/QvtC00YHQstC10YLQutGDINC/0L7Qu9C10LlcclxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy51cGRhdGVDaGVja1JlcXVpcmVkKHsgaXNDaGVja1JlcXVpcmVkOiB0cnVlIH0pKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vINCy0L7Qt9Cy0YDQsNGJ0LDQtdC8INC/0YDQuNC30L3QsNC6INC60LDQuiDQsdGL0Lsg0LTQviDQvtGC0LrRgNGL0YLQuNGPINC80L7QtNCw0LvQutC4XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnVwZGF0ZUNoZWNrUmVxdWlyZWQoeyBpc0NoZWNrUmVxdWlyZWQ6IHRoaXMuaXNDaGVja1JlcXVpcmVkIH0pKTtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IHRydWUsIHJvd01vZGVsOiB0aGlzLnJvd01vZGVsfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJlc3VsdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgLy8g0LLQvtC30LLRgNCw0YnQsNC10Lwg0L/RgNC40LfQvdCw0Log0LrQsNC6INCx0YvQuyDQtNC+INC+0YLQutGA0YvRgtC40Y8g0LzQvtC00LDQu9C60LhcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlQ2hlY2tSZXF1aXJlZCh7IGlzQ2hlY2tSZXF1aXJlZDogdGhpcy5pc0NoZWNrUmVxdWlyZWQgfSkpO1xyXG5cclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogZmFsc2UsIHJvd01vZGVsOiB0aGlzLnJvd01vZGVsfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMucmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybVZhbHVlcyh2YWx1ZTogQ29tcG9uZW50VmFsdWVNb2RlbCkge1xyXG4gICAgY29uc3QgY2xvbmVSb3dNb2RlbCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsKTtcclxuICAgIFxyXG4gICAgLy8g0JjRidC10Lwg0YLQvtGH0L3QvtC1INGB0L7QstC/0LDQtNC10L3QuNC1INC/0L4gc3lzTmFtZSAo0L3QsNC/0YDQuNC80LXRgCwgaXRiNi1pZDAg0LjQu9C4IGl0YjYtaWQxKVxyXG4gICAgY29uc3QgZmluZFZhbHVlID0gY2xvbmVSb3dNb2RlbC5kYXRhLmZpbmQoKGM6IENvbXBvbmVudFZhbHVlTW9kZWwpID0+IGMuc3lzTmFtZSA9PT0gdmFsdWUuc3lzTmFtZSk7XHJcblxyXG4gICAgaWYgKGZpbmRWYWx1ZSkge1xyXG4gICAgICBmaW5kVmFsdWUudmFsdWUgPSB2YWx1ZS52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vINCd0LAg0YHQu9GD0YfQsNC5LCDQtdGB0LvQuCDQutC+0LzQv9C+0L3QtdC90YIg0LTQsNGC0Ysg0LLQtdGA0L3Rg9C7INCx0LDQt9C+0LLRi9C5IHN5c05hbWUsINCwINCyINC80L7QtNC10LvQuCDRgdGC0YDQvtC60Lgg0LvQtdC20LDRgiDRgdGD0YTRhNC40LrRgdGLXHJcbiAgICAgIC8vICjQn9C+0LTRgdGC0YDQsNGF0L7QstC60LAg0LTQu9GPINC+0LHRgNCw0YLQvdC+0Lkg0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YHRgtGA0YPQutGC0YPRgClcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUudmFsdWUpICYmIHZhbHVlLnZhbHVlLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IGNsb25lUm93TW9kZWwuZGF0YS5maW5kKChjOiBhbnkpID0+IGMuc3lzTmFtZSA9PT0gYCR7dmFsdWUuc3lzTmFtZX0taWQwYCk7XHJcbiAgICAgICAgY29uc3QgZW5kTm9kZSA9IGNsb25lUm93TW9kZWwuZGF0YS5maW5kKChjOiBhbnkpID0+IGMuc3lzTmFtZSA9PT0gYCR7dmFsdWUuc3lzTmFtZX0taWQxYCk7XHJcbiAgICAgICAgaWYgKHN0YXJ0Tm9kZSkgc3RhcnROb2RlLnZhbHVlID0gdmFsdWUudmFsdWVbMF07XHJcbiAgICAgICAgaWYgKGVuZE5vZGUpIGVuZE5vZGUudmFsdWUgPSB2YWx1ZS52YWx1ZVsxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm93TW9kZWwgPSBjbG9uZVJvd01vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVjYWxjdWxhdGVGb3JtdWxhRmllbGRzKCkge1xyXG4gICAgY29uc3QgZm9ybXVsYUNvbXBvbmVudHMgPSB0aGlzLl9nZXRGb3JtdWxhTnVtYmVyQ29tcG9uZW50cyh0aGlzLnNldHRpbmdzLmNvbXBvbmVudHMpO1xyXG5cclxuICAgIGlmICghZm9ybXVsYUNvbXBvbmVudHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjbG9uZVJvd01vZGVsID0gc3RydWN0dXJlZENsb25lKHRoaXMucm93TW9kZWwpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybXVsYUNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGhhc1VwZGF0ZXMgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGZvcm11bGFDb21wb25lbnRzKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybXVsYSA9IGNvbXBvbmVudC5vcHRpb25zPy5mb3JtdWxhPy50cmltKCk7XHJcbiAgICAgICAgaWYgKCFmb3JtdWxhKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UuY2FsY3VsYXRlTWF0aEV4cHJlc3Npb24oZm9ybXVsYSwgY2xvbmVSb3dNb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VmFsdWUgPSBjbG9uZVJvd01vZGVsLmRhdGEuZmluZCh4ID0+IHguc3lzTmFtZSA9PT0gY29tcG9uZW50LnN5c05hbWUpO1xyXG4gICAgICAgIGlmICghdGFyZ2V0VmFsdWUgfHwgdGFyZ2V0VmFsdWUudmFsdWUgPT09IHJlc3VsdCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0YXJnZXRWYWx1ZS52YWx1ZSA9IHJlc3VsdDtcclxuICAgICAgICBoYXNVcGRhdGVzID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFoYXNVcGRhdGVzKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvd01vZGVsID0gY2xvbmVSb3dNb2RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEZvcm11bGFOdW1iZXJDb21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudE1vZGVsQmFzZVtdKTogSW5wdXROdW1iZXJNb2RlbFtdIHtcclxuICAgIGNvbnN0IHJlc3VsdDogSW5wdXROdW1iZXJNb2RlbFtdID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29tcG9uZW50LnR5cGUgPT09IENvbXBvbmVudFR5cGUuSW5wdXROdW1iZXIgJiZcclxuICAgICAgICAoY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWwpLm9wdGlvbnM/LmlucHV0U3RhdGUgPT09IElucHV0U3RhdGUuRm9ybXVsYVxyXG4gICAgICApIHtcclxuICAgICAgICByZXN1bHQucHVzaChjb21wb25lbnQgYXMgSW5wdXROdW1iZXJNb2RlbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5fZ2V0Rm9ybXVsYU51bWJlckNvbXBvbmVudHMoY29tcG9uZW50LmNvbXBvbmVudHMpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLyDQvtGB0YLQsNCy0LvRjiDQv9C+0LrQsCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuFxyXG4gIC8vIHByaXZhdGUgX2lzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgLy8gICB2YXIgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAvLyAgIHZhciByZXF1aXJlZENvbXBvbmVudHMgPSB0aGlzLl9nZXRSZXF1aXJlZENvbXBvbmVudHModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuICAvLyAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHJlcXVpcmVkQ29tcG9uZW50cykge1xyXG4gIC8vICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucm93TW9kZWwuZGF0YVxyXG4gIC8vICAgICAgIC5maW5kKHggPT4geC5zeXNOYW1lID09IGNvbXBvbmVudC5zeXNOYW1lXHJcbiAgLy8gICAgICAgICAgICAgfHwgeC5zeXNOYW1lID09IGAke2NvbXBvbmVudC5zeXNOYW1lfV9zdGFydGBcclxuICAvLyAgICAgICAgICAgICB8fCB4LnN5c05hbWUgPT0gYCR7Y29tcG9uZW50LnN5c05hbWV9X2VuZGApO1xyXG4gIC8vICAgICBpZiAoIXZhbHVlPy52YWx1ZSkge1xyXG4gIC8vICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuICFoYXNFcnJvcjtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgX2lzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgIGNvbnN0IHJlcXVpcmVkQ29tcG9uZW50cyA9IHRoaXMuX2dldFJlcXVpcmVkQ29tcG9uZW50cyh0aGlzLnNldHRpbmdzLmNvbXBvbmVudHMpO1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiByZXF1aXJlZENvbXBvbmVudHMpIHtcclxuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLnJvd01vZGVsLmRhdGEuZmluZCh4ID0+IHguc3lzTmFtZSA9PT0gY29tcG9uZW50LnN5c05hbWUpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0RGF0ZSAmJiAoY29tcG9uZW50IGFzIGFueSkub3B0aW9ucz8ucmFuZ2UpIHtcclxuICAgICAgICAvLyDQlNC70Y8g0LTQuNCw0L/QsNC30L7QvdCwINC/0YDQvtCy0LXRgNGP0LXQvCwg0YfRgtC+INGN0YLQviDQvNCw0YHRgdC40LIg0Lgg0LIg0L3QtdC8INC10YHRgtGMINC+0LHQsCDQt9C90LDRh9C10L3QuNGPXHJcbiAgICAgICAgaWYgKCFmb3VuZCB8fCAhQXJyYXkuaXNBcnJheShmb3VuZC52YWx1ZSkgfHwgZm91bmQudmFsdWUubGVuZ3RoIDwgMiB8fCAhZm91bmQudmFsdWVbMF0gfHwgIWZvdW5kLnZhbHVlWzFdKSB7XHJcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g0JTQu9GPINC+0LHRi9GH0L3Ri9GFINC/0L7Qu9C10LlcclxuICAgICAgICBpZiAoIWZvdW5kIHx8IGZvdW5kLnZhbHVlID09PSBudWxsIHx8IGZvdW5kLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZm91bmQudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAhaGFzRXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRSZXF1aXJlZENvbXBvbmVudHMoY29tcG9uZW50czogQ29tcG9uZW50TW9kZWxCYXNlW10pOiBDb21wb25lbnRNb2RlbEJhc2VbXXtcclxuICAgIHZhciBjb21wb25lbnRzID0gY29tcG9uZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgIT0gQ29tcG9uZW50VHlwZS5Hcm91cCAmJiAhIXgub3B0aW9ucy5yZXF1aXJlZCk7XHJcbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzLmZpbHRlcih4ID0+IHgudHlwZSA9PSBDb21wb25lbnRUeXBlLkdyb3VwICYmIHguY29tcG9uZW50cy5sZW5ndGggPiAwKSkge1xyXG4gICAgICB0aGlzLl9nZXRSZXF1aXJlZENvbXBvbmVudHMoY29tcG9uZW50LmNvbXBvbmVudHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IGFueSwgdHlwZTogVmFsdWVUeXBlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZSA9PT0gVmFsdWVUeXBlLlVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8bXJ4LW1vZGFsXHJcbiAgW3RpdGxlXT1cInRpdGxlXCJcclxuICBzaXplPVwibGFyZ2VcIlxyXG4gIChjbG9zZSk9XCJjbG9zZSgpXCJcclxuICAob2spPVwib2soKVwiXHJcbj5cclxuICA8YXBwLWZvcm0tZGlzcGVuc2VyLW1vZGFsXHJcbiAgICBbc2VjdGlvblNldHRpbmdzXT1cInNldHRpbmdzXCJcclxuICAgIFt2YWx1ZXNdPVwicm93TW9kZWwuZGF0YVwiXHJcbiAgICBbdmFsdWVNb2RlXT1cIidtYW51YWwnXCJcclxuICAgIChjaGFuZ2VkKT1cImNvbXBvbmVudFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICA+PC9hcHAtZm9ybS1kaXNwZW5zZXItbW9kYWw+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjZm9vdGVyQ29udGVudD5cclxuICAgIDxtcngtYnV0dG9uXHJcbiAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidtci0zJ1wiXHJcbiAgICAgIFt0eXBlXT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXHJcbiAgICA+0J7RgtC80LXQvdCwXHJcbiAgICA8L21yeC1idXR0b24+XHJcbiAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICBbdHlwZV09XCIncHJpbWFyeSdcIlxyXG4gICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJlbXB0eVJvd1wiXHJcbiAgICAgIChjbGljayk9XCJvaygpXCJcclxuICAgID57eyBva1RleHQgfX1cclxuICAgIDwvbXJ4LWJ1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L21yeC1tb2RhbD5cclxuIl19
|