mis-crystal-design-system 18.1.2-signal → 18.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/button.component.d.ts +0 -2
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -5
- package/esm2022/button/button.component.mjs +7 -15
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/chip/chip.component.mjs +4 -4
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +17 -10
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +87 -32
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +6 -3
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +316 -141
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
- package/esm2022/fab/fab.component.mjs +4 -4
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +28 -27
- package/esm2022/input/directives/input/input.directive.mjs +28 -10
- package/esm2022/input/mis-input.component.mjs +19 -13
- package/esm2022/loader/loader.component.mjs +13 -7
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +10 -5
- package/esm2022/phone-input/phone-input.component.mjs +4 -4
- package/esm2022/radio-button/radio-button.component.mjs +4 -4
- package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
- package/esm2022/slider/slider.component.mjs +4 -4
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +24 -20
- package/esm2022/switch/switch.component.mjs +2 -4
- package/esm2022/table/sub-table/sub-table.component.mjs +18 -5
- package/esm2022/table/table.component.mjs +184 -95
- package/esm2022/table/table.module.mjs +7 -5
- package/esm2022/toast/toast.component.mjs +4 -4
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +4 -4
- package/fesm2022/mis-crystal-design-system-button.mjs +6 -14
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +101 -39
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +320 -142
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +27 -26
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +45 -21
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +12 -6
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +9 -4
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +23 -19
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +1 -3
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +205 -102
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +1 -1
- package/input/directives/input/input.directive.d.ts +3 -4
- package/input/mis-input.component.d.ts +3 -6
- package/input/mis-input.component.scss +11 -4
- package/loader/loader.component.d.ts +7 -1
- package/package.json +17 -17
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
- package/table/table.component.d.ts +12 -1
- package/table/table.module.d.ts +2 -1
|
@@ -137,13 +137,12 @@ function TzDrpContainerComponent_span_39_Template(rf, ctx) { if (rf & 1) {
|
|
|
137
137
|
i0.ɵɵelementStart(0, "span")(1, "span");
|
|
138
138
|
i0.ɵɵtext(2);
|
|
139
139
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵtext(3, "day(s) selected");
|
|
140
|
+
i0.ɵɵtext(3, " day(s) selected ");
|
|
141
141
|
i0.ɵɵelementEnd();
|
|
142
142
|
} if (rf & 2) {
|
|
143
|
-
let tmp_2_0;
|
|
144
143
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
145
144
|
i0.ɵɵadvance(2);
|
|
146
|
-
i0.ɵɵ
|
|
145
|
+
i0.ɵɵtextInterpolate(ctx_r2.localSelectedDates().length);
|
|
147
146
|
} }
|
|
148
147
|
function TzDrpContainerComponent_span_40_Template(rf, ctx) { if (rf & 1) {
|
|
149
148
|
i0.ɵɵelementStart(0, "span")(1, "span");
|
|
@@ -188,12 +187,26 @@ export class TzDrpContainerComponent {
|
|
|
188
187
|
this.toast = toast;
|
|
189
188
|
this.data = signal(this.injectedData);
|
|
190
189
|
this.dayjsInstance = computed(() => {
|
|
190
|
+
const config = this.data().dpConfig;
|
|
191
|
+
if (config?.timezone) {
|
|
192
|
+
// Returns a function that creates a timezone-aware dayjs instance
|
|
193
|
+
return (...args) => dayjs(...args).tz(config.timezone);
|
|
194
|
+
}
|
|
195
|
+
// Returns a function that creates a standard dayjs instance
|
|
191
196
|
return (...args) => dayjs(...args);
|
|
192
197
|
});
|
|
193
198
|
this.rawWeekDays = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
|
|
194
199
|
this.localSelectedDates = signal([]);
|
|
195
200
|
this.localSelectedDatesRange = signal({ startDate: null, endDate: null });
|
|
196
|
-
this.isDatesValid =
|
|
201
|
+
this.isDatesValid = computed(() => {
|
|
202
|
+
if (this.isSpecificPickerSelected()) {
|
|
203
|
+
// Valid if at least one specific date is selected
|
|
204
|
+
return this.localSelectedDates().length > 0;
|
|
205
|
+
}
|
|
206
|
+
// Valid if both start and end date of the range are set
|
|
207
|
+
const range = this.localSelectedDatesRange();
|
|
208
|
+
return !!(range?.startDate && range?.endDate);
|
|
209
|
+
});
|
|
197
210
|
this.dateRangeSelected = signal(false);
|
|
198
211
|
this.singleDatePickerSelected = signal(false);
|
|
199
212
|
this.openElement = signal(false);
|
|
@@ -202,10 +215,10 @@ export class TzDrpContainerComponent {
|
|
|
202
215
|
this.isSpecificPickerSelected = signal(false);
|
|
203
216
|
this.formControl = new UntypedFormControl('Specific Date(s)');
|
|
204
217
|
this.datePickerValue = signal(['Specific Date(s)', 'Date Range']);
|
|
205
|
-
this.currentMonthNumber = signal(this.
|
|
206
|
-
this.currentYearNumber = signal(this.
|
|
207
|
-
this.nextMonthNumber = signal(this.
|
|
208
|
-
this.nextYearNumber = signal(this.
|
|
218
|
+
this.currentMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).month() : dayjs().month());
|
|
219
|
+
this.currentYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).year() : dayjs().year());
|
|
220
|
+
this.nextMonthNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, "month").month() : dayjs().add(1, "month").month());
|
|
221
|
+
this.nextYearNumber = signal(this.injectedData.dpConfig?.timezone ? dayjs().tz(this.injectedData.dpConfig.timezone).add(1, "month").year() : dayjs().add(1, "month").year());
|
|
209
222
|
this.weekDays = computed(() => {
|
|
210
223
|
return this.rawWeekDays.map((day, index) => ({
|
|
211
224
|
label: `${day[0]}${day.slice(1).toLowerCase()}`,
|
|
@@ -245,7 +258,6 @@ export class TzDrpContainerComponent {
|
|
|
245
258
|
this.localSelectedDates.set(this.data().dates);
|
|
246
259
|
this.localSelectedDatesRange.set(this.injectedData.datesRange || { startDate: null, endDate: null });
|
|
247
260
|
this.isSpecificPickerSelected.set(this.data().isSPickerSelected);
|
|
248
|
-
this.isDatesValid.set(this.data().isSPickerSelected ? this.localSelectedDates().length > 0 : !!(this.localSelectedDatesRange()?.startDate && this.localSelectedDatesRange()?.endDate));
|
|
249
261
|
this.dateRangeSelected.set(!this.isSpecificPickerSelected());
|
|
250
262
|
this.singleDatePickerSelected.set(this.data().isSingleDatePickerEnable);
|
|
251
263
|
effect(() => {
|
|
@@ -274,10 +286,7 @@ export class TzDrpContainerComponent {
|
|
|
274
286
|
this.openElement.set(true);
|
|
275
287
|
this.singleDateSelectedValue.set(this.data().dates[0]?.selectedDate || '');
|
|
276
288
|
}
|
|
277
|
-
});
|
|
278
|
-
if (this.data()?.dpConfig?.timezone) {
|
|
279
|
-
this.dayjsInstance = computed(() => (...args) => dayjs(...args).tz(this.data().dpConfig.timezone));
|
|
280
|
-
}
|
|
289
|
+
}, { allowSignalWrites: true });
|
|
281
290
|
}
|
|
282
291
|
ngOnInit() {
|
|
283
292
|
if (!this.data()?.dpConfig?.format) {
|
|
@@ -351,11 +360,9 @@ export class TzDrpContainerComponent {
|
|
|
351
360
|
.date(day.date).format(this.data().dpConfig.format);
|
|
352
361
|
const existingIndex = current.findIndex(d => d.selectedDate === currentSelection);
|
|
353
362
|
if (existingIndex !== -1) {
|
|
354
|
-
this.isDatesValid.set(current.length > 1);
|
|
355
363
|
return current.filter((_, index) => index !== existingIndex);
|
|
356
364
|
}
|
|
357
365
|
else if (!day.isDisabledDay) {
|
|
358
|
-
this.isDatesValid.set(true);
|
|
359
366
|
return [...current, { selectedDate: currentSelection }];
|
|
360
367
|
}
|
|
361
368
|
return current;
|
|
@@ -370,16 +377,13 @@ export class TzDrpContainerComponent {
|
|
|
370
377
|
if (this.selectionStarted()) {
|
|
371
378
|
if (dayjsDay.isBefore(this.dayjsInstance()(current.startDate, this.data().dpConfig.format), "day")) {
|
|
372
379
|
this.selectionStarted.set(true);
|
|
373
|
-
this.isDatesValid.set(false);
|
|
374
380
|
return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };
|
|
375
381
|
}
|
|
376
382
|
this.selectionStarted.set(false);
|
|
377
|
-
this.isDatesValid.set(true);
|
|
378
383
|
return { ...current, endDate: dayjsDay.format(this.data().dpConfig.format) };
|
|
379
384
|
}
|
|
380
385
|
else {
|
|
381
386
|
this.selectionStarted.set(true);
|
|
382
|
-
this.isDatesValid.set(false);
|
|
383
387
|
return { startDate: dayjsDay.format(this.data().dpConfig.format), endDate: null };
|
|
384
388
|
}
|
|
385
389
|
});
|
|
@@ -521,7 +525,7 @@ export class TzDrpContainerComponent {
|
|
|
521
525
|
}
|
|
522
526
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TzDrpContainerComponent, [{
|
|
523
527
|
type: Component,
|
|
524
|
-
args: [{ selector: "mis-tz-sdp", template: "<div class=\"daterangepicker-container\" [ngClass]=\"data().isSingleDatePickerEnable?'single-date-picker-enabled':''\">\n <div class=\"radio-container\">\n <div class=\"label\" *ngFor=\"let picker of datePickerValue()\">\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n </div>\n </div>\n <div class=\"specific-datepicker-container\" [ngStyle]=\"{'display': singleDatePickerSelected() ? 'none' : ''}\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{ 'margin-right': !isSpecificPickerSelected() ? '0px' : '1px','width': !isSpecificPickerSelected() ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '2.8px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\" >\n <span >{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()),\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"weekOffs_holidays_container\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\"><span>{{isSpecificPickerSelected() && localSelectedDates()[0]?.selectedDate ? localSelectedDates().length : (localSelectedDates().length -1 && 0)}} </span>day(s) selected</span>\n <span *ngIf=\"!isSpecificPickerSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button mis-button size=\"md\" type=\"none\" (click)=\"cancelDatePicker()\" >Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\" >Apply</button>\n <button *ngIf=\"!isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\" >Apply</button>\n </div>\n </div>\n </div>\n <div class=\"single-datepicker-container\" [ngStyle]=\"{'display': !singleDatePickerSelected() ? 'none' : 'block'}\">\n <input\n misTzDp\n misInput\n type=\"text\"\n readonly\n class=\"date-input\"\n [dpConfig]=\"data().dpConfig\"\n placeholder=\"Select\"\n (dateChange)=\"onSingleDateChange($event)\"\n [selectedDate]=\"singleDateSelectedValue()\"\n positionX=\"center\"\n positionY=\"top\"\n offsetX = 71\n offsetY = -1\n [value]=\"singleDateSelectedValue()\"\n [disableBoxShadow]=\"true\"\n [disableOverLay]=\"true\"\n [openElement]=\"openElement()\"\n #singleDatePickerElement\n />\n </div>\n\n</div>\n\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled{flex-direction:row}.daterangepicker-container .radio-container{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container .radio-container .label{display:flex;align-items:center}.daterangepicker-container .radio-container .label .input{margin-right:8px;width:20px;height:20px}.daterangepicker-container .radio-container .label:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container .radio-container .label:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled .radio-container{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled .radio-container .label:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled .radio-container .label:nth-child(2){padding-left:0}.daterangepicker-container .daterangepicker-container__view{display:flex;gap:24px;padding:16px}.daterangepicker-container .daterangepicker-container__view .datepicker__left,.daterangepicker-container .daterangepicker-container__view .datepicker__right{display:flex;flex-direction:column}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body{height:100%;width:252px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday{width:36px;height:18px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days{display:flex;flex-wrap:wrap}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day{cursor:default}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day:hover{background-color:transparent}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day>span{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.selected-day{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.disabled-day{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day.selected-start-day{border-radius:50%!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .in-range-day:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .weekOffs_holidays_container{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container .weekOffs_holidays_container>span{margin-right:16px}.daterangepicker-container .weekOffs_holidays_container>span>span{color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker__footer{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container .daterangepicker__footer span{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container .daterangepicker__footer span span{font-weight:700}.daterangepicker-container .daterangepicker__footer .footer_action_btn{display:flex}.daterangepicker-container .daterangepicker__footer button{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text{color:var(--text-secondary, #6A737D)!important}.display-none{display:none!important}.single-datepicker-container{width:291px}\n"] }]
|
|
528
|
+
args: [{ selector: "mis-tz-sdp", template: "<div class=\"daterangepicker-container\" [ngClass]=\"data().isSingleDatePickerEnable?'single-date-picker-enabled':''\">\n <div class=\"radio-container\">\n <div class=\"label\" *ngFor=\"let picker of datePickerValue()\">\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n </div>\n </div>\n <div class=\"specific-datepicker-container\" [ngStyle]=\"{'display': singleDatePickerSelected() ? 'none' : ''}\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{ 'margin-right': !isSpecificPickerSelected() ? '0px' : '1px','width': !isSpecificPickerSelected() ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '2.8px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\" >\n <span >{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()),\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"weekOffs_holidays_container\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\">\n <span>{{localSelectedDates().length}}</span> day(s) selected\n </span>\n <span *ngIf=\"!isSpecificPickerSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button mis-button size=\"md\" type=\"none\" (click)=\"cancelDatePicker()\" >Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\" >Apply</button>\n <button *ngIf=\"!isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\" >Apply</button>\n </div>\n </div>\n </div>\n <div class=\"single-datepicker-container\" [ngStyle]=\"{'display': !singleDatePickerSelected() ? 'none' : 'block'}\">\n <input\n misTzDp\n misInput\n type=\"text\"\n readonly\n class=\"date-input\"\n [dpConfig]=\"data().dpConfig\"\n placeholder=\"Select\"\n (dateChange)=\"onSingleDateChange($event)\"\n [selectedDate]=\"singleDateSelectedValue()\"\n positionX=\"center\"\n positionY=\"top\"\n offsetX = 71\n offsetY = -1\n [value]=\"singleDateSelectedValue()\"\n [disableBoxShadow]=\"true\"\n [disableOverLay]=\"true\"\n [openElement]=\"openElement()\"\n #singleDatePickerElement\n />\n </div>\n\n</div>\n\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled{flex-direction:row}.daterangepicker-container .radio-container{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container .radio-container .label{display:flex;align-items:center}.daterangepicker-container .radio-container .label .input{margin-right:8px;width:20px;height:20px}.daterangepicker-container .radio-container .label:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container .radio-container .label:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled .radio-container{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled .radio-container .label:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled .radio-container .label:nth-child(2){padding-left:0}.daterangepicker-container .daterangepicker-container__view{display:flex;gap:24px;padding:16px}.daterangepicker-container .daterangepicker-container__view .datepicker__left,.daterangepicker-container .daterangepicker-container__view .datepicker__right{display:flex;flex-direction:column}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body{height:100%;width:252px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday{width:36px;height:18px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days{display:flex;flex-wrap:wrap}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day{cursor:default}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day:hover{background-color:transparent}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day>span{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.selected-day{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.disabled-day{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day.selected-start-day{border-radius:50%!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .in-range-day:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .weekOffs_holidays_container{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container .weekOffs_holidays_container>span{margin-right:16px}.daterangepicker-container .weekOffs_holidays_container>span>span{color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker__footer{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container .daterangepicker__footer span{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container .daterangepicker__footer span span{font-weight:700}.daterangepicker-container .daterangepicker__footer .footer_action_btn{display:flex}.daterangepicker-container .daterangepicker__footer button{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text{color:var(--text-secondary, #6A737D)!important}.display-none{display:none!important}.single-datepicker-container{width:291px}\n"] }]
|
|
525
529
|
}], () => [{ type: undefined, decorators: [{
|
|
526
530
|
type: Inject,
|
|
527
531
|
args: [CONTAINER_DATA]
|
|
@@ -530,4 +534,4 @@ export class TzDrpContainerComponent {
|
|
|
530
534
|
args: ['singleDatePickerElement', { static: true, read: TzDatepickerDirective }]
|
|
531
535
|
}] }); })();
|
|
532
536
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDrpContainerComponent, { className: "TzDrpContainerComponent" }); })();
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1Z6QyxBQURGLCtCQUE0RCxvQkFDMkY7SUFBbEYsd01BQWUsMkJBQW9CLEtBQUM7SUFBOEMsaUJBQVk7SUFDakssNEJBQU07SUFBQSxZQUFVO0lBQ2xCLEFBRGtCLGlCQUFPLEVBQ25COzs7O0lBRnFCLGNBQXdCO0lBQXdFLEFBQXZFLEFBQXpCLHNDQUF3QixvQkFBaUIsbUNBQWtGO0lBQzlJLGVBQVU7SUFBViwrQkFBVTs7O0lBMkJWLEFBREYsK0JBQW1GLGVBRzlFO0lBQUEsWUFBbUI7SUFDeEIsQUFEd0IsaUJBQU8sRUFDekI7Ozs7SUFIRSxjQUVKO0lBRkksMElBRUo7SUFBQyxjQUFtQjtJQUFuQixzQ0FBbUI7OztJQXFCdEIsZ0NBR0k7SUFDRixZQUNGO0lBQUEsaUJBQU87OztJQUxxQiwrR0FHMUI7SUFDQSxjQUNGO0lBREUsNENBQ0Y7Ozs7SUF0QkYsK0JBYUM7SUFEQywwTUFBUyxpQkFBVSxNQUFNLFNBQUssS0FBQztJQUVqQywwQkFFUztJQUNQLGtGQUdJO0lBR04saUJBQU07Ozs7SUFiSixBQVJBLGdiQU9FLHNRQUNtUjtJQUlsUixjQUVIO0lBRkcsdUVBRUg7SUFDTyxjQUFrQjtJQUFsQixzQ0FBa0I7OztJQWdDekIsQUFERiwrQkFBb0YsV0FDM0U7SUFBQSxZQUFtQjtJQUM1QixBQUQ0QixpQkFBTyxFQUM3Qjs7O0lBREcsZUFBbUI7SUFBbkIsc0NBQW1COzs7SUFvQjFCLGdDQUdJO0lBQ0YsWUFDRjtJQUFBLGlCQUFPOzs7O0lBTG9CLCtLQUd6QjtJQUNBLGNBQ0Y7SUFERSw2Q0FDRjs7OztJQXJCRiwrQkFZQztJQURDLDJNQUFTLGlCQUFVLE9BQU8sVUFBSyxLQUFDO0lBRWxDLDBCQUVTO0lBQ1Asa0ZBR0k7SUFHTixpQkFBTTs7OztJQXBCSix3YkFPRTtJQUlDLGNBRUg7SUFGRyx3RUFFSDtJQUNPLGNBQWtCO0lBQWxCLHVDQUFrQjs7O0lBWTZELDRCQUFvQjtJQUFBLGlCQUFDO0lBQUEsaUJBQU87OztJQUF2Ryw0QkFBK0Q7SUFBQSxZQUFZO0lBQUEsbUZBQW9CO0lBQVEsaUJBQU87Ozs7SUFBL0MsY0FBWTtJQUFaLDJDQUFZO0lBQU8sY0FBVztJQUFYLGdDQUFXOzs7SUFJdkUsQUFBekMsNEJBQXlDLFdBQU07SUFBQSxZQUE4STtJQUFBLGlCQUFPO0lBQUEsK0JBQWU7SUFBQSxpQkFBTzs7OztJQUEzSyxlQUE4STtJQUE5SSwwT0FBOEk7OztJQUNuSixBQUExQyw0QkFBMEMsV0FBTTtJQUFBLFlBQW1EO0lBQUEsaUJBQU87SUFBQSwrQkFBZTtJQUFBLGlCQUFPOzs7SUFBaEYsZUFBbUQ7SUFBbkQsMkZBQW1EOzs7O0lBR2pHLGtDQUFvSTtJQUFyRCx3TEFBUyxtQkFBWSxLQUFDO0lBQStCLHFCQUFLO0lBQUEsaUJBQVM7OztJQUE1QyxpREFBNEI7Ozs7SUFDbEksa0NBQXVLO0lBQXZGLHdMQUFTLHdCQUFpQixLQUFDO0lBQTRELHFCQUFLO0lBQUEsaUJBQVM7OztJQUF6RSxtRkFBeUQ7O0FEaEgzSyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBTzdCLE1BQU0sT0FBTyx1QkFBdUI7SUFpRWxDLFlBQTRDLFlBQTZCLEVBQVUsS0FBbUI7UUFBMUQsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQS9EN0YsU0FBSSxHQUFHLE1BQU0sQ0FBa0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ2MsZ0JBQVcsR0FBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNFLHVCQUFrQixHQUFHLE1BQU0sQ0FBMEIsRUFBRSxDQUFDLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsTUFBTSxDQUF3QixFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDMUYsaUJBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0Isc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1Qiw0QkFBdUIsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxnQkFBVyxHQUFHLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RCxvQkFBZSxHQUFHLE1BQU0sQ0FBVyxDQUFDLGtCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsb0JBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLG1CQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQy9DLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLO2FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDYSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0QscUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEUsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzdDLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNyQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ2EsNEJBQXVCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUMvRyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEosT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7UUFDYSx3QkFBbUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBQy9HLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwSixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztRQUNhLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7UUFDYSxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUtELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLElBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2TCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLGlCQUF3QixDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkgsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RILENBQUM7WUFDRCxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdEUsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVHLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEdBQUc7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxXQUFXO2FBQ3BCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhLEVBQUUsaUJBQXlCO1FBQzVELE1BQU0sS0FBSyxHQUF5QixFQUFFLENBQUM7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTlGLEtBQUssSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztZQUMxRSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEosSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEosSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDdkYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLENBQUM7WUFDakssTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLENBQUM7WUFDM0osTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sQ0FBQztnQkFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUV6TyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFcEUsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDVCxJQUFJLEVBQUUsV0FBVztnQkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLGFBQWE7Z0JBQ2IsWUFBWTtnQkFDWixrQkFBa0I7Z0JBQ2xCLGdCQUFnQjtnQkFDaEIsVUFBVTtnQkFDVixTQUFTO2dCQUNULFNBQVM7Z0JBQ1QsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksRUFBRTtnQkFDaEgsYUFBYTthQUNkLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUE4QjtRQUMxQyxJQUFJLFNBQVMsR0FBVSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUM5RyxTQUFTLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFzQixFQUFFLEdBQXVCO1FBQ3ZELElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksR0FBRyxDQUFDLFlBQVk7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRSxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtxQkFDNUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3hFLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUVsRixJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLENBQUM7Z0JBQy9ELENBQUM7cUJBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQzFELENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtpQkFDcEMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQ3hFLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2lCQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDcEYsQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0UsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3BGLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixNQUFNLFlBQVksR0FBMEIsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssa0JBQWtCLENBQUMsQ0FBQztRQUVoRSx3REFBd0Q7UUFDeEQsMERBQTBEO1FBRTFELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7d0hBL1BVLHVCQUF1Qix1QkFpRWQsY0FBYztvRUFqRXZCLHVCQUF1QjttQ0ErRDBCLHFCQUFxQjs7Ozs7O1lDekZqRixBQURGLDhCQUFtSCxhQUNwRjtZQUMzQix3RUFBNEQ7WUFJOUQsaUJBQU07WUFLRSxBQURGLEFBREYsQUFERixBQURGLDhCQUE2RyxhQUM5RCxhQUNiLGFBQzBCLGFBT25EO1lBSkMsd0lBQVUsNkJBQXlCLElBQUksa0JBQWMsVUFBVSxDQUFDLEtBQUM7O1lBS25FLDhCQUErRjtZQUM3RiwyQkFHTTtZQUVWLEFBREEsaUJBQU0sRUFDQTs7WUFDTiw2QkFBTTtZQUFDLGFBQStDO1lBQUEsaUJBQU87WUFDN0QsdUJBQVc7WUFDYixpQkFBTTtZQUVKLEFBREYsZ0NBQTZDLGVBQ007WUFDL0MsMkVBQW1GO1lBS3JGLGlCQUFNO1lBQ04sZ0NBQTZDO1lBQzNDLDRFQWFDO1lBYVAsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjtZQUVKLEFBREYsZ0NBQStCLGNBQ3lCO1lBQ3BELHVCQUFXO1lBQ1gsNkJBQU07WUFBQyxhQUF5QztZQUFBLGlCQUFPO1lBQ3ZELCtCQU1DO1lBSkMseUlBQVUseUJBQXFCLElBQUksa0JBQWMsTUFBTSxDQUFDLEtBQUM7O1lBSzNELCtCQUErRjtZQUM3Riw0QkFHUTtZQUdaLEFBREUsQUFEQSxpQkFBTSxFQUNBLEVBQ0Y7O1lBRUosQUFERixnQ0FBNkMsZUFDTTtZQUMvQywyRUFBb0Y7WUFHdEYsaUJBQU07WUFDTixnQ0FBNkM7WUFDM0MsNEVBWUM7WUFjVCxBQURFLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0YsRUFDRjtZQUVKLEFBREYsZ0NBQXlDLFlBQ2pDO1lBQUEsOEJBQWE7WUFBQSw2RUFBK0Q7WUFBK0MsaUJBQU87WUFDeEksNkJBQU87WUFBQSwwQkFBUztZQUFBLDRCQUFpRztZQUNuSCxBQURtSCxpQkFBTyxFQUNwSDtZQUNOLGdDQUFxQztZQUVuQyxBQURBLDZFQUF5QyxnRUFDQztZQUV4QyxBQURGLGdDQUErQixrQkFDMEM7WUFBOUIsMklBQVMsc0JBQWtCLEtBQUM7WUFBRSx1QkFBTTtZQUFBLGlCQUFTO1lBRXRGLEFBREEsaUZBQW9JLG9FQUNtQztZQUczSyxBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGO1lBRUYsQUFESixnQ0FBaUgsb0JBb0IzRztZQVhBLDBKQUFjLDhCQUEwQixLQUFDO1lBY2pELEFBRkUsQUFwQkksaUJBbUJFLEVBQ0EsRUFFRjs7WUExSmlDLGlHQUEyRTtZQUV4RSxlQUFvQjtZQUFwQiwrQ0FBb0I7WUFLakIsY0FBaUU7WUFBakUsbUdBQWlFO1lBT2xHLGVBRUU7WUFGRixvRkFFRTtZQVNDLGVBQStDO1lBQS9DLGlGQUErQztZQUtnQixlQUFhO1lBQWIsd0NBQWE7WUFrQi9ELGVBQXNCO1lBQXRCLGlEQUFzQjtZQW1CbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBSTlDLGNBRUU7WUFGRixnRkFFRTtZQVlrRSxlQUFhO1lBQWIsd0NBQWE7WUFlL0QsZUFBbUI7WUFBbkIsOENBQW1CO1lBa0JFLGVBQW9CO1lBQXBCLDZDQUFvQjtZQUN0QixlQUE4RDtZQUE5RCxxREFBOEQ7WUFHbEcsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQWlDO1lBQWpDLHNEQUFpQztZQUc3QixlQUFnQztZQUFoQyxxREFBZ0M7WUFDaEMsY0FBaUM7WUFBakMsc0RBQWlDO1lBSUwsY0FBdUU7WUFBdkUseUdBQXVFO1lBTzFHLGNBQTRCO1lBVzVCLEFBREEsQUFEQSxBQURBLEFBTEEsQUFIQSw4Q0FBNEIsK0NBR2Msd0NBS1AsMEJBQ1Ysd0JBQ0Ysa0NBQ007OztpRkQxSHhCLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXFFVCxNQUFNO3VCQUFDLGNBQWM7Z0RBRm1ELHVCQUF1QjtrQkFBM0csU0FBUzttQkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFOztrRkEvRHhFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcmFuZ2VwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXksIElTU2VsZWN0ZWREYXRlc0NvbmZpZywgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92MlwiO1xuaW1wb3J0IGRheWpzLCB7IERheWpzLCB0eiB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJztcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgaXNCZXR3ZWVuIGZyb20gJ2RheWpzL3BsdWdpbi9pc0JldHdlZW4nO1xuXG5kYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LXNkcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcnBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBzaWduYWw8SURhdGVQaWNrZXJEYXRhPih0aGlzLmluamVjdGVkRGF0YSk7XG4gIHByaXZhdGUgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBzaWduYWw8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlID0gc2lnbmFsPElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuRWxlbWVudCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSA9IHNpZ25hbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnU3BlY2lmaWMgRGF0ZShzKScpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZVBpY2tlclZhbHVlID0gc2lnbmFsPHN0cmluZ1tdPihbJ1NwZWNpZmljIERhdGUocyknLCdEYXRlIFJhbmdlJ10pO1xuICBcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRNb250aE51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLm1vbnRoKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFllYXJOdW1iZXIgPSBzaWduYWwodGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoTnVtYmVyID0gc2lnbmFsKHRoaXMuZGF5anNJbnN0YW5jZSgpKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJhd1dlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gKHtcbiAgICAgIGxhYmVsOiBgJHtkYXlbMF19JHtkYXkuc2xpY2UoMSkudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgaXNDdXJyZW50RGF5OiB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSB0b2RheU1vbnRoTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKTtcbiAgICBpZiAocmFuZ2U/LnN0YXJ0RGF0ZSAmJiByYW5nZT8uZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5lbmREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgaWYgKHN0YXJ0LmlzVmFsaWQoKSAmJiBlbmQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgJ2RheScpICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtaW5EYXRlLmlzVmFsaWQoKSAmJiBtaW5EYXRlLmlzU2FtZU9yQWZ0ZXIoY3VycmVudEluc3RhbmNlLCBcIm1vbnRoXCIpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWF4RGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtYXhEYXRlLmlzVmFsaWQoKSAmJiBtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpO1xuICB9KTtcblxuICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUekRhdGVwaWNrZXJEaXJlY3RpdmUgfSkgc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQhOiBUekRhdGVwaWNrZXJEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05UQUlORVJfREFUQSkgcHJpdmF0ZSBpbmplY3RlZERhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlLnNldCh0aGlzLmluamVjdGVkRGF0YS5kYXRlc1JhbmdlIHx8IHtzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGx9KTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTUGlja2VyU2VsZWN0ZWQpO1xuICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0aGlzLmRhdGEoKS5pc1NQaWNrZXJTZWxlY3RlZCA/IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoID4gMCA6ICEhKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSkpO1xuICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQuc2V0KCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKTtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTaW5nbGVEYXRlUGlja2VyRW5hYmxlKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBsZXQgc2VsZWN0ZWRTdGFydERhdGU6IERheWpzO1xuICAgICAgaWYgKCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICAgIHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCk/LlswXT8uc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGVjdGVkU3RhcnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS55ZWFyKCkpO1xuICAgICAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgICAgICB0aGlzLm5leHRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSkge1xuICAgICAgICBjb25zdCBwaWNrZXJWYWx1ZSA9ICdTaW5nbGUgRGF0ZSc7XG4gICAgICAgIGlmICghdGhpcy5kYXRlUGlja2VyVmFsdWUoKS5pbmNsdWRlcyhwaWNrZXJWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJWYWx1ZS51cGRhdGUoY3VycmVudFZhbHVlID0+IFtwaWNrZXJWYWx1ZSwgLi4uY3VycmVudFZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShwaWNrZXJWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUuc2V0KHRoaXMuZGF0YSgpLmRhdGVzWzBdPy5zZWxlY3RlZERhdGUgfHwgJycpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZGF0YSgpPy5kcENvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgIHRoaXMuZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+ICguLi5hcmdzOiBhbnlbXSkgPT4gZGF5anMoLi4uYXJncykudHoodGhpcy5kYXRhKCkuZHBDb25maWcudGltZXpvbmUpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YSgpPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEoKS5kcENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXRhKCkuZHBDb25maWcsXG4gICAgICAgIGZvcm1hdDogREFURV9GT1JNQVRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgY29uc3QgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXlzSW5Nb250aCgpO1xuICAgIFxuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGRhdGUuaXNTYW1lKHRoaXMuZGF5anNJbnN0YW5jZSgpKCksICdkYXknKTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5zb21lKGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID0gISF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGU7XG4gICAgICBjb25zdCBpblJhbmdlRGF5ID0gISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUuaXNCZXR3ZWVuKHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksICdkYXknLCAnKCknKTtcblxuICAgICAgY29uc3QgaXNIb2xpZGF5ID0gdGhpcy5kYXRhKCkuaG9saWRheXMuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1dlZWtPZmYgPSB0aGlzLmRhdGEoKS53ZWVrT2Zmcy5pbmNsdWRlcyhkYXRlLmZvcm1hdCgnZGRkJykpO1xuXG4gICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgIHdlZWtEYXk6IGRhdGUuZGF5KCksXG4gICAgICAgIGlzU2VsZWN0ZWREYXksXG4gICAgICAgIGlzQ3VycmVudERheSxcbiAgICAgICAgaXNTZWxlY3RlZFN0YXJ0RGF5LFxuICAgICAgICBpc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICBpblJhbmdlRGF5LFxuICAgICAgICBpc0hvbGlkYXksXG4gICAgICAgIGlzV2Vla09mZixcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gZGF0ZXNbMF0/LndlZWtEYXkgfHwgMDsgaSA+IDA7IGktLSkge1xuICAgICAgZGF0ZXMudW5zaGlmdCh7IGRhdGU6IDAsIHdlZWtEYXk6IGkgLSAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICB9XG5cbiAgc2VsZWN0RGF5KGZyb206IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpKVxuICAgICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAgIC5kYXRlKGRheS5kYXRlKS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGN1cnJlbnRTZWxlY3Rpb24pO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQuc2V0KGN1cnJlbnQubGVuZ3RoID4gMSk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IGV4aXN0aW5nSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkYXkuaXNEaXNhYmxlZERheSkge1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gWy4uLmN1cnJlbnQsIHsgc2VsZWN0ZWREYXRlOiBjdXJyZW50U2VsZWN0aW9uIH1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRheWpzRGF5ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSA6IHRoaXMubmV4dFllYXJOdW1iZXIoKSlcbiAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgIC5kYXRlKGRheS5kYXRlKTtcbiAgICAgIFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgIGlmIChkYXlqc0RheS5pc0JlZm9yZSh0aGlzLmRheWpzSW5zdGFuY2UoKShjdXJyZW50LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudCwgZW5kRGF0ZTogZGF5anNEYXkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhcHBseURhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKSk7XG4gIH1cblxuICBhcHBseURhdGVzUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKSk7XG4gIH1cblxuICBvblNpbmdsZURhdGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0YTogSVNTZWxlY3RlZERhdGVzQ29uZmlnID0geyBzZWxlY3RlZERhdGU6IGV2ZW50IH07XG4gICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UoW3NlbGVjdGVkRGF0YV0pO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5vcGVuRWxlbWVudC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiRGF0ZSBSYW5nZVwiKTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU3BlY2lmaWMgRGF0ZShzKVwiKTtcbiAgICBcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGV2ZW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCI+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpXCI+XG4gICAgICA8bWlzLXJhZGlvIGNsYXNzPVwiaW5wdXRcIiBbbmFtZV09XCInZGF0ZVNlbGVjdGlvbidcIiBbdmFsdWVdPVwicGlja2VyXCIgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVBpY2tlcigkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj48L21pcy1yYWRpbz5cbiAgICAgIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSA/ICdub25lJyA6ICcnfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIiA+XG4gICAgICAgICAgICA8c3BhbiA+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIj5cbiAgICA8c3Bhbj5XZWVrbHkgb2ZmczogPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtPZmYgb2YgZGF0YSgpLndlZWtPZmZzOyBsZXQgbGFzdCA9IGxhc3RcIj57e3dlZWtPZmZ9fSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuID5Ib2xpZGF5cyA8c3BhbiBjbGFzcz1cImNpcmN1bGFyLWRvdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj48c3Bhbj57e2lzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmIGxvY2FsU2VsZWN0ZWREYXRlcygpWzBdPy5zZWxlY3RlZERhdGUgPyBsb2NhbFNlbGVjdGVkRGF0ZXMoKS5sZW5ndGggOiAobG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoIC0xICYmIDApfX0gPC9zcGFuPmRheShzKSBzZWxlY3RlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiPjxzcGFuPnt7ZGF0ZVJhbmdlTGVuZ3RoKCkgPiAwID8gZGF0ZVJhbmdlTGVuZ3RoKCkgOiAwIH19IDwvc3Bhbj5kYXkocykgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9hY3Rpb25fYnRuXCI+XG4gICAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCIgPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCIgPkFwcGx5PC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiID5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1Z6QyxBQURGLCtCQUE0RCxvQkFDMkY7SUFBbEYsd01BQWUsMkJBQW9CLEtBQUM7SUFBOEMsaUJBQVk7SUFDakssNEJBQU07SUFBQSxZQUFVO0lBQ2xCLEFBRGtCLGlCQUFPLEVBQ25COzs7O0lBRnFCLGNBQXdCO0lBQXdFLEFBQXZFLEFBQXpCLHNDQUF3QixvQkFBaUIsbUNBQWtGO0lBQzlJLGVBQVU7SUFBViwrQkFBVTs7O0lBMkJWLEFBREYsK0JBQW1GLGVBRzlFO0lBQUEsWUFBbUI7SUFDeEIsQUFEd0IsaUJBQU8sRUFDekI7Ozs7SUFIRSxjQUVKO0lBRkksMElBRUo7SUFBQyxjQUFtQjtJQUFuQixzQ0FBbUI7OztJQXFCdEIsZ0NBR0k7SUFDRixZQUNGO0lBQUEsaUJBQU87OztJQUxxQiwrR0FHMUI7SUFDQSxjQUNGO0lBREUsNENBQ0Y7Ozs7SUF0QkYsK0JBYUM7SUFEQywwTUFBUyxpQkFBVSxNQUFNLFNBQUssS0FBQztJQUVqQywwQkFFUztJQUNQLGtGQUdJO0lBR04saUJBQU07Ozs7SUFiSixBQVJBLGdiQU9FLHNRQUNtUjtJQUlsUixjQUVIO0lBRkcsdUVBRUg7SUFDTyxjQUFrQjtJQUFsQixzQ0FBa0I7OztJQWdDekIsQUFERiwrQkFBb0YsV0FDM0U7SUFBQSxZQUFtQjtJQUM1QixBQUQ0QixpQkFBTyxFQUM3Qjs7O0lBREcsZUFBbUI7SUFBbkIsc0NBQW1COzs7SUFvQjFCLGdDQUdJO0lBQ0YsWUFDRjtJQUFBLGlCQUFPOzs7O0lBTG9CLCtLQUd6QjtJQUNBLGNBQ0Y7SUFERSw2Q0FDRjs7OztJQXJCRiwrQkFZQztJQURDLDJNQUFTLGlCQUFVLE9BQU8sVUFBSyxLQUFDO0lBRWxDLDBCQUVTO0lBQ1Asa0ZBR0k7SUFHTixpQkFBTTs7OztJQXBCSix3YkFPRTtJQUlDLGNBRUg7SUFGRyx3RUFFSDtJQUNPLGNBQWtCO0lBQWxCLHVDQUFrQjs7O0lBWTZELDRCQUFvQjtJQUFBLGlCQUFDO0lBQUEsaUJBQU87OztJQUF2Ryw0QkFBK0Q7SUFBQSxZQUFZO0lBQUEsbUZBQW9CO0lBQVEsaUJBQU87Ozs7SUFBL0MsY0FBWTtJQUFaLDJDQUFZO0lBQU8sY0FBVztJQUFYLGdDQUFXOzs7SUFLOUcsQUFERiw0QkFBeUMsV0FDakM7SUFBQSxZQUErQjtJQUFBLGlCQUFPO0lBQUMsaUNBQy9DO0lBQUEsaUJBQU87OztJQURDLGVBQStCO0lBQS9CLHdEQUErQjs7O0lBRUcsQUFBMUMsNEJBQTBDLFdBQU07SUFBQSxZQUFtRDtJQUFBLGlCQUFPO0lBQUEsK0JBQWU7SUFBQSxpQkFBTzs7O0lBQWhGLGVBQW1EO0lBQW5ELDJGQUFtRDs7OztJQUdqRyxrQ0FBb0k7SUFBckQsd0xBQVMsbUJBQVksS0FBQztJQUErQixxQkFBSztJQUFBLGlCQUFTOzs7SUFBNUMsaURBQTRCOzs7O0lBQ2xJLGtDQUF1SztJQUF2Rix3TEFBUyx3QkFBaUIsS0FBQztJQUE0RCxxQkFBSztJQUFBLGlCQUFTOzs7SUFBekUsbUZBQXlEOztBRGxIM0ssS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2hDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQU83QixNQUFNLE9BQU8sdUJBQXVCO0lBcUZsQyxZQUE0QyxZQUE2QixFQUFVLEtBQW1CO1FBQTFELGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWM7UUFuRjdGLFNBQUksR0FBRyxNQUFNLENBQWtCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUNwQyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDckIsa0VBQWtFO2dCQUNsRSxPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELDREQUE0RDtZQUM1RCxPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRWMsZ0JBQVcsR0FBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNFLHVCQUFrQixHQUFHLE1BQU0sQ0FBMEIsRUFBRSxDQUFDLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsTUFBTSxDQUF3QixFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFMUYsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztnQkFDcEMsa0RBQWtEO2dCQUNsRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELHdEQUF3RDtZQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBR2Esc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1Qiw0QkFBdUIsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxnQkFBVyxHQUFHLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RCxvQkFBZSxHQUFHLE1BQU0sQ0FBVyxDQUFDLGtCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlJLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzSSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0ssbUJBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBR3hLLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUs7YUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNhLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRSxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0MsSUFBSSxLQUFLLEVBQUUsU0FBUyxJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3JDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDYSw0QkFBdUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBQy9HLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwSixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNhLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDL0csTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BKLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO1FBQ2Esc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztRQUNhLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO1FBS0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLGlCQUF3QixDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkgsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RILENBQUM7WUFDRCxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdEUsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDLEVBQUUsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsR0FBRztnQkFDckIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUTtnQkFDdkIsTUFBTSxFQUFFLFdBQVc7YUFDcEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWEsRUFBRSxpQkFBeUI7UUFDNUQsTUFBTSxLQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFOUYsS0FBSyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsV0FBVyxJQUFJLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTVELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwSixJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwSixJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQztZQUN2RixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFNBQVMsQ0FBQztZQUNqSyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUMzSixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsT0FBTyxDQUFDO2dCQUN4RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXpPLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUVwRSxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULElBQUksRUFBRSxXQUFXO2dCQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsYUFBYTtnQkFDYixZQUFZO2dCQUNaLGtCQUFrQjtnQkFDbEIsZ0JBQWdCO2dCQUNoQixVQUFVO2dCQUNWLFNBQVM7Z0JBQ1QsU0FBUztnQkFDVCxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFFO2dCQUNoSCxhQUFhO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQThCO1FBQzFDLElBQUksU0FBUyxHQUFVLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzlHLFNBQVMsR0FBRyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQXNCLEVBQUUsR0FBdUI7UUFDdkQsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxHQUFHLENBQUMsWUFBWTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO3FCQUM1QyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztxQkFDeEUsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7cUJBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLGdCQUFnQixDQUFDLENBQUM7Z0JBRWxGLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztxQkFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM5QixPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7aUJBQ3BDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4RSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVsQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7b0JBQzVCLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ25HLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDcEYsQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNwRixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsTUFBTSxZQUFZLEdBQTBCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLGtCQUFrQixDQUFDLENBQUM7UUFFaEUsd0RBQXdEO1FBQ3hELDBEQUEwRDtRQUUxRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO3dIQXpRVSx1QkFBdUIsdUJBcUZkLGNBQWM7b0VBckZ2Qix1QkFBdUI7bUNBbUYwQixxQkFBcUI7Ozs7OztZQzdHakYsQUFERiw4QkFBbUgsYUFDcEY7WUFDM0Isd0VBQTREO1lBSTlELGlCQUFNO1lBS0UsQUFERixBQURGLEFBREYsQUFERiw4QkFBNkcsYUFDOUQsYUFDYixhQUMwQixhQU9uRDtZQUpDLHdJQUFVLDZCQUF5QixJQUFJLGtCQUFjLFVBQVUsQ0FBQyxLQUFDOztZQUtuRSw4QkFBK0Y7WUFDN0YsMkJBR007WUFFVixBQURBLGlCQUFNLEVBQ0E7O1lBQ04sNkJBQU07WUFBQyxhQUErQztZQUFBLGlCQUFPO1lBQzdELHVCQUFXO1lBQ2IsaUJBQU07WUFFSixBQURGLGdDQUE2QyxlQUNNO1lBQy9DLDJFQUFtRjtZQUtyRixpQkFBTTtZQUNOLGdDQUE2QztZQUMzQyw0RUFhQztZQWFQLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7WUFFSixBQURGLGdDQUErQixjQUN5QjtZQUNwRCx1QkFBVztZQUNYLDZCQUFNO1lBQUMsYUFBeUM7WUFBQSxpQkFBTztZQUN2RCwrQkFNQztZQUpDLHlJQUFVLHlCQUFxQixJQUFJLGtCQUFjLE1BQU0sQ0FBQyxLQUFDOztZQUszRCwrQkFBK0Y7WUFDN0YsNEJBR1E7WUFHWixBQURFLEFBREEsaUJBQU0sRUFDQSxFQUNGOztZQUVKLEFBREYsZ0NBQTZDLGVBQ007WUFDL0MsMkVBQW9GO1lBR3RGLGlCQUFNO1lBQ04sZ0NBQTZDO1lBQzNDLDRFQVlDO1lBY1QsQUFERSxBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGLEVBQ0Y7WUFFSixBQURGLGdDQUF5QyxZQUNqQztZQUFBLDhCQUFhO1lBQUEsNkVBQStEO1lBQStDLGlCQUFPO1lBQ3hJLDZCQUFPO1lBQUEsMEJBQVM7WUFBQSw0QkFBaUc7WUFDbkgsQUFEbUgsaUJBQU8sRUFDcEg7WUFDTixnQ0FBcUM7WUFJbkMsQUFIQSw2RUFBeUMsZ0VBR0M7WUFFeEMsQUFERixnQ0FBK0Isa0JBQzBDO1lBQTlCLDJJQUFTLHNCQUFrQixLQUFDO1lBQUUsdUJBQU07WUFBQSxpQkFBUztZQUV0RixBQURBLGlGQUFvSSxvRUFDbUM7WUFHM0ssQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjtZQUVGLEFBREosZ0NBQWlILG9CQW9CM0c7WUFYQSwwSkFBYyw4QkFBMEIsS0FBQztZQWNqRCxBQUZFLEFBcEJJLGlCQW1CRSxFQUNBLEVBRUY7O1lBNUppQyxpR0FBMkU7WUFFeEUsZUFBb0I7WUFBcEIsK0NBQW9CO1lBS2pCLGNBQWlFO1lBQWpFLG1HQUFpRTtZQU9sRyxlQUVFO1lBRkYsb0ZBRUU7WUFTQyxlQUErQztZQUEvQyxpRkFBK0M7WUFLZ0IsZUFBYTtZQUFiLHdDQUFhO1lBa0IvRCxlQUFzQjtZQUF0QixpREFBc0I7WUFtQm5DLGVBQXlDO1lBQXpDLDJFQUF5QztZQUk5QyxjQUVFO1lBRkYsZ0ZBRUU7WUFZa0UsZUFBYTtZQUFiLHdDQUFhO1lBZS9ELGVBQW1CO1lBQW5CLDhDQUFtQjtZQWtCRSxlQUFvQjtZQUFwQiw2Q0FBb0I7WUFDdEIsZUFBOEQ7WUFBOUQscURBQThEO1lBR2xHLGVBQWdDO1lBQWhDLHFEQUFnQztZQUdoQyxjQUFpQztZQUFqQyxzREFBaUM7WUFHN0IsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQWlDO1lBQWpDLHNEQUFpQztZQUlMLGNBQXVFO1lBQXZFLHlHQUF1RTtZQU8xRyxjQUE0QjtZQVc1QixBQURBLEFBREEsQUFEQSxBQUxBLEFBSEEsOENBQTRCLCtDQUdjLHdDQUtQLDBCQUNWLHdCQUNGLGtDQUNNOzs7aUZENUh4Qix1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxZQUFZOztzQkF5RlQsTUFBTTt1QkFBQyxjQUFjO2dEQUZtRCx1QkFBdUI7a0JBQTNHLFNBQVM7bUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTs7a0ZBbkZ4RSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvc2RwLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0TW9udGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3RvYXN0XCI7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFR6RGF0ZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjJcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcblxuZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10ei1zZHBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBkYXRhID0gc2lnbmFsPElEYXRlUGlja2VyRGF0YT4odGhpcy5pbmplY3RlZERhdGEpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRhdGEoKS5kcENvbmZpZztcbiAgICBpZiAoY29uZmlnPy50aW1lem9uZSkge1xuICAgICAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIHRpbWV6b25lLWF3YXJlIGRheWpzIGluc3RhbmNlXG4gICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKS50eihjb25maWcudGltZXpvbmUpO1xuICAgIH1cbiAgICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgc3RhbmRhcmQgZGF5anMgaW5zdGFuY2VcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByYXdXZWVrRGF5czogc3RyaW5nW10gPSBbXCJTVU5cIiwgXCJNT05cIiwgXCJUVUVcIiwgXCJXRURcIiwgXCJUSFVcIiwgXCJGUklcIiwgXCJTQVRcIl07XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlcyA9IHNpZ25hbDxJU1NlbGVjdGVkRGF0ZXNDb25maWdbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UgPSBzaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPih7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGF0ZXNWYWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gVmFsaWQgaWYgYXQgbGVhc3Qgb25lIHNwZWNpZmljIGRhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIC8vIFZhbGlkIGlmIGJvdGggc3RhcnQgYW5kIGVuZCBkYXRlIG9mIHRoZSByYW5nZSBhcmUgc2V0XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgcmV0dXJuICEhKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpO1xuICB9KTtcblxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlbkVsZW1lbnQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUgPSBzaWduYWwoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uU3RhcnRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJ1NwZWNpZmljIERhdGUocyknKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVQaWNrZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmdbXT4oWydTcGVjaWZpYyBEYXRlKHMpJywnRGF0ZSBSYW5nZSddKTtcbiAgXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkubW9udGgoKSA6IGRheWpzKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS55ZWFyKCkgOiBkYXlqcygpLnllYXIoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSA6IGRheWpzKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkgOiBkYXlqcygpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIFxuXG4gIHB1YmxpYyByZWFkb25seSB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yYXdXZWVrRGF5cy5tYXAoKGRheSwgaW5kZXgpID0+ICh7XG4gICAgICBsYWJlbDogYCR7ZGF5WzBdfSR7ZGF5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGlzQ3VycmVudERheTogdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5uZXh0TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9kYXlNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgaWYgKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2Uuc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2UuZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGlmIChzdGFydC5pc1ZhbGlkKCkgJiYgZW5kLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsICdkYXknKSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJldmlvdXNNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWluRGF0ZS5pc1ZhbGlkKCkgJiYgbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRNb250aERhdGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIoKSwgdGhpcy5uZXh0WWVhck51bWJlcigpKTtcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZCgnc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0pIHNpbmdsZURhdGVQaWNrZXJFbGVtZW50ITogVHpEYXRlcGlja2VyRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSkge1xuICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnNldCh0aGlzLmRhdGEoKS5kYXRlcyk7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS5zZXQodGhpcy5pbmplY3RlZERhdGEuZGF0ZXNSYW5nZSB8fCB7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG4gICAgdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU1BpY2tlclNlbGVjdGVkKTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldCghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy5zaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkU3RhcnREYXRlOiBEYXlqcztcbiAgICAgIGlmICghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpPy5bMF0/LnNlbGVjdGVkRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxlY3RlZFN0YXJ0RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUueWVhcigpKTtcbiAgICAgICAgdGhpcy5uZXh0WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmdldChcIm1vbnRoXCIpKTtcbiAgICAgICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgICAgfVxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGUpIHtcbiAgICAgICAgY29uc3QgcGlja2VyVmFsdWUgPSAnU2luZ2xlIERhdGUnO1xuICAgICAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlclZhbHVlKCkuaW5jbHVkZXMocGlja2VyVmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5kYXRlUGlja2VyVmFsdWUudXBkYXRlKGN1cnJlbnRWYWx1ZSA9PiBbcGlja2VyVmFsdWUsIC4uLmN1cnJlbnRWYWx1ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUocGlja2VyVmFsdWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVTZWxlY3RlZFZhbHVlLnNldCh0aGlzLmRhdGEoKS5kYXRlc1swXT8uc2VsZWN0ZWREYXRlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhKCk/LmRwQ29uZmlnPy5mb3JtYXQpIHtcbiAgICAgIHRoaXMuZGF0YSgpLmRwQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRhdGEoKS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0ZXMobW9udGg6IG51bWJlciwgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcik6IElDdXJyZW50TW9udGhEYXRlc1tdIHtcbiAgICBjb25zdCBkYXRlczogSUN1cnJlbnRNb250aERhdGVzW10gPSBbXTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgXG4gICAgZm9yIChsZXQgY3VycmVudERhdGUgPSAxOyBjdXJyZW50RGF0ZSA8PSBkYXlzSW5Nb250aDsgY3VycmVudERhdGUrKykge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpO1xuICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhKCkuZGF0ZXNEaXNhYmxlZC5zb21lKGQgPT4gZCA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBtaW5EYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1pbkRhdGUuaXNBZnRlcihkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWF4RGF0ZS5pc0JlZm9yZShkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNDdXJyZW50RGF5ID0gZGF0ZS5pc1NhbWUodGhpcy5kYXlqc0luc3RhbmNlKCkoKSwgJ2RheScpO1xuICAgICAgbGV0IGlzU2VsZWN0ZWREYXkgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLnNvbWUoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkU3RhcnREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZEVuZERheSA9ICEhdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZTtcbiAgICAgIGNvbnN0IGluUmFuZ2VEYXkgPSAhISh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS5pc0JldHdlZW4odGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgJ2RheScsICcoKScpO1xuXG4gICAgICBjb25zdCBpc0hvbGlkYXkgPSB0aGlzLmRhdGEoKS5ob2xpZGF5cy5pbmNsdWRlcyhkYXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IGlzV2Vla09mZiA9IHRoaXMuZGF0YSgpLndlZWtPZmZzLmluY2x1ZGVzKGRhdGUuZm9ybWF0KCdkZGQnKSk7XG5cbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIGlzSG9saWRheSxcbiAgICAgICAgaXNXZWVrT2ZmLFxuICAgICAgICB0b2FzdE1lc3NhZ2U6IHRoaXMuZGF0YSgpLm1lc3NhZ2VzLmZpbmQocSA9PiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSBxLmRhdGUpPy5tZXNzYWdlIHx8IFwiXCIsXG4gICAgICAgIGlzRGlzYWJsZWREYXlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBkYXRlc1swXT8ud2Vla0RheSB8fCAwOyBpID4gMDsgaS0tKSB7XG4gICAgICBkYXRlcy51bnNoaWZ0KHsgZGF0ZTogMCwgd2Vla0RheTogaSAtIDEgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGxldCB0aGlzTW9udGg6IERheWpzID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGgubW9udGgoKSk7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQodGhpc01vbnRoLnllYXIoKSk7XG4gICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIH1cblxuICBzZWxlY3REYXkoZnJvbTogXCJMRUZUXCIgfCBcIlJJR0hUXCIsIGRheTogSUN1cnJlbnRNb250aERhdGVzKTogdm9pZCB7XG4gICAgaWYgKGRheS5kYXRlIDw9IDAgfHwgZGF5LmlzRGlzYWJsZWREYXkpIHtcbiAgICAgIGlmIChkYXkudG9hc3RNZXNzYWdlKSB0aGlzLnRvYXN0LmRpc3BsYXlNc2coZGF5LnRvYXN0TWVzc2FnZSwgNDAwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpXG4gICAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgICAgLmRhdGUoZGF5LmRhdGUpLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudC5maW5kSW5kZXgoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIFxuICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudC5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gZXhpc3RpbmdJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5jdXJyZW50LCB7IHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvbiB9XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXlqc0RheSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKClcbiAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAuZGF0ZShkYXkuZGF0ZSk7XG4gICAgICBcbiAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydGVkKCkpIHtcbiAgICAgICAgICBpZiAoZGF5anNEYXkuaXNCZWZvcmUodGhpcy5kYXlqc0luc3RhbmNlKCkoY3VycmVudC5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIFwiZGF5XCIpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50LCBlbmREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhcHBseURhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKSk7XG4gIH1cblxuICBhcHBseURhdGVzUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKSk7XG4gIH1cblxuICBvblNpbmdsZURhdGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0YTogSVNTZWxlY3RlZERhdGVzQ29uZmlnID0geyBzZWxlY3RlZERhdGU6IGV2ZW50IH07XG4gICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UoW3NlbGVjdGVkRGF0YV0pO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5vcGVuRWxlbWVudC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiRGF0ZSBSYW5nZVwiKTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU3BlY2lmaWMgRGF0ZShzKVwiKTtcbiAgICBcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGV2ZW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCI+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpXCI+XG4gICAgICA8bWlzLXJhZGlvIGNsYXNzPVwiaW5wdXRcIiBbbmFtZV09XCInZGF0ZVNlbGVjdGlvbidcIiBbdmFsdWVdPVwicGlja2VyXCIgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVBpY2tlcigkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj48L21pcy1yYWRpbz5cbiAgICAgIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSA/ICdub25lJyA6ICcnfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIiA+XG4gICAgICAgICAgICA8c3BhbiA+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIj5cbiAgICA8c3Bhbj5XZWVrbHkgb2ZmczogPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtPZmYgb2YgZGF0YSgpLndlZWtPZmZzOyBsZXQgbGFzdCA9IGxhc3RcIj57e3dlZWtPZmZ9fSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuID5Ib2xpZGF5cyA8c3BhbiBjbGFzcz1cImNpcmN1bGFyLWRvdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj5cbiAgICAgIDxzcGFuPnt7bG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RofX08L3NwYW4+IGRheShzKSBzZWxlY3RlZFxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiPjxzcGFuPnt7ZGF0ZVJhbmdlTGVuZ3RoKCkgPiAwID8gZGF0ZVJhbmdlTGVuZ3RoKCkgOiAwIH19IDwvc3Bhbj5kYXkocykgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9hY3Rpb25fYnRuXCI+XG4gICAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCIgPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCIgPkFwcGx5PC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiID5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=
|
|
@@ -13,9 +13,7 @@ export class SwitchComponent {
|
|
|
13
13
|
effect(() => {
|
|
14
14
|
const ctrl = this.control();
|
|
15
15
|
const val = !!this.checked();
|
|
16
|
-
|
|
17
|
-
ctrl.setValue(val, { emitEvent: false });
|
|
18
|
-
}
|
|
16
|
+
ctrl.setValue(val, { emitEvent: false });
|
|
19
17
|
});
|
|
20
18
|
// keep control in sync with disabled
|
|
21
19
|
effect(() => {
|
|
@@ -51,4 +49,4 @@ export class SwitchComponent {
|
|
|
51
49
|
type: Output
|
|
52
50
|
}] }); })();
|
|
53
51
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SwitchComponent, { className: "SwitchComponent" }); })();
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvc3dpdGNoL3N3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9yRSxNQUFNLE9BQU8sZUFBZTtJQVExQjtRQVBBLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsWUFBTyxHQUFNLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxhQUFRLEdBQUssS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25DLFlBQU8sR0FBRyxLQUFLLENBQWtCLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV0RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHbkQsb0NBQW9DO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgscUNBQXFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7O2dCQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO2dIQTNCVSxlQUFlO29FQUFmLGVBQWU7WUNQMUIsQUFERixnQ0FBdUosZUFDNUU7WUFBeEIsNkZBQVUsY0FBVSxJQUFDO1lBQXRFLGlCQUF5RTtZQUN6RSwwQkFBNEI7WUFDOUIsaUJBQVE7O1lBSGlFLDhGQUE2RTtZQUF6SCx3REFBMkM7WUFDL0MsY0FBeUI7WUFBekIsMkNBQXlCOzs7aUZET3JDLGVBQWU7Y0FMM0IsU0FBUzsyQkFDRSxZQUFZO29CQVVaLFlBQVk7a0JBQXJCLE1BQU07O2tGQU5JLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbnB1dCwgZWZmZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtc3dpdGNoXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3dpdGNoLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9zd2l0Y2guY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgU3dpdGNoQ29tcG9uZW50IHtcbiAgbW9iaWxlVmlldyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY2hlY2tlZCAgICA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzYWJsZWQgICA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY29udHJvbCA9IGlucHV0PEFic3RyYWN0Q29udHJvbD4obmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSkpO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8ga2VlcCBjb250cm9sIGluIHN5bmMgd2l0aCBjaGVja2VkXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2woKTtcbiAgICAgIGNvbnN0IHZhbCA9ICEhdGhpcy5jaGVja2VkKCk7XG4gICAgICBjdHJsLnNldFZhbHVlKHZhbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pO1xuXG4gICAgLy8ga2VlcCBjb250cm9sIGluIHN5bmMgd2l0aCBkaXNhYmxlZFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjdHJsID0gdGhpcy5jb250cm9sKCk7XG4gICAgICBjb25zdCBkaXMgPSAhIXRoaXMuZGlzYWJsZWQoKTtcbiAgICAgIGlmIChkaXMgfHwgY3RybC5kaXNhYmxlZCkgY3RybC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIGVsc2UgY3RybC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25DaGFuZ2UoKTogdm9pZHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuY29udHJvbCgpLnZhbHVlKTtcbiAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwidG9nZ2xlLXN3aXRjaFwiIFtjbGFzcy50b2dnbGUtc3dpdGNoLW1vYmlsZV09XCJtb2JpbGVWaWV3KClcIiBbc3R5bGUuY3Vyc29yXT1cImRpc2FibGVkKCkgfHwgY29udHJvbCgpLmRpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiPlxuICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2woKVwiIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiIC8+XG4gIDxzcGFuIGNsYXNzPVwic2xpZGVyXCI+PC9zcGFuPlxuPC9sYWJlbD5cbiJdfQ==
|