@myrtex-org/form 1.1.94 → 1.1.95
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 +1 -11
- package/esm2022/lib/modules/object-form/components/elements/input/table/components/input-table-modal/input-table-modal.component.mjs +1 -13
- package/esm2022/lib/modules/object-form/components/elements/input/table/input-table.component.mjs +1 -23
- package/fesm2022/myrtex-org-form.mjs +0 -44
- 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
|
@@ -57,7 +57,6 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
57
57
|
return this.settings.options.viewType === DateTypeEnum.DateTime;
|
|
58
58
|
}
|
|
59
59
|
updateValue(event) {
|
|
60
|
-
console.log(`[DateComponent -> updateValue] [sysName: ${this.settings.sysName}] Событие от UI элемента:`, event);
|
|
61
60
|
if (this._isInit) {
|
|
62
61
|
this._isUpdatingInternal = true; // Блокируем внешние обновления на время ввода
|
|
63
62
|
if (this.settings.options.range) {
|
|
@@ -79,7 +78,6 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
79
78
|
this.dateModel = event.value;
|
|
80
79
|
this.model.value = event.value;
|
|
81
80
|
}
|
|
82
|
-
console.log(`[DateComponent -> updateValue] Сформирован вызов dispatchModify. Отправляемое значение:`, this._transformOutputValue());
|
|
83
81
|
this.dispatchModify(event);
|
|
84
82
|
// Снимаем блокировку чуть позже, когда Store переварит изменения
|
|
85
83
|
setTimeout(() => this._isUpdatingInternal = false, 600);
|
|
@@ -117,10 +115,7 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
117
115
|
_initSubscriptionForValue() {
|
|
118
116
|
this._subscriptions$.push(this._store.select(objectFormSelectors.selectValueModel(this.settings))
|
|
119
117
|
.subscribe((result) => {
|
|
120
|
-
console.log(`[DateComponent -> Store Subscription] [sysName: ${this.settings.sysName}] Получено из Store:`, structuredClone(result));
|
|
121
118
|
if (!result || this._isUpdatingInternal) {
|
|
122
|
-
if (this._isUpdatingInternal)
|
|
123
|
-
console.log(`[DateComponent] Пропущено обновление из Store, так как _isUpdatingInternal = true`);
|
|
124
119
|
return;
|
|
125
120
|
}
|
|
126
121
|
// Если компонент уже инициализирован, проверяем, нужно ли обновляться.
|
|
@@ -148,7 +143,6 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
148
143
|
}));
|
|
149
144
|
}
|
|
150
145
|
_customInit() {
|
|
151
|
-
console.log(`[DateComponent -> _customInit] [sysName: ${this.settings.sysName}] Настройка локальных моделей. Текущее состояние range:`, this.settings.options.range);
|
|
152
146
|
if (this.settings.options.range) {
|
|
153
147
|
if (!this.modelStart) {
|
|
154
148
|
this.modelStart = defaultValueModel(this.settings);
|
|
@@ -174,7 +168,6 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
174
168
|
else {
|
|
175
169
|
this.dateModel = this.model.value;
|
|
176
170
|
}
|
|
177
|
-
console.log(`[DateComponent -> _customInit] Результат инициализации: dateModel =`, this.dateModel, 'modelCounter =', this.modelCounter);
|
|
178
171
|
this._isInit = true;
|
|
179
172
|
this._detector.markForCheck();
|
|
180
173
|
}
|
|
@@ -182,7 +175,6 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
182
175
|
const start = new Date(startDate);
|
|
183
176
|
const end = new Date(endDate);
|
|
184
177
|
if (isNaN(start.getTime()) || isNaN(end.getTime())) {
|
|
185
|
-
console.error('Invalid date format');
|
|
186
178
|
return 0;
|
|
187
179
|
}
|
|
188
180
|
const differenceInMs = Math.abs(end.getTime() - start.getTime());
|
|
@@ -192,11 +184,9 @@ export class InputDateComponent extends BaseFieldComponent {
|
|
|
192
184
|
if (startDate) {
|
|
193
185
|
const start = new Date(startDate);
|
|
194
186
|
if (isNaN(start.getTime())) {
|
|
195
|
-
console.error('Invalid start date format');
|
|
196
187
|
return startDate;
|
|
197
188
|
}
|
|
198
189
|
if (!Number.isInteger(days) || days < 0) {
|
|
199
|
-
console.error('Days must be a non-negative integer');
|
|
200
190
|
return startDate;
|
|
201
191
|
}
|
|
202
192
|
let newDate = new Date(start.getTime() + days * this._millisecondsInDay);
|
|
@@ -217,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
217
207
|
type: Component,
|
|
218
208
|
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" }]
|
|
219
209
|
}] });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC9kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUE0RDtJQU5wRzs7UUFPRSxTQUFJLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUVkLHVCQUFrQixHQUFXLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUUxRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWQsY0FBUyxHQUE2QixFQUFFLENBQUM7UUFJekMsaUJBQVksR0FBVyxDQUFDLENBQUM7S0F1T2pDO0lBck9DLElBQWEsVUFB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QUFDOytHQW5QVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2RUNmL0IsNDlFQTBEQTs7NEZEM0NhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBEYXRlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9lbnVtcyc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBvYmplY3RGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBkZWZhdWx0VmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1kYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRmllbGRDb21wb25lbnQ8SW5wdXREYXRlTW9kZWwsIElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHR5cGUgPSBDb21wb25lbnRUeXBlLklucHV0RGF0ZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbWlsbGlzZWNvbmRzSW5EYXk6IG51bWJlciA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XHJcblxyXG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzVXBkYXRpbmdJbnRlcm5hbCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Zvcm1hdCA9ICcnO1xyXG5cclxuICBwdWJsaWMgZGF0ZU1vZGVsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSAnJztcclxuXHJcbiAgcHVibGljIG1vZGVsU3RhcnQhOiBDb21wb25lbnRWYWx1ZU1vZGVsO1xyXG4gIHB1YmxpYyBtb2RlbEVuZCE6IENvbXBvbmVudFZhbHVlTW9kZWw7XHJcbiAgcHVibGljIG1vZGVsQ291bnRlcjogbnVtYmVyID0gMDtcclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IGdldEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIGlmICh0aGlzLl9pc0NoZWNrUmVxdWlyZWQgJiYgdGhpcy5zZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgcmV0dXJuICEoISF0aGlzLm1vZGVsU3RhcnQ/LnZhbHVlICYmICEhdGhpcy5tb2RlbEVuZD8udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdXBlci5nZXRJbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcblxyXG4gICAgc3dpdGNoKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5mb3JtYXQpIHtcclxuICAgICAgY2FzZSgn0LTQtC7QvNC8LtCz0LPQs9CzJyk6XHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gJ2RkLk1NLnl5eXknO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBcclxuICAgICAgY2FzZSgn0LzQvC7Qs9Cz0LPQsycpOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICdNTS55eXl5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UoJ9Cz0LPQs9CzJyk6XHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gJ3l5eXknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9mb3JtYXQgPSAnZGQuTU0ueXl5eSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5zZXR0aW5ncy5vcHRpb25zLnZpZXdUeXBlID09PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICB0aGlzLl9mb3JtYXQgKz0gJyBISDptbSc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRWaWV3VHlwZVRpbWVwaWNrZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vcHRpb25zLnZpZXdUeXBlID09PSBEYXRlVHlwZUVudW0uRGF0ZVRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoZXZlbnQ6IElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZCkge1xyXG4gICAgY29uc29sZS5sb2coYFtEYXRlQ29tcG9uZW50IC0+IHVwZGF0ZVZhbHVlXSBbc3lzTmFtZTogJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9XSDQodC+0LHRi9GC0LjQtSDQvtGCIFVJINGN0LvQtdC80LXQvdGC0LA6YCwgZXZlbnQpO1xyXG5cclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNVcGRhdGluZ0ludGVybmFsID0gdHJ1ZTsgLy8g0JHQu9C+0LrQuNGA0YPQtdC8INCy0L3QtdGI0L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINC90LAg0LLRgNC10LzRjyDQstCy0L7QtNCwXHJcblxyXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgaWYgKCFldmVudC52YWx1ZSB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEVuZC52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC52YWx1ZS5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW2V2ZW50LnZhbHVlWzBdLCBldmVudC52YWx1ZVsxXV07XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBldmVudC52YWx1ZVswXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxFbmQudmFsdWUgPSBldmVudC52YWx1ZVsxXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdGhpcy5fZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IHRoaXMuZGF0ZU1vZGVsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gZXZlbnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhgW0RhdGVDb21wb25lbnQgLT4gdXBkYXRlVmFsdWVdINCh0YTQvtGA0LzQuNGA0L7QstCw0L0g0LLRi9C30L7QsiBkaXNwYXRjaE1vZGlmeS4g0J7RgtC/0YDQsNCy0LvRj9C10LzQvtC1INC30L3QsNGH0LXQvdC40LU6YCwgdGhpcy5fdHJhbnNmb3JtT3V0cHV0VmFsdWUoKSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmRpc3BhdGNoTW9kaWZ5KGV2ZW50KTtcclxuICAgICAgXHJcbiAgICAgIC8vINCh0L3QuNC80LDQtdC8INCx0LvQvtC60LjRgNC+0LLQutGDINGH0YPRgtGMINC/0L7Qt9C20LUsINC60L7Qs9C00LAgU3RvcmUg0L/QtdGA0LXQstCw0YDQuNGCINC40LfQvNC10L3QtdC90LjRj1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2lzVXBkYXRpbmdJbnRlcm5hbCA9IGZhbHNlLCA2MDApOyBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVDb3VudGVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIGlmKHRoaXMubW9kZWwudmFsdWUgJiYgdGhpcy5tb2RlbC52YWx1ZVswXSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSBbdGhpcy5tb2RlbC52YWx1ZVswXSwgbmV3IERhdGUoKV1cclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlWzFdID0gdGhpcy5fY2hhbmdlRGF5cyh0aGlzLm1vZGVsLnZhbHVlWzBdLCB0aGlzLm1vZGVsQ291bnRlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTsgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IFtuZXcgRGF0ZSgpLCBuZXcgRGF0ZSgpXVxyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlWzFdID0gdGhpcy5fY2hhbmdlRGF5cyh0aGlzLm1vZGVsLnZhbHVlWzBdLCB0aGlzLm1vZGVsQ291bnRlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlzcGF0Y2hNb2RpZnkoc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWwudmFsdWUpKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIF90cmFuc2Zvcm1PdXRwdXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgcmV0dXJuIFtzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbFN0YXJ0KSwgc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWxFbmQpXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBfaW5pdFN1YnNjcmlwdGlvbkZvclZhbHVlKCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQucHVzaChcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsIHwgKENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsKVtdKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgW0RhdGVDb21wb25lbnQgLT4gU3RvcmUgU3Vic2NyaXB0aW9uXSBbc3lzTmFtZTogJHt0aGlzLnNldHRpbmdzLnN5c05hbWV9XSDQn9C+0LvRg9GH0LXQvdC+INC40LcgU3RvcmU6YCwgc3RydWN0dXJlZENsb25lKHJlc3VsdCkpO1xyXG5cclxuICAgICAgICAgIGlmICghcmVzdWx0IHx8IHRoaXMuX2lzVXBkYXRpbmdJbnRlcm5hbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNVcGRhdGluZ0ludGVybmFsKSBjb25zb2xlLmxvZyhgW0RhdGVDb21wb25lbnRdINCf0YDQvtC/0YPRidC10L3QviDQvtCx0L3QvtCy0LvQtdC90LjQtSDQuNC3IFN0b3JlLCDRgtCw0Log0LrQsNC6IF9pc1VwZGF0aW5nSW50ZXJuYWwgPSB0cnVlYCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyDQldGB0LvQuCDQutC+0LzQv9C+0L3QtdC90YIg0YPQttC1INC40L3QuNGG0LjQsNC70LjQt9C40YDQvtCy0LDQvSwg0L/RgNC+0LLQtdGA0Y/QtdC8LCDQvdGD0LbQvdC+INC70Lgg0L7QsdC90L7QstC70Y/RgtGM0YHRjy5cclxuICAgICAgICAgIC8vINCc0Ysg0J3QlSDQvtCx0L3QvtCy0LvRj9C10LzRgdGPLCDQtdGB0LvQuCDQtNCw0L3QvdGL0LUg0LIgU3RvcmUg0LjQtNC10L3RgtC40YfQvdGLINGC0LXQvCwg0YfRgtC+INC80Ysg0YPQttC1INC00LXRgNC20LjQvCDQsiDQv9Cw0LzRj9GC0LguXHJcbiAgICAgICAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gQXJyYXkuaXNBcnJheShyZXN1bHQpIFxyXG4gICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkoW3Jlc3VsdFswXT8udmFsdWUsIHJlc3VsdFsxXT8udmFsdWVdKVxyXG4gICAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZVxyXG4gICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkoW3RoaXMubW9kZWxTdGFydD8udmFsdWUsIHRoaXMubW9kZWxFbmQ/LnZhbHVlXSlcclxuICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWw/LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuOyAvLyDQlNCw0L3QvdGL0LUg0YLQtSDQttC1INGB0LDQvNGL0LUsINCy0YvRhdC+0LTQuNC8LCDRh9GC0L7QsdGLINC90LUg0LfQsNC/0YPRgdC60LDRgtGMINGC0LDQudC80LXRgCDQt9Cw0L3QvtCy0L5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vINCV0YHQu9C4INC00LDQvdC90YvQtSDRgNC10LDQu9GM0L3QviDQvdC+0LLRi9C1ICjQv9GA0LjRiNC70Lgg0LjQt9Cy0L3QtSksINC+0LHQvdC+0LLQu9GP0LXQvCDQu9C+0LrQsNC70YzQvdGL0LUg0LzQvtC00LXQu9C4XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxTdGFydCA9IHN0cnVjdHVyZWRDbG9uZShyZXN1bHRbMF0pIHx8IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsRW5kID0gc3RydWN0dXJlZENsb25lKHJlc3VsdFsxXSkgfHwgZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gc3RydWN0dXJlZENsb25lKHJlc3VsdCB8fCBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fY3VzdG9tSW5pdCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgX2N1c3RvbUluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhgW0RhdGVDb21wb25lbnQgLT4gX2N1c3RvbUluaXRdIFtzeXNOYW1lOiAke3RoaXMuc2V0dGluZ3Muc3lzTmFtZX1dINCd0LDRgdGC0YDQvtC50LrQsCDQu9C+0LrQsNC70YzQvdGL0YUg0LzQvtC00LXQu9C10LkuINCi0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSByYW5nZTpgLCB0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpO1xyXG5cclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsU3RhcnQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsU3RhcnQgPSBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLm1vZGVsRW5kKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbEVuZCA9IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICghdGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsID0gZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiB0aGlzLm1vZGVsRW5kPy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZV07XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB0aGlzLl9nZXREYXlzRGlmZmVyZW5jZSh0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsU3RhcnQ/LnZhbHVlICYmICF0aGlzLm1vZGVsRW5kPy52YWx1ZSkge1xyXG4gICAgICAgIC8vINCe0YfQuNGJ0LDQtdC8INGC0L7Qu9GM0LrQviDQtdGB0LvQuCDQsiBTdG9yZSDRgNC10LDQu9GM0L3QviDQv9GD0YHRgtC+XHJcbiAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZyhgW0RhdGVDb21wb25lbnQgLT4gX2N1c3RvbUluaXRdINCg0LXQt9GD0LvRjNGC0LDRgiDQuNC90LjRhtC40LDQu9C40LfQsNGG0LjQuDogZGF0ZU1vZGVsID1gLCB0aGlzLmRhdGVNb2RlbCwgJ21vZGVsQ291bnRlciA9JywgdGhpcy5tb2RlbENvdW50ZXIpO1xyXG5cclxuICAgIHRoaXMuX2lzSW5pdCA9IHRydWU7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTsgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXREYXlzRGlmZmVyZW5jZShzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGVuZERhdGUpO1xyXG5cclxuICAgIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpIHx8IGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZGF0ZSBmb3JtYXQnKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGlmZmVyZW5jZUluTXMgPSBNYXRoLmFicyhlbmQuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpKTtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbk1zIC8gdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlRGF5cyhzdGFydERhdGU6IHN0cmluZywgZGF5czogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoc3RhcnREYXRlKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuXHJcbiAgICAgIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBzdGFydCBkYXRlIGZvcm1hdCcpO1xyXG4gICAgICAgIHJldHVybiBzdGFydERhdGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihkYXlzKSB8fCBkYXlzIDwgMCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0RheXMgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyJyk7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShzdGFydC5nZXRUaW1lKCkgKyBkYXlzICogdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5zZXR0aW5ncy5vcHRpb25zLm1heERhdGUgJiYgbmV3RGF0ZSA+IG5ldyBEYXRlKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5tYXhEYXRlKSkge1xyXG4gICAgICAgIGNvbnN0IG1heERheXMgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSh0aGlzLnNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSkuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpKSAvIHRoaXMuX21pbGxpc2Vjb25kc0luRGF5KTtcclxuICAgICAgICBuZXdEYXRlID0gbmV3IERhdGUoc3RhcnQuZ2V0VGltZSgpICsgKG1heERheXMgKyAxKSAqIHRoaXMuX21pbGxpc2Vjb25kc0luRGF5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5ld0RhdGUudG9JU09TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYgKHNldHRpbmdzKSB7XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWRhdGUtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgW2NsYXNzLmNvbC04XT1cInNldHRpbmdzLm9wdGlvbnMuY291bnRlclwiPlxyXG4gICAgICAgIEBpZiAoc2V0dGluZ3Mub3B0aW9ucy5sYWJlbCkge1xyXG4gICAgICAgICAgPG1yeC1sYWJlbFxyXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwic2V0dGluZ3Mub3B0aW9ucy5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cInNldHRpbmdzLm9wdGlvbnMudG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNldHRpbmdzLm9wdGlvbnMubGFiZWwgfX1cclxuICAgICAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPG1yeC1pbnB1dC1kYXRlLXRpbWVcclxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cInNldHRpbmdzLm9wdGlvbnMuZm9ybWF0XCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGVNb2RlbFwiXHJcbiAgICAgICAgICBbZmllbGRzXT1cImF1dG9zYXZlRmllbGRzXCJcclxuICAgICAgICAgIFtyYW5nZV09XCJzZXR0aW5ncy5vcHRpb25zLnJhbmdlXCJcclxuICAgICAgICAgIFtkYXRlUGxhY2Vob2xkZXJdPVwiKHNldHRpbmdzLm9wdGlvbnMucmFuZ2UgPyBzZXR0aW5ncy5vcHRpb25zLnBsYWNlaG9sZGVyICsgJyAtICcgKyBzZXR0aW5ncy5vcHRpb25zLnBsYWNlaG9sZGVyIDogc2V0dGluZ3Mub3B0aW9ucy5wbGFjZWhvbGRlcikgfHwgJydcIlxyXG4gICAgICAgICAgW2lzTWFudWFsSW5wdXRdPVwiIXNldHRpbmdzLm9wdGlvbnMucmFuZ2VcIlxyXG4gICAgICAgICAgW3RpbWVwaWNrZXJdPVwiZ2V0Vmlld1R5cGVUaW1lcGlja2VyXCJcclxuICAgICAgICAgIFtpbnZhbGlkXT1cImdldEludmFsaWRcIlxyXG4gICAgICAgICAgW2ludmFsaWRNZXNzYWdlXT1cImdldEludmFsaWRNZXNzYWdlXCJcclxuICAgICAgICAgIFttaW5EYXRlXT1cInNldHRpbmdzLm9wdGlvbnMubWluRGF0ZVwiXHJcbiAgICAgICAgICBbbWF4RGF0ZV09XCJzZXR0aW5ncy5vcHRpb25zLm1heERhdGVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9tcngtaW5wdXQtZGF0ZS10aW1lPlxyXG5cclxuICAgICAgICBAaWYoISFzZXR0aW5ncy5vcHRpb25zLm1pbkRhdGUpIHtcclxuICAgICAgICAgIDxtcngtaGludC1lcnJvci1tZXNzYWdlICBcclxuICAgICAgICAgICAgbWVzc2FnZT1cItCc0LjQvdC40LzQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDigJQge3sgc2V0dGluZ3Mub3B0aW9ucy5taW5EYXRlIHwgZGF0ZVRpbWVGb3JtYXQ6ICdtb3MnIDogZGF0ZUZvcm1hdH19XCJcclxuICAgICAgICAgID48L21yeC1oaW50LWVycm9yLW1lc3NhZ2U+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYoISFzZXR0aW5ncy5vcHRpb25zLm1heERhdGUpIHtcclxuICAgICAgICAgIDxtcngtaGludC1lcnJvci1tZXNzYWdlICBcclxuICAgICAgICAgICAgbWVzc2FnZT1cItCc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1IOKAlCB7eyBzZXR0aW5ncy5vcHRpb25zLm1heERhdGUgfCBkYXRlVGltZUZvcm1hdDogJ21vcycgOiBkYXRlRm9ybWF0fX1cIlxyXG4gICAgICAgICAgPjwvbXJ4LWhpbnQtZXJyb3ItbWVzc2FnZT5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgQGlmIChzZXR0aW5ncy5vcHRpb25zLmNvdW50ZXIgJiYgc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTRcIj5cclxuICAgICAgICAgIDxtcngtbGFiZWw+XHJcbiAgICAgICAgICAgIHt7IHNldHRpbmdzLm9wdGlvbnMuY291bnRlckxhYmVsIH19XHJcbiAgICAgICAgICA8L21yeC1sYWJlbD5cclxuICAgICAgICAgIDxtcngtaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsQ291bnRlclwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInMCdcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNldHRpbmdzLm9wdGlvbnMuY291bnRlckVkaXRhYmxlXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ291bnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgID48L21yeC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC9kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUE0RDtJQU5wRzs7UUFPRSxTQUFJLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUVkLHVCQUFrQixHQUFXLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUUxRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWQsY0FBUyxHQUE2QixFQUFFLENBQUM7UUFJekMsaUJBQVksR0FBVyxDQUFDLENBQUM7S0F5TmpDO0lBdk5DLElBQWEsVUFB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QUFrQixDQUFDLENBQUM7Z0JBQzVILE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzsrR0FyT1Usa0JBQWtCO21HQUFsQixrQkFBa0IsNkVDZi9CLDQ5RUEwREE7OzRGRDNDYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgRGF0ZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkLWZvcm0vZW51bXMnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlJztcclxuaW1wb3J0IHsgSW5wdXREYXRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZWxlbWV0cy9pbnB1dHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgb2JqZWN0Rm9ybVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlJztcclxuaW1wb3J0IHsgZGVmYXVsdFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgSW5wdXREYXRlVGltZVZhbHVlV2l0aElkIH0gZnJvbSAnQG15cnRleC1vcmcvdWknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtZGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpZWxkQ29tcG9uZW50PElucHV0RGF0ZU1vZGVsLCBJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICB0eXBlID0gQ29tcG9uZW50VHlwZS5JbnB1dERhdGU7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbGxpc2Vjb25kc0luRGF5OiBudW1iZXIgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG5cclxuICBwcml2YXRlIF9pc0luaXQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1VwZGF0aW5nSW50ZXJuYWwgPSBmYWxzZTtcclxuICBwcml2YXRlIF9mb3JtYXQgPSAnJztcclxuXHJcbiAgcHVibGljIGRhdGVNb2RlbDogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gJyc7XHJcblxyXG4gIHB1YmxpYyBtb2RlbFN0YXJ0ITogQ29tcG9uZW50VmFsdWVNb2RlbDtcclxuICBwdWJsaWMgbW9kZWxFbmQhOiBDb21wb25lbnRWYWx1ZU1vZGVsO1xyXG4gIHB1YmxpYyBtb2RlbENvdW50ZXI6IG51bWJlciA9IDA7XHJcblxyXG4gIG92ZXJyaWRlIGdldCBnZXRJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy5faXNDaGVja1JlcXVpcmVkICYmIHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJldHVybiAhKCEhdGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiAhIXRoaXMubW9kZWxFbmQ/LnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VwZXIuZ2V0SW52YWxpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xyXG5cclxuICAgIHN3aXRjaCh0aGlzLnNldHRpbmdzLm9wdGlvbnMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UoJ9C00LQu0LzQvC7Qs9Cz0LPQsycpOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICdkZC5NTS55eXl5JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgXHJcbiAgICAgIGNhc2UoJ9C80Lwu0LPQs9Cz0LMnKTpcclxuICAgICAgICB0aGlzLl9mb3JtYXQgPSAnTU0ueXl5eSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlKCfQs9Cz0LPQsycpOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9ICd5eXl5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gJ2RkLk1NLnl5eXknO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy52aWV3VHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcclxuICAgICAgdGhpcy5fZm9ybWF0ICs9ICcgSEg6bW0nO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9mb3JtYXRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICByZXR1cm4gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Vmlld1R5cGVUaW1lcGlja2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3B0aW9ucy52aWV3VHlwZSA9PT0gRGF0ZVR5cGVFbnVtLkRhdGVUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGV2ZW50OiBJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQpIHtcclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNVcGRhdGluZ0ludGVybmFsID0gdHJ1ZTsgLy8g0JHQu9C+0LrQuNGA0YPQtdC8INCy0L3QtdGI0L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINC90LAg0LLRgNC10LzRjyDQstCy0L7QtNCwXHJcblxyXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgaWYgKCFldmVudC52YWx1ZSB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEVuZC52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC52YWx1ZS5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW2V2ZW50LnZhbHVlWzBdLCBldmVudC52YWx1ZVsxXV07XHJcbiAgICAgICAgICB0aGlzLm1vZGVsU3RhcnQudmFsdWUgPSBldmVudC52YWx1ZVswXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxFbmQudmFsdWUgPSBldmVudC52YWx1ZVsxXTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gdGhpcy5fZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5tb2RlbFN0YXJ0LnZhbHVlLCB0aGlzLm1vZGVsRW5kLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IHRoaXMuZGF0ZU1vZGVsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gZXZlbnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRpc3BhdGNoTW9kaWZ5KGV2ZW50KTtcclxuICAgICAgXHJcbiAgICAgIC8vINCh0L3QuNC80LDQtdC8INCx0LvQvtC60LjRgNC+0LLQutGDINGH0YPRgtGMINC/0L7Qt9C20LUsINC60L7Qs9C00LAgU3RvcmUg0L/QtdGA0LXQstCw0YDQuNGCINC40LfQvNC10L3QtdC90LjRj1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2lzVXBkYXRpbmdJbnRlcm5hbCA9IGZhbHNlLCA2MDApOyBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVDb3VudGVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kZWxDb3VudGVyID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgIGlmKHRoaXMubW9kZWwudmFsdWUgJiYgdGhpcy5tb2RlbC52YWx1ZVswXSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsdWUgPSBbdGhpcy5tb2RlbC52YWx1ZVswXSwgbmV3IERhdGUoKV1cclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlWzFdID0gdGhpcy5fY2hhbmdlRGF5cyh0aGlzLm1vZGVsLnZhbHVlWzBdLCB0aGlzLm1vZGVsQ291bnRlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTsgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IFtuZXcgRGF0ZSgpLCBuZXcgRGF0ZSgpXVxyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnZhbHVlWzFdID0gdGhpcy5fY2hhbmdlRGF5cyh0aGlzLm1vZGVsLnZhbHVlWzBdLCB0aGlzLm1vZGVsQ291bnRlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlzcGF0Y2hNb2RpZnkoc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWwudmFsdWUpKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIF90cmFuc2Zvcm1PdXRwdXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgcmV0dXJuIFtzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbFN0YXJ0KSwgc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWxFbmQpXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBfaW5pdFN1YnNjcmlwdGlvbkZvclZhbHVlKCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQucHVzaChcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsIHwgKENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsKVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdCB8fCB0aGlzLl9pc1VwZGF0aW5nSW50ZXJuYWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vINCV0YHQu9C4INC60L7QvNC/0L7QvdC10L3RgiDRg9C20LUg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC9LCDQv9GA0L7QstC10YDRj9C10LwsINC90YPQttC90L4g0LvQuCDQvtCx0L3QvtCy0LvRj9GC0YzRgdGPLlxyXG4gICAgICAgICAgLy8g0JzRiyDQndCVINC+0LHQvdC+0LLQu9GP0LXQvNGB0Y8sINC10YHQu9C4INC00LDQvdC90YvQtSDQsiBTdG9yZSDQuNC00LXQvdGC0LjRh9C90Ysg0YLQtdC8LCDRh9GC0L4g0LzRiyDRg9C20LUg0LTQtdGA0LbQuNC8INCyINC/0LDQvNGP0YLQuC5cclxuICAgICAgICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBBcnJheS5pc0FycmF5KHJlc3VsdCkgXHJcbiAgICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeShbcmVzdWx0WzBdPy52YWx1ZSwgcmVzdWx0WzFdPy52YWx1ZV0pXHJcbiAgICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5zZXR0aW5ncy5vcHRpb25zLnJhbmdlXHJcbiAgICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeShbdGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSwgdGhpcy5tb2RlbEVuZD8udmFsdWVdKVxyXG4gICAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbD8udmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm47IC8vINCU0LDQvdC90YvQtSDRgtC1INC20LUg0YHQsNC80YvQtSwg0LLRi9GF0L7QtNC40LwsINGH0YLQvtCx0Ysg0L3QtSDQt9Cw0L/Rg9GB0LrQsNGC0Ywg0YLQsNC50LzQtdGAINC30LDQvdC+0LLQvlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8g0JXRgdC70Lgg0LTQsNC90L3Ri9C1INGA0LXQsNC70YzQvdC+INC90L7QstGL0LUgKNC/0YDQuNGI0LvQuCDQuNC30LLQvdC1KSwg0L7QsdC90L7QstC70Y/QtdC8INC70L7QutCw0LvRjNC90YvQtSDQvNC+0LTQtdC70LhcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbFN0YXJ0ID0gc3RydWN0dXJlZENsb25lKHJlc3VsdFswXSkgfHwgZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxFbmQgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0WzFdKSB8fCBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0IHx8IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLl9jdXN0b21Jbml0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBfY3VzdG9tSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMucmFuZ2UpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsU3RhcnQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsU3RhcnQgPSBkZWZhdWx0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLm1vZGVsRW5kKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbEVuZCA9IGRlZmF1bHRWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICghdGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsID0gZGVmYXVsdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbFN0YXJ0Py52YWx1ZSAmJiB0aGlzLm1vZGVsRW5kPy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gW3RoaXMubW9kZWxTdGFydC52YWx1ZSwgdGhpcy5tb2RlbEVuZC52YWx1ZV07XHJcbiAgICAgICAgdGhpcy5tb2RlbENvdW50ZXIgPSB0aGlzLl9nZXREYXlzRGlmZmVyZW5jZSh0aGlzLm1vZGVsU3RhcnQudmFsdWUsIHRoaXMubW9kZWxFbmQudmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsU3RhcnQ/LnZhbHVlICYmICF0aGlzLm1vZGVsRW5kPy52YWx1ZSkge1xyXG4gICAgICAgIC8vINCe0YfQuNGJ0LDQtdC8INGC0L7Qu9GM0LrQviDQtdGB0LvQuCDQsiBTdG9yZSDRgNC10LDQu9GM0L3QviDQv9GD0YHRgtC+XHJcbiAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsQ291bnRlciA9IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdGhpcy5tb2RlbC52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pc0luaXQgPSB0cnVlO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7IFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RGF5c0RpZmZlcmVuY2Uoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShlbmREYXRlKTtcclxuXHJcbiAgICBpZiAoaXNOYU4oc3RhcnQuZ2V0VGltZSgpKSB8fCBpc05hTihlbmQuZ2V0VGltZSgpKSkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlSW5NcyA9IE1hdGguYWJzKGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpO1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGFuZ2VEYXlzKHN0YXJ0RGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmIChzdGFydERhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkpIHtcclxuICAgICAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGF5cykgfHwgZGF5cyA8IDApIHtcclxuICAgICAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LmdldFRpbWUoKSArIGRheXMgKiB0aGlzLl9taWxsaXNlY29uZHNJbkRheSk7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLnNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSAmJiBuZXdEYXRlID4gbmV3IERhdGUodGhpcy5zZXR0aW5ncy5vcHRpb25zLm1heERhdGUpKSB7XHJcbiAgICAgICAgY29uc3QgbWF4RGF5cyA9IE1hdGguZmxvb3IoKG5ldyBEYXRlKHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5tYXhEYXRlKS5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpIC8gdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICAgIG5ld0RhdGUgPSBuZXcgRGF0ZShzdGFydC5nZXRUaW1lKCkgKyAobWF4RGF5cyArIDEpICogdGhpcy5fbWlsbGlzZWNvbmRzSW5EYXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0ZS50b0lTT1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoc2V0dGluZ3MpIHtcclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGF0ZS1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBbY2xhc3MuY29sLThdPVwic2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzZXR0aW5ncy5vcHRpb25zLmxhYmVsKSB7XHJcbiAgICAgICAgICA8bXJ4LWxhYmVsXHJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwic2V0dGluZ3Mub3B0aW9ucy50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9tcngtbGFiZWw+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8bXJ4LWlucHV0LWRhdGUtdGltZVxyXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwic2V0dGluZ3Mub3B0aW9ucy5mb3JtYXRcIlxyXG4gICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZU1vZGVsXCJcclxuICAgICAgICAgIFtmaWVsZHNdPVwiYXV0b3NhdmVGaWVsZHNcIlxyXG4gICAgICAgICAgW3JhbmdlXT1cInNldHRpbmdzLm9wdGlvbnMucmFuZ2VcIlxyXG4gICAgICAgICAgW2RhdGVQbGFjZWhvbGRlcl09XCIoc2V0dGluZ3Mub3B0aW9ucy5yYW5nZSA/IHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgKyAnIC0gJyArIHNldHRpbmdzLm9wdGlvbnMucGxhY2Vob2xkZXIgOiBzZXR0aW5ncy5vcHRpb25zLnBsYWNlaG9sZGVyKSB8fCAnJ1wiXHJcbiAgICAgICAgICBbaXNNYW51YWxJbnB1dF09XCIhc2V0dGluZ3Mub3B0aW9ucy5yYW5nZVwiXHJcbiAgICAgICAgICBbdGltZXBpY2tlcl09XCJnZXRWaWV3VHlwZVRpbWVwaWNrZXJcIlxyXG4gICAgICAgICAgW2ludmFsaWRdPVwiZ2V0SW52YWxpZFwiXHJcbiAgICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZ2V0SW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW21pbkRhdGVdPVwic2V0dGluZ3Mub3B0aW9ucy5taW5EYXRlXCJcclxuICAgICAgICAgIFttYXhEYXRlXT1cInNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1kYXRlLXRpbWU+XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWluRGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQuNC90LjQvNCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1IOKAlCB7eyBzZXR0aW5ncy5vcHRpb25zLm1pbkRhdGUgfCBkYXRlVGltZUZvcm1hdDogJ21vcycgOiBkYXRlRm9ybWF0fX1cIlxyXG4gICAgICAgICAgPjwvbXJ4LWhpbnQtZXJyb3ItbWVzc2FnZT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSkge1xyXG4gICAgICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2UgIFxyXG4gICAgICAgICAgICBtZXNzYWdlPVwi0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUg4oCUIHt7IHNldHRpbmdzLm9wdGlvbnMubWF4RGF0ZSB8IGRhdGVUaW1lRm9ybWF0OiAnbW9zJyA6IGRhdGVGb3JtYXR9fVwiXHJcbiAgICAgICAgICA+PC9tcngtaGludC1lcnJvci1tZXNzYWdlPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMuY291bnRlciAmJiBzZXR0aW5ncy5vcHRpb25zLnJhbmdlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtNFwiPlxyXG4gICAgICAgICAgPG1yeC1sYWJlbD5cclxuICAgICAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyTGFiZWwgfX1cclxuICAgICAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgICAgICAgPG1yeC1pbnB1dC1udW1iZXJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWxDb3VudGVyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicwJ1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2V0dGluZ3Mub3B0aW9ucy5jb3VudGVyRWRpdGFibGVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDb3VudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvbXJ4LWlucHV0LW51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
|
|
@@ -21,14 +21,9 @@ export class InputTableModalComponent extends ModalServiceComponent {
|
|
|
21
21
|
this.settings = data.settings;
|
|
22
22
|
this.rowModel = data.rowModel;
|
|
23
23
|
this.isCheckRequired = data.isCheckRequired;
|
|
24
|
-
console.log('[Modal -> Constructor] Данные, пришедшие в модалку:', {
|
|
25
|
-
title: data.title,
|
|
26
|
-
rowModel: structuredClone(data.rowModel)
|
|
27
|
-
});
|
|
28
24
|
this.result = { result: false, rowModel: this.rowModel };
|
|
29
25
|
}
|
|
30
26
|
componentValueChanged(valueModel) {
|
|
31
|
-
console.log('[Modal -> componentValueChanged] Изменение компонента. Пришло значение:', structuredClone(valueModel));
|
|
32
27
|
if (Array.isArray(valueModel) && valueModel.length > 0) {
|
|
33
28
|
// Проверяем, это элементы диапазона дат (одинаковый sysName) или это разные компоненты
|
|
34
29
|
const firstSysName = valueModel[0].sysName;
|
|
@@ -55,9 +50,7 @@ export class InputTableModalComponent extends ModalServiceComponent {
|
|
|
55
50
|
this.emptyRow = this.rowModel.data.every(x => this.isEmpty(x.value, x.valueType));
|
|
56
51
|
}
|
|
57
52
|
ok() {
|
|
58
|
-
console.log('[Modal -> OK] Попытка сохранения. Текущая модель перед закрытием:', structuredClone(this.rowModel));
|
|
59
53
|
if (!this._isValid()) {
|
|
60
|
-
console.warn('[Modal -> OK] Форма не валидна!');
|
|
61
54
|
// включаем подсветку полей
|
|
62
55
|
this.store.dispatch(objectFormActions.updateCheckRequired({ isCheckRequired: true }));
|
|
63
56
|
return;
|
|
@@ -76,15 +69,10 @@ export class InputTableModalComponent extends ModalServiceComponent {
|
|
|
76
69
|
_transformValues(value) {
|
|
77
70
|
const cloneRowModel = structuredClone(this.rowModel);
|
|
78
71
|
const findValue = cloneRowModel.data.find((c) => c.sysName === value.sysName);
|
|
79
|
-
console.log(`[Modal -> _transformValues] Пытаемся обновить поле "${value.sysName}". Новое записываемое значение:`, value.value);
|
|
80
72
|
if (findValue) {
|
|
81
73
|
findValue.value = value.value; // Теперь сюда запишется массив ['2026-05-05', '2026-05-07']
|
|
82
74
|
}
|
|
83
|
-
else {
|
|
84
|
-
console.warn(`[Modal -> _transformValues] Поле с sysName "${value.sysName}" не найдено в rowModel.data`);
|
|
85
|
-
}
|
|
86
75
|
this.rowModel = cloneRowModel;
|
|
87
|
-
console.log('[Modal -> _transformValues] Состояние rowModel.data после обновления:', structuredClone(this.rowModel.data));
|
|
88
76
|
}
|
|
89
77
|
_recalculateFormulaFields() {
|
|
90
78
|
const formulaComponents = this._getFormulaNumberComponents(this.settings.components);
|
|
@@ -179,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
179
167
|
type: Inject,
|
|
180
168
|
args: [MODAL_DATA]
|
|
181
169
|
}] }] });
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvY29tcG9uZW50cy9pbnB1dC10YWJsZS1tb2RhbC9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC90YWJsZS9jb21wb25lbnRzL2lucHV0LXRhYmxlLW1vZGFsL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBWSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBaUM5RixNQUFNLE9BQU8sd0JBQXlCLFNBQVEscUJBQW1FO0lBUy9HLFlB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eSwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSwgTU9EQUxfREFUQSwgTW9kYWxNb2R1bGUsIE1vZGFsUmVmLCBNb2RhbFNlcnZpY2VDb21wb25lbnQgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcbmltcG9ydCB7IElucHV0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFZhbHVlTW9kZWwsIFRhYmxlUm93TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGb3JtRGlzcGVuc2VyTW9kYWwgfSBmcm9tICcuL2Zvcm0tZGlzcGVuc2VyLW1vZGFsL2Zvcm0tZGlzcGVuc2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IHByb3ZpZGVOZ3hNYXNrIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5pbXBvcnQgeyBGb3JtdWxhQ2FsY3VsYXRlU2VydmljZSwgUmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBJbnB1dFN0YXRlLCBWYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9lbnVtcyc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMvZWxlbWV0cy9pbnB1dHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRhYmxlTW9kYWxQYXJhbXMge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgb2tUZXh0OiBzdHJpbmc7XHJcbiAgc2V0dGluZ3M6IElucHV0VGFibGVNb2RlbDtcclxuICByb3dNb2RlbDogVGFibGVSb3dNb2RlbDtcclxuICBpc0NoZWNrUmVxdWlyZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRUYWJsZU1vZGFsUmVzdWx0IHtcclxuICByZXN1bHQ6IGJvb2xlYW47XHJcbiAgcm93TW9kZWw6IFRhYmxlUm93TW9kZWw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LXRhYmxlLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNb2RhbE1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEZvcm1EaXNwZW5zZXJNb2RhbCxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgcHJvdmlkZU5neE1hc2soKSxcclxuICAgIEZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLFxyXG4gICAgUmVmZXJlbmNlU2VydmljZSAvLyDQtNC70Y8g0LrQvtC80L/QvtC90LXQvdGC0LAg0YHQv9C40YHQvtC6XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50IGV4dGVuZHMgTW9kYWxTZXJ2aWNlQ29tcG9uZW50PElucHV0VGFibGVNb2RhbFBhcmFtcywgSW5wdXRUYWJsZU1vZGFsUmVzdWx0PiB7XHJcbiAgcHVibGljIHRpdGxlITogc3RyaW5nO1xyXG4gIHB1YmxpYyBva1RleHQhOiBzdHJpbmc7XHJcbiAgcHVibGljIHNldHRpbmdzITogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHB1YmxpYyByb3dNb2RlbCE6IFRhYmxlUm93TW9kZWw7XHJcbiAgLy8g0JfQsNC/0L7QvNC40L3QsNC10Lwg0YHRgtCw0YLRg9GBINC/0YDQvtCy0LXRgNC60Lgg0YTQvtGA0LzRiyDQv9GA0Lgg0L7RgtC60YDRi9GC0LjQuCDQvNC+0LTQsNC70LrQuFxyXG4gIHB1YmxpYyBpc0NoZWNrUmVxdWlyZWQhOiBib29sZWFuO1xyXG4gIHB1YmxpYyBlbXB0eVJvdzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1vZGFsUmVmPElucHV0VGFibGVNb2RhbFJlc3VsdD4sXHJcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgZm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2U6IEZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNT0RBTF9EQVRBKSBkYXRhOiBJbnB1dFRhYmxlTW9kYWxQYXJhbXMsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMudGl0bGUgPSBkYXRhLnRpdGxlO1xyXG4gICAgdGhpcy5va1RleHQgPSBkYXRhLm9rVGV4dFxyXG4gICAgdGhpcy5zZXR0aW5ncyA9IGRhdGEuc2V0dGluZ3M7XHJcbiAgICB0aGlzLnJvd01vZGVsID0gZGF0YS5yb3dNb2RlbDtcclxuICAgIHRoaXMuaXNDaGVja1JlcXVpcmVkID0gZGF0YS5pc0NoZWNrUmVxdWlyZWQ7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ1tNb2RhbCAtPiBDb25zdHJ1Y3Rvcl0g0JTQsNC90L3Ri9C1LCDQv9GA0LjRiNC10LTRiNC40LUg0LIg0LzQvtC00LDQu9C60YM6Jywge1xyXG4gICAgICB0aXRsZTogZGF0YS50aXRsZSxcclxuICAgICAgcm93TW9kZWw6IHN0cnVjdHVyZWRDbG9uZShkYXRhLnJvd01vZGVsKVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZXN1bHQgPSB7cmVzdWx0OiBmYWxzZSwgcm93TW9kZWw6IHRoaXMucm93TW9kZWx9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFZhbHVlQ2hhbmdlZCh2YWx1ZU1vZGVsOiBDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdKSB7XHJcbiAgICBjb25zb2xlLmxvZygnW01vZGFsIC0+IGNvbXBvbmVudFZhbHVlQ2hhbmdlZF0g0JjQt9C80LXQvdC10L3QuNC1INC60L7QvNC/0L7QvdC10L3RgtCwLiDQn9GA0LjRiNC70L4g0LfQvdCw0YfQtdC90LjQtTonLCBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWVNb2RlbCkpO1xyXG4gICAgXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU1vZGVsKSAmJiB2YWx1ZU1vZGVsLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8LCDRjdGC0L4g0Y3Qu9C10LzQtdC90YLRiyDQtNC40LDQv9Cw0LfQvtC90LAg0LTQsNGCICjQvtC00LjQvdCw0LrQvtCy0YvQuSBzeXNOYW1lKSDQuNC70Lgg0Y3RgtC+INGA0LDQt9C90YvQtSDQutC+0LzQv9C+0L3QtdC90YLRi1xyXG4gICAgICBjb25zdCBmaXJzdFN5c05hbWUgPSB2YWx1ZU1vZGVsWzBdLnN5c05hbWU7XHJcbiAgICAgIGNvbnN0IGlzUmFuZ2VEYXRlID0gdmFsdWVNb2RlbC5ldmVyeShtID0+IG0uc3lzTmFtZSA9PT0gZmlyc3RTeXNOYW1lICYmIG0udHlwZSA9PT0gQ29tcG9uZW50VHlwZS5JbnB1dERhdGUpO1xyXG5cclxuICAgICAgaWYgKGlzUmFuZ2VEYXRlKSB7XHJcbiAgICAgICAgLy8g0KHQvtCx0LjRgNCw0LXQvCDRh9C40YHRgtGL0Lkg0LzQsNGB0YHQuNCyINC30L3QsNGH0LXQvdC40Lkg0LTQsNGCIFtzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsXVxyXG4gICAgICAgIGNvbnN0IHJhbmdlVmFsdWVzID0gdmFsdWVNb2RlbC5tYXAobSA9PiBtLnZhbHVlKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDQodC+0LfQtNCw0LXQvCDRgdC40L3RgtC10YLQuNGH0LXRgdC60YPRjiDQvNC+0LTQtdC70YwsINCz0LTQtSB2YWx1ZSDigJQg0Y3RgtC+INC80LDRgdGB0LjQsiDQtNCw0YJcclxuICAgICAgICBjb25zdCByYW5nZVBheWxvYWQ6IENvbXBvbmVudFZhbHVlTW9kZWwgPSB7XHJcbiAgICAgICAgICAuLi52YWx1ZU1vZGVsWzBdLFxyXG4gICAgICAgICAgdmFsdWU6IHJhbmdlVmFsdWVzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm1WYWx1ZXMocmFuZ2VQYXlsb2FkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDQldGB0LvQuCDRjdGC0L4g0LzQsNGB0YHQuNCyINC+0YIg0YDQsNC30L3Ri9GFINC60L7QvNC/0L7QvdC10L3RgtC+0LIgKNGB0YLQsNC90LTQsNGA0YLQvdCw0Y8g0LvQvtCz0LjQutCwIGRpc3BlbnNlcilcclxuICAgICAgICB2YWx1ZU1vZGVsLmZvckVhY2gobW9kZWwgPT4gdGhpcy5fdHJhbnNmb3JtVmFsdWVzKG1vZGVsKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodmFsdWVNb2RlbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZU1vZGVsKSkge1xyXG4gICAgICB0aGlzLl90cmFuc2Zvcm1WYWx1ZXModmFsdWVNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVjYWxjdWxhdGVGb3JtdWxhRmllbGRzKCk7XHJcbiAgICB0aGlzLmVtcHR5Um93ID0gdGhpcy5yb3dNb2RlbC5kYXRhLmV2ZXJ5KHggPT4gdGhpcy5pc0VtcHR5KHgudmFsdWUsIHgudmFsdWVUeXBlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb2soKSB7XHJcbiAgICBjb25zb2xlLmxvZygnW01vZGFsIC0+IE9LXSDQn9C+0L/Ri9GC0LrQsCDRgdC+0YXRgNCw0L3QtdC90LjRjy4g0KLQtdC60YPRidCw0Y8g0LzQvtC00LXQu9GMINC/0LXRgNC10LQg0LfQsNC60YDRi9GC0LjQtdC8OicsIHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsKSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9pc1ZhbGlkKCkpXHJcbiAgICB7XHJcbiAgICAgIGNvbnNvbGUud2FybignW01vZGFsIC0+IE9LXSDQpNC+0YDQvNCwINC90LUg0LLQsNC70LjQtNC90LAhJyk7XHJcbiAgICAgIC8vINCy0LrQu9GO0YfQsNC10Lwg0L/QvtC00YHQstC10YLQutGDINC/0L7Qu9C10LlcclxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy51cGRhdGVDaGVja1JlcXVpcmVkKHsgaXNDaGVja1JlcXVpcmVkOiB0cnVlIH0pKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vINCy0L7Qt9Cy0YDQsNGJ0LDQtdC8INC/0YDQuNC30L3QsNC6INC60LDQuiDQsdGL0Lsg0LTQviDQvtGC0LrRgNGL0YLQuNGPINC80L7QtNCw0LvQutC4XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnVwZGF0ZUNoZWNrUmVxdWlyZWQoeyBpc0NoZWNrUmVxdWlyZWQ6IHRoaXMuaXNDaGVja1JlcXVpcmVkIH0pKTtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IHRydWUsIHJvd01vZGVsOiB0aGlzLnJvd01vZGVsfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJlc3VsdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgLy8g0LLQvtC30LLRgNCw0YnQsNC10Lwg0L/RgNC40LfQvdCw0Log0LrQsNC6INCx0YvQuyDQtNC+INC+0YLQutGA0YvRgtC40Y8g0LzQvtC00LDQu9C60LhcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlQ2hlY2tSZXF1aXJlZCh7IGlzQ2hlY2tSZXF1aXJlZDogdGhpcy5pc0NoZWNrUmVxdWlyZWQgfSkpO1xyXG5cclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogZmFsc2UsIHJvd01vZGVsOiB0aGlzLnJvd01vZGVsfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMucmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybVZhbHVlcyh2YWx1ZTogQ29tcG9uZW50VmFsdWVNb2RlbCkge1xyXG4gICAgY29uc3QgY2xvbmVSb3dNb2RlbCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsKTtcclxuICAgIGNvbnN0IGZpbmRWYWx1ZSA9IGNsb25lUm93TW9kZWwuZGF0YS5maW5kKChjOiBDb21wb25lbnRWYWx1ZU1vZGVsKSA9PiBjLnN5c05hbWUgPT09IHZhbHVlLnN5c05hbWUpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGBbTW9kYWwgLT4gX3RyYW5zZm9ybVZhbHVlc10g0J/Ri9GC0LDQtdC80YHRjyDQvtCx0L3QvtCy0LjRgtGMINC/0L7Qu9C1IFwiJHt2YWx1ZS5zeXNOYW1lfVwiLiDQndC+0LLQvtC1INC30LDQv9C40YHRi9Cy0LDQtdC80L7QtSDQt9C90LDRh9C10L3QuNC1OmAsIHZhbHVlLnZhbHVlKTtcclxuXHJcbiAgICBpZiAoZmluZFZhbHVlKSB7XHJcbiAgICAgIGZpbmRWYWx1ZS52YWx1ZSA9IHZhbHVlLnZhbHVlOyAvLyDQotC10L/QtdGA0Ywg0YHRjtC00LAg0LfQsNC/0LjRiNC10YLRgdGPINC80LDRgdGB0LjQsiBbJzIwMjYtMDUtMDUnLCAnMjAyNi0wNS0wNyddXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFtNb2RhbCAtPiBfdHJhbnNmb3JtVmFsdWVzXSDQn9C+0LvQtSDRgSBzeXNOYW1lIFwiJHt2YWx1ZS5zeXNOYW1lfVwiINC90LUg0L3QsNC50LTQtdC90L4g0LIgcm93TW9kZWwuZGF0YWApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm93TW9kZWwgPSBjbG9uZVJvd01vZGVsO1xyXG4gICAgY29uc29sZS5sb2coJ1tNb2RhbCAtPiBfdHJhbnNmb3JtVmFsdWVzXSDQodC+0YHRgtC+0Y/QvdC40LUgcm93TW9kZWwuZGF0YSDQv9C+0YHQu9C1INC+0LHQvdC+0LLQu9C10L3QuNGPOicsIHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsLmRhdGEpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlY2FsY3VsYXRlRm9ybXVsYUZpZWxkcygpIHtcclxuICAgIGNvbnN0IGZvcm11bGFDb21wb25lbnRzID0gdGhpcy5fZ2V0Rm9ybXVsYU51bWJlckNvbXBvbmVudHModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuXHJcbiAgICBpZiAoIWZvcm11bGFDb21wb25lbnRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xvbmVSb3dNb2RlbCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnJvd01vZGVsKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm11bGFDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBoYXNVcGRhdGVzID0gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBmb3JtdWxhQ29tcG9uZW50cykge1xyXG4gICAgICAgIGNvbnN0IGZvcm11bGEgPSBjb21wb25lbnQub3B0aW9ucz8uZm9ybXVsYT8udHJpbSgpO1xyXG4gICAgICAgIGlmICghZm9ybXVsYSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLmNhbGN1bGF0ZU1hdGhFeHByZXNzaW9uKGZvcm11bGEsIGNsb25lUm93TW9kZWwuZGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gY2xvbmVSb3dNb2RlbC5kYXRhLmZpbmQoeCA9PiB4LnN5c05hbWUgPT09IGNvbXBvbmVudC5zeXNOYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldFZhbHVlIHx8IHRhcmdldFZhbHVlLnZhbHVlID09PSByZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0VmFsdWUudmFsdWUgPSByZXN1bHQ7XHJcbiAgICAgICAgaGFzVXBkYXRlcyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghaGFzVXBkYXRlcykge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3dNb2RlbCA9IGNsb25lUm93TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRGb3JtdWxhTnVtYmVyQ29tcG9uZW50cyhjb21wb25lbnRzOiBDb21wb25lbnRNb2RlbEJhc2VbXSk6IElucHV0TnVtYmVyTW9kZWxbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IElucHV0TnVtYmVyTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbXBvbmVudC50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0TnVtYmVyICYmXHJcbiAgICAgICAgKGNvbXBvbmVudCBhcyBJbnB1dE51bWJlck1vZGVsKS5vcHRpb25zPy5pbnB1dFN0YXRlID09PSBJbnB1dFN0YXRlLkZvcm11bGFcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuX2dldEZvcm11bGFOdW1iZXJDb21wb25lbnRzKGNvbXBvbmVudC5jb21wb25lbnRzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHZhciBoYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgdmFyIHJlcXVpcmVkQ29tcG9uZW50cyA9IHRoaXMuX2dldFJlcXVpcmVkQ29tcG9uZW50cyh0aGlzLnNldHRpbmdzLmNvbXBvbmVudHMpO1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgcmVxdWlyZWRDb21wb25lbnRzKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yb3dNb2RlbC5kYXRhXHJcbiAgICAgICAgLmZpbmQoeCA9PiB4LnN5c05hbWUgPT0gY29tcG9uZW50LnN5c05hbWVcclxuICAgICAgICAgICAgICB8fCB4LnN5c05hbWUgPT0gYCR7Y29tcG9uZW50LnN5c05hbWV9X3N0YXJ0YFxyXG4gICAgICAgICAgICAgIHx8IHguc3lzTmFtZSA9PSBgJHtjb21wb25lbnQuc3lzTmFtZX1fZW5kYCk7XHJcbiAgICAgIGlmICghdmFsdWU/LnZhbHVlKSB7XHJcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWhhc0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UmVxdWlyZWRDb21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudE1vZGVsQmFzZVtdKTogQ29tcG9uZW50TW9kZWxCYXNlW117XHJcbiAgICB2YXIgY29tcG9uZW50cyA9IGNvbXBvbmVudHMuZmlsdGVyKHggPT4geC50eXBlICE9IENvbXBvbmVudFR5cGUuR3JvdXAgJiYgISF4Lm9wdGlvbnMucmVxdWlyZWQpO1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gQ29tcG9uZW50VHlwZS5Hcm91cCAmJiB4LmNvbXBvbmVudHMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgdGhpcy5fZ2V0UmVxdWlyZWRDb21wb25lbnRzKGNvbXBvbmVudC5jb21wb25lbnRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wb25lbnRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VtcHR5KHZhbHVlOiBhbnksIHR5cGU6IFZhbHVlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHR5cGUgPT09IFZhbHVlVHlwZS5VbmRlZmluZWQpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPG1yeC1tb2RhbFxyXG4gIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgc2l6ZT1cImxhcmdlXCJcclxuICAoY2xvc2UpPVwiY2xvc2UoKVwiXHJcbiAgKG9rKT1cIm9rKClcIlxyXG4+XHJcbiAgPGFwcC1mb3JtLWRpc3BlbnNlci1tb2RhbFxyXG4gICAgW3NlY3Rpb25TZXR0aW5nc109XCJzZXR0aW5nc1wiXHJcbiAgICBbdmFsdWVzXT1cInJvd01vZGVsLmRhdGFcIlxyXG4gICAgW3ZhbHVlTW9kZV09XCInbWFudWFsJ1wiXHJcbiAgICAoY2hhbmdlZCk9XCJjb21wb25lbnRWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgPjwvYXBwLWZvcm0tZGlzcGVuc2VyLW1vZGFsPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2Zvb3RlckNvbnRlbnQ+XHJcbiAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICBbY3VzdG9tQ2xhc3Nlc109XCInbXItMydcIlxyXG4gICAgICBbdHlwZV09XCInc2Vjb25kYXJ5J1wiXHJcbiAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4gICAgPtCe0YLQvNC10L3QsFxyXG4gICAgPC9tcngtYnV0dG9uPlxyXG4gICAgPG1yeC1idXR0b25cclxuICAgICAgW3R5cGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZW1wdHlSb3dcIlxyXG4gICAgICAoY2xpY2spPVwib2soKVwiXHJcbiAgICA+e3sgb2tUZXh0IH19XHJcbiAgICA8L21yeC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9tcngtbW9kYWw+XHJcbiJdfQ==
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvY29tcG9uZW50cy9pbnB1dC10YWJsZS1tb2RhbC9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vY29tcG9uZW50cy9lbGVtZW50cy9pbnB1dC90YWJsZS9jb21wb25lbnRzL2lucHV0LXRhYmxlLW1vZGFsL2lucHV0LXRhYmxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBWSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBaUM5RixNQUFNLE9BQU8sd0JBQXlCLFNBQVEscUJBQW1FO0lBUy9HLFlB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d0I7U0FDMUMsaURDMUNILHd4QkE4QkEseURESUksV0FBVyx3V0FDWCxZQUFZLDZVQUNaLGtCQUFrQjs7NEZBUVQsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ25CLGFBQ1U7d0JBQ1QsY0FBYyxFQUFFO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQixDQUFDLHdCQUF3QjtxQkFDMUM7OzBCQWVFLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlLCBNT0RBTF9EQVRBLCBNb2RhbE1vZHVsZSwgTW9kYWxSZWYsIE1vZGFsU2VydmljZUNvbXBvbmVudCB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpJztcclxuaW1wb3J0IHsgSW5wdXRUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2VsZW1ldHMvaW5wdXRzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VmFsdWVNb2RlbCwgVGFibGVSb3dNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm1EaXNwZW5zZXJNb2RhbCB9IGZyb20gJy4vZm9ybS1kaXNwZW5zZXItbW9kYWwvZm9ybS1kaXNwZW5zZXItbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgcHJvdmlkZU5neE1hc2sgfSBmcm9tICduZ3gtbWFzayc7XHJcbmltcG9ydCB7IEZvcm11bGFDYWxjdWxhdGVTZXJ2aWNlLCBSZWZlcmVuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2JqZWN0Rm9ybUFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdG9yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE1vZGVsQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIElucHV0U3RhdGUsIFZhbHVlVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL2VudW1zJztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElucHV0VGFibGVNb2RhbFBhcmFtcyB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBva1RleHQ6IHN0cmluZztcclxuICBzZXR0aW5nczogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHJvd01vZGVsOiBUYWJsZVJvd01vZGVsO1xyXG4gIGlzQ2hlY2tSZXF1aXJlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRhYmxlTW9kYWxSZXN1bHQge1xyXG4gIHJlc3VsdDogYm9vbGVhbjtcclxuICByb3dNb2RlbDogVGFibGVSb3dNb2RlbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUtbW9kYWwuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1vZGFsTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgRm9ybURpc3BlbnNlck1vZGFsLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgRm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UsXHJcbiAgICBSZWZlcmVuY2VTZXJ2aWNlIC8vINC00LvRjyDQutC+0LzQv9C+0L3QtdC90YLQsCDRgdC/0LjRgdC+0LpcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRhYmxlTW9kYWxDb21wb25lbnQgZXh0ZW5kcyBNb2RhbFNlcnZpY2VDb21wb25lbnQ8SW5wdXRUYWJsZU1vZGFsUGFyYW1zLCBJbnB1dFRhYmxlTW9kYWxSZXN1bHQ+IHtcclxuICBwdWJsaWMgdGl0bGUhOiBzdHJpbmc7XHJcbiAgcHVibGljIG9rVGV4dCE6IHN0cmluZztcclxuICBwdWJsaWMgc2V0dGluZ3MhOiBJbnB1dFRhYmxlTW9kZWw7XHJcbiAgcHVibGljIHJvd01vZGVsITogVGFibGVSb3dNb2RlbDtcclxuICAvLyDQl9Cw0L/QvtC80LjQvdCw0LXQvCDRgdGC0LDRgtGD0YEg0L/RgNC+0LLQtdGA0LrQuCDRhNC+0YDQvNGLINC/0YDQuCDQvtGC0LrRgNGL0YLQuNC4INC80L7QtNCw0LvQutC4XHJcbiAgcHVibGljIGlzQ2hlY2tSZXF1aXJlZCE6IGJvb2xlYW47XHJcbiAgcHVibGljIGVtcHR5Um93OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTW9kYWxSZWY8SW5wdXRUYWJsZU1vZGFsUmVzdWx0PixcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSBmb3JtdWxhQ2FsY3VsYXRlU2VydmljZTogRm9ybXVsYUNhbGN1bGF0ZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1PREFMX0RBVEEpIGRhdGE6IElucHV0VGFibGVNb2RhbFBhcmFtcyxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLm9rVGV4dCA9IGRhdGEub2tUZXh0XHJcbiAgICB0aGlzLnNldHRpbmdzID0gZGF0YS5zZXR0aW5ncztcclxuICAgIHRoaXMucm93TW9kZWwgPSBkYXRhLnJvd01vZGVsO1xyXG4gICAgdGhpcy5pc0NoZWNrUmVxdWlyZWQgPSBkYXRhLmlzQ2hlY2tSZXF1aXJlZDtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IGZhbHNlLCByb3dNb2RlbDogdGhpcy5yb3dNb2RlbH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29tcG9uZW50VmFsdWVDaGFuZ2VkKHZhbHVlTW9kZWw6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBDb21wb25lbnRWYWx1ZU1vZGVsW10pIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlTW9kZWwpICYmIHZhbHVlTW9kZWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyDQn9GA0L7QstC10YDRj9C10LwsINGN0YLQviDRjdC70LXQvNC10L3RgtGLINC00LjQsNC/0LDQt9C+0L3QsCDQtNCw0YIgKNC+0LTQuNC90LDQutC+0LLRi9C5IHN5c05hbWUpINC40LvQuCDRjdGC0L4g0YDQsNC30L3Ri9C1INC60L7QvNC/0L7QvdC10L3RgtGLXHJcbiAgICAgIGNvbnN0IGZpcnN0U3lzTmFtZSA9IHZhbHVlTW9kZWxbMF0uc3lzTmFtZTtcclxuICAgICAgY29uc3QgaXNSYW5nZURhdGUgPSB2YWx1ZU1vZGVsLmV2ZXJ5KG0gPT4gbS5zeXNOYW1lID09PSBmaXJzdFN5c05hbWUgJiYgbS50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0RGF0ZSk7XHJcblxyXG4gICAgICBpZiAoaXNSYW5nZURhdGUpIHtcclxuICAgICAgICAvLyDQodC+0LHQuNGA0LDQtdC8INGH0LjRgdGC0YvQuSDQvNCw0YHRgdC40LIg0LfQvdCw0YfQtdC90LjQuSDQtNCw0YIgW3N0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGxdXHJcbiAgICAgICAgY29uc3QgcmFuZ2VWYWx1ZXMgPSB2YWx1ZU1vZGVsLm1hcChtID0+IG0udmFsdWUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vINCh0L7Qt9C00LDQtdC8INGB0LjQvdGC0LXRgtC40YfQtdGB0LrRg9GOINC80L7QtNC10LvRjCwg0LPQtNC1IHZhbHVlIOKAlCDRjdGC0L4g0LzQsNGB0YHQuNCyINC00LDRglxyXG4gICAgICAgIGNvbnN0IHJhbmdlUGF5bG9hZDogQ29tcG9uZW50VmFsdWVNb2RlbCA9IHtcclxuICAgICAgICAgIC4uLnZhbHVlTW9kZWxbMF0sXHJcbiAgICAgICAgICB2YWx1ZTogcmFuZ2VWYWx1ZXNcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX3RyYW5zZm9ybVZhbHVlcyhyYW5nZVBheWxvYWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vINCV0YHQu9C4INGN0YLQviDQvNCw0YHRgdC40LIg0L7RgiDRgNCw0LfQvdGL0YUg0LrQvtC80L/QvtC90LXQvdGC0L7QsiAo0YHRgtCw0L3QtNCw0YDRgtC90LDRjyDQu9C+0LPQuNC60LAgZGlzcGVuc2VyKVxyXG4gICAgICAgIHZhbHVlTW9kZWwuZm9yRWFjaChtb2RlbCA9PiB0aGlzLl90cmFuc2Zvcm1WYWx1ZXMobW9kZWwpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh2YWx1ZU1vZGVsICYmICFBcnJheS5pc0FycmF5KHZhbHVlTW9kZWwpKSB7XHJcbiAgICAgIHRoaXMuX3RyYW5zZm9ybVZhbHVlcyh2YWx1ZU1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWNhbGN1bGF0ZUZvcm11bGFGaWVsZHMoKTtcclxuICAgIHRoaXMuZW1wdHlSb3cgPSB0aGlzLnJvd01vZGVsLmRhdGEuZXZlcnkoeCA9PiB0aGlzLmlzRW1wdHkoeC52YWx1ZSwgeC52YWx1ZVR5cGUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvaygpIHtcclxuICAgIGlmICghdGhpcy5faXNWYWxpZCgpKVxyXG4gICAge1xyXG4gICAgICAvLyDQstC60LvRjtGH0LDQtdC8INC/0L7QtNGB0LLQtdGC0LrRgyDQv9C+0LvQtdC5XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlQ2hlY2tSZXF1aXJlZCh7IGlzQ2hlY2tSZXF1aXJlZDogdHJ1ZSB9KSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDQstC+0LfQstGA0LDRidCw0LXQvCDQv9GA0LjQt9C90LDQuiDQutCw0Log0LHRi9C7INC00L4g0L7RgtC60YDRi9GC0LjRjyDQvNC+0LTQsNC70LrQuFxyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy51cGRhdGVDaGVja1JlcXVpcmVkKHsgaXNDaGVja1JlcXVpcmVkOiB0aGlzLmlzQ2hlY2tSZXF1aXJlZCB9KSk7XHJcblxyXG4gICAgdGhpcy5yZXN1bHQgPSB7cmVzdWx0OiB0cnVlLCByb3dNb2RlbDogdGhpcy5yb3dNb2RlbH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5yZXN1bHQpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpIHtcclxuICAgIC8vINCy0L7Qt9Cy0YDQsNGJ0LDQtdC8INC/0YDQuNC30L3QsNC6INC60LDQuiDQsdGL0Lsg0LTQviDQvtGC0LrRgNGL0YLQuNGPINC80L7QtNCw0LvQutC4XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnVwZGF0ZUNoZWNrUmVxdWlyZWQoeyBpc0NoZWNrUmVxdWlyZWQ6IHRoaXMuaXNDaGVja1JlcXVpcmVkIH0pKTtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IGZhbHNlLCByb3dNb2RlbDogdGhpcy5yb3dNb2RlbH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZXModmFsdWU6IENvbXBvbmVudFZhbHVlTW9kZWwpIHtcclxuICAgIGNvbnN0IGNsb25lUm93TW9kZWwgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5yb3dNb2RlbCk7XHJcbiAgICBjb25zdCBmaW5kVmFsdWUgPSBjbG9uZVJvd01vZGVsLmRhdGEuZmluZCgoYzogQ29tcG9uZW50VmFsdWVNb2RlbCkgPT4gYy5zeXNOYW1lID09PSB2YWx1ZS5zeXNOYW1lKTtcclxuXHJcbiAgICBpZiAoZmluZFZhbHVlKSB7XHJcbiAgICAgIGZpbmRWYWx1ZS52YWx1ZSA9IHZhbHVlLnZhbHVlOyAvLyDQotC10L/QtdGA0Ywg0YHRjtC00LAg0LfQsNC/0LjRiNC10YLRgdGPINC80LDRgdGB0LjQsiBbJzIwMjYtMDUtMDUnLCAnMjAyNi0wNS0wNyddXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3dNb2RlbCA9IGNsb25lUm93TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWNhbGN1bGF0ZUZvcm11bGFGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBmb3JtdWxhQ29tcG9uZW50cyA9IHRoaXMuX2dldEZvcm11bGFOdW1iZXJDb21wb25lbnRzKHRoaXMuc2V0dGluZ3MuY29tcG9uZW50cyk7XHJcblxyXG4gICAgaWYgKCFmb3JtdWxhQ29tcG9uZW50cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNsb25lUm93TW9kZWwgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5yb3dNb2RlbCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtdWxhQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaGFzVXBkYXRlcyA9IGZhbHNlO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgZm9ybXVsYUNvbXBvbmVudHMpIHtcclxuICAgICAgICBjb25zdCBmb3JtdWxhID0gY29tcG9uZW50Lm9wdGlvbnM/LmZvcm11bGE/LnRyaW0oKTtcclxuICAgICAgICBpZiAoIWZvcm11bGEpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5mb3JtdWxhQ2FsY3VsYXRlU2VydmljZS5jYWxjdWxhdGVNYXRoRXhwcmVzc2lvbihmb3JtdWxhLCBjbG9uZVJvd01vZGVsLmRhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IGNsb25lUm93TW9kZWwuZGF0YS5maW5kKHggPT4geC5zeXNOYW1lID09PSBjb21wb25lbnQuc3lzTmFtZSk7XHJcbiAgICAgICAgaWYgKCF0YXJnZXRWYWx1ZSB8fCB0YXJnZXRWYWx1ZS52YWx1ZSA9PT0gcmVzdWx0KSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhcmdldFZhbHVlLnZhbHVlID0gcmVzdWx0O1xyXG4gICAgICAgIGhhc1VwZGF0ZXMgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWhhc1VwZGF0ZXMpIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm93TW9kZWwgPSBjbG9uZVJvd01vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Rm9ybXVsYU51bWJlckNvbXBvbmVudHMoY29tcG9uZW50czogQ29tcG9uZW50TW9kZWxCYXNlW10pOiBJbnB1dE51bWJlck1vZGVsW10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBJbnB1dE51bWJlck1vZGVsW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb21wb25lbnQudHlwZSA9PT0gQ29tcG9uZW50VHlwZS5JbnB1dE51bWJlciAmJlxyXG4gICAgICAgIChjb21wb25lbnQgYXMgSW5wdXROdW1iZXJNb2RlbCkub3B0aW9ucz8uaW5wdXRTdGF0ZSA9PT0gSW5wdXRTdGF0ZS5Gb3JtdWxhXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNvbXBvbmVudCBhcyBJbnB1dE51bWJlck1vZGVsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLl9nZXRGb3JtdWxhTnVtYmVyQ29tcG9uZW50cyhjb21wb25lbnQuY29tcG9uZW50cykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICB2YXIgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgIHZhciByZXF1aXJlZENvbXBvbmVudHMgPSB0aGlzLl9nZXRSZXF1aXJlZENvbXBvbmVudHModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHJlcXVpcmVkQ29tcG9uZW50cykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucm93TW9kZWwuZGF0YVxyXG4gICAgICAgIC5maW5kKHggPT4geC5zeXNOYW1lID09IGNvbXBvbmVudC5zeXNOYW1lXHJcbiAgICAgICAgICAgICAgfHwgeC5zeXNOYW1lID09IGAke2NvbXBvbmVudC5zeXNOYW1lfV9zdGFydGBcclxuICAgICAgICAgICAgICB8fCB4LnN5c05hbWUgPT0gYCR7Y29tcG9uZW50LnN5c05hbWV9X2VuZGApO1xyXG4gICAgICBpZiAoIXZhbHVlPy52YWx1ZSkge1xyXG4gICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICFoYXNFcnJvcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnRzOiBDb21wb25lbnRNb2RlbEJhc2VbXSk6IENvbXBvbmVudE1vZGVsQmFzZVtde1xyXG4gICAgdmFyIGNvbXBvbmVudHMgPSBjb21wb25lbnRzLmZpbHRlcih4ID0+IHgudHlwZSAhPSBDb21wb25lbnRUeXBlLkdyb3VwICYmICEheC5vcHRpb25zLnJlcXVpcmVkKTtcclxuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMuZmlsdGVyKHggPT4geC50eXBlID09IENvbXBvbmVudFR5cGUuR3JvdXAgJiYgeC5jb21wb25lbnRzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgIHRoaXMuX2dldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnQuY29tcG9uZW50cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29tcG9uZW50cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogYW55LCB0eXBlOiBWYWx1ZVR5cGUpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlID09PSBWYWx1ZVR5cGUuVW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5sZW5ndGggPT09IDA7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxtcngtbW9kYWxcclxuICBbdGl0bGVdPVwidGl0bGVcIlxyXG4gIHNpemU9XCJsYXJnZVwiXHJcbiAgKGNsb3NlKT1cImNsb3NlKClcIlxyXG4gIChvayk9XCJvaygpXCJcclxuPlxyXG4gIDxhcHAtZm9ybS1kaXNwZW5zZXItbW9kYWxcclxuICAgIFtzZWN0aW9uU2V0dGluZ3NdPVwic2V0dGluZ3NcIlxyXG4gICAgW3ZhbHVlc109XCJyb3dNb2RlbC5kYXRhXCJcclxuICAgIFt2YWx1ZU1vZGVdPVwiJ21hbnVhbCdcIlxyXG4gICAgKGNoYW5nZWQpPVwiY29tcG9uZW50VmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gID48L2FwcC1mb3JtLWRpc3BlbnNlci1tb2RhbD5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNmb290ZXJDb250ZW50PlxyXG4gICAgPG1yeC1idXR0b25cclxuICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ21yLTMnXCJcclxuICAgICAgW3R5cGVdPVwiJ3NlY29uZGFyeSdcIlxyXG4gICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcclxuICAgID7QntGC0LzQtdC90LBcclxuICAgIDwvbXJ4LWJ1dHRvbj5cclxuICAgIDxtcngtYnV0dG9uXHJcbiAgICAgIFt0eXBlXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImVtcHR5Um93XCJcclxuICAgICAgKGNsaWNrKT1cIm9rKClcIlxyXG4gICAgPnt7IG9rVGV4dCB9fVxyXG4gICAgPC9tcngtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbXJ4LW1vZGFsPlxyXG4iXX0=
|