ngx-tethys 17.0.5 → 17.0.7
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/CHANGELOG.md +27 -1
- package/date-picker/abstract-picker.component.d.ts +8 -1
- package/date-picker/date-picker.config.d.ts +1 -0
- package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
- package/date-picker/picker.util.d.ts +2 -0
- package/esm2022/cascader/cascader.component.mjs +3 -3
- package/esm2022/date-picker/abstract-picker.component.mjs +20 -10
- package/esm2022/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/date-picker/date-picker.config.mjs +2 -1
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +7 -4
- package/esm2022/date-picker/month-picker.component.mjs +3 -3
- package/esm2022/date-picker/picker.util.mjs +14 -2
- package/esm2022/date-picker/quarter-picker.component.mjs +3 -3
- package/esm2022/date-picker/range-picker.component.mjs +3 -3
- package/esm2022/date-picker/week-picker.component.mjs +3 -3
- package/esm2022/date-picker/year-picker.component.mjs +3 -3
- package/esm2022/pagination/pagination.class.mjs +1 -1
- package/esm2022/pagination/pagination.component.mjs +15 -3
- package/esm2022/pagination/pagination.config.mjs +3 -2
- package/esm2022/segment/segment.component.mjs +28 -16
- package/esm2022/table/table-skeleton.component.mjs +4 -4
- package/esm2022/table/table.component.mjs +6 -4
- package/esm2022/util/helpers/helpers.mjs +2 -2
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +49 -24
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +16 -3
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +26 -14
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +8 -6
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +1 -1
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/pagination/pagination.class.d.ts +4 -0
- package/pagination/pagination.component.d.ts +6 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment.component.d.ts +4 -2
- package/segment/styles/segment.scss +10 -0
- package/styles/variables.scss +3 -0
- package/table/table.component.d.ts +3 -1
- package/util/helpers/helpers.d.ts +1 -1
|
@@ -6,7 +6,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
6
6
|
import { ThyButtonIcon } from 'ngx-tethys/button';
|
|
7
7
|
import { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';
|
|
8
8
|
import { ThyDatePickerConfigService } from '../../date-picker.service';
|
|
9
|
-
import { dateAddAmount, getShortcutValue, hasValue, makeValue, transformDateValue } from '../../picker.util';
|
|
9
|
+
import { dateAddAmount, getShortcutValue, hasValue, makeValue, setValueByTimestampPrecision, transformDateValue } from '../../picker.util';
|
|
10
10
|
import { CalendarFooter } from '../calendar/calendar-footer.component';
|
|
11
11
|
import { DateCarousel } from '../date-carousel/date-carousel.component';
|
|
12
12
|
import { InnerPopup } from './inner-popup.component';
|
|
@@ -476,9 +476,10 @@ export class DatePopup {
|
|
|
476
476
|
selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate);
|
|
477
477
|
}
|
|
478
478
|
this.setValue(selectedPresetValue);
|
|
479
|
+
const shortcutPresetsValue = setValueByTimestampPrecision(shortcutPresets?.value, this.isRange, this.timestampPrecision);
|
|
479
480
|
this.dateValueChange.emit({
|
|
480
481
|
value: helpers.isArray(value) ? this.selectedValue : selectedPresetValue,
|
|
481
|
-
triggerPreset: shortcutPresets
|
|
482
|
+
triggerPreset: Object.assign({}, shortcutPresets, { value: shortcutPresetsValue })
|
|
482
483
|
});
|
|
483
484
|
if (!helpers.isArray(value) && this.showTime && this.showTimePicker) {
|
|
484
485
|
this.updateActiveDate();
|
|
@@ -488,7 +489,7 @@ export class DatePopup {
|
|
|
488
489
|
return index;
|
|
489
490
|
}
|
|
490
491
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DatePopup, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ThyDatePickerConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
491
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: DatePopup, isStandalone: true, selector: "date-popup", inputs: { isRange: "isRange", showWeek: "showWeek", format: "format", disabledDate: "disabledDate", minDate: "minDate", maxDate: "maxDate", showToday: "showToday", showTime: "showTime", mustShowTime: "mustShowTime", dateRender: "dateRender", className: "className", panelMode: "panelMode", value: "value", defaultPickerValue: "defaultPickerValue", showShortcut: "showShortcut", shortcutPresets: "shortcutPresets", shortcutPosition: "shortcutPosition", flexible: "flexible", flexibleDateGranularity: "flexibleDateGranularity" }, outputs: { panelModeChange: "panelModeChange", calendarChange: "calendarChange", valueChange: "valueChange", resultOk: "resultOk", showTimePickerChange: "showTimePickerChange", dateValueChange: "dateValueChange" }, exportAs: ["datePopup"], usesOnChanges: true, ngImport: i0, template: "<div class=\"{{ prefixCls }}-picker-container {{ className }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek ? prefixCls + '-week-number' : '' }}\n {{ isRange ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition === 'left' ? 'left' : 'bottom' }}\">\n <div class=\"{{ prefixCls }}-picker-shortcut\" *ngIf=\"showShortcut\">\n <div\n class=\"{{ prefixCls }}-picker-shortcut-item\"\n [class.disabled]=\"item.disabled\"\n *ngFor=\"let item of innerShortcutPresets; trackBy: trackByFn\"\n (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n </div>\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n <ng-container *ngIf=\"flexible; else defaultPanel\">\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\"\n >\u9AD8\u7EA7\u9009\u9879</a\n >\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\"\n >\u81EA\u5B9A\u4E49</a\n >\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <ng-template #defaultPanel>\n <ng-container *ngIf=\"isRange; else tplSinglePart\">\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isRange\">\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek\"\n [isRange]=\"isRange\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [hoverValue]=\"hoverValue\"\n [enablePrev]=\"enablePrevNext('prev', partType)\"\n [enableNext]=\"enablePrevNext('next', partType)\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime\"\n [mustShowTime]=\"mustShowTime\"\n [value]=\"value\"\n [disableTimeConfirm]=\"disableTimeConfirm\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n<ng-template #tplSinglePart>\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyNav, selector: "thy-nav", inputs: ["thyType", "thySize", "thyHorizontal", "thyVertical", "thyFill", "thyResponsive", "thyInsideClosable", "thyExtra"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "component", type: ThyButtonIcon, selector: "thy-button-icon,[thy-button-icon],[thyButtonIcon]", inputs: ["thySize", "thyIcon", "thyButtonIcon", "thyShape", "thyLight", "thyActive", "thyTheme", "thyColor"] }, { kind: "component", type: DateCarousel, selector: "date-carousel", inputs: ["activeDate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InnerPopup, selector: "inner-popup", inputs: ["showWeek", "isRange", "activeDate", "rangeActiveDate", "enablePrev", "enableNext", "disabledDate", "dateRender", "selectedValue", "hoverValue", "panelMode", "showDateRangeInput", "partType", "endPanelMode", "value"], outputs: ["panelModeChange", "headerChange", "selectDate", "dayHover"], exportAs: ["innerPopup"] }, { kind: "component", type: CalendarFooter, selector: "calendar-footer", inputs: ["showTime", "mustShowTime", "value", "disableTimeConfirm"], outputs: ["selectTime", "clickOk", "clickRemove", "showTimePickerChange"], exportAs: ["calendarFooter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
492
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: DatePopup, isStandalone: true, selector: "date-popup", inputs: { isRange: "isRange", showWeek: "showWeek", format: "format", disabledDate: "disabledDate", minDate: "minDate", maxDate: "maxDate", showToday: "showToday", showTime: "showTime", mustShowTime: "mustShowTime", dateRender: "dateRender", className: "className", panelMode: "panelMode", value: "value", defaultPickerValue: "defaultPickerValue", showShortcut: "showShortcut", shortcutPresets: "shortcutPresets", shortcutPosition: "shortcutPosition", flexible: "flexible", flexibleDateGranularity: "flexibleDateGranularity", timestampPrecision: "timestampPrecision" }, outputs: { panelModeChange: "panelModeChange", calendarChange: "calendarChange", valueChange: "valueChange", resultOk: "resultOk", showTimePickerChange: "showTimePickerChange", dateValueChange: "dateValueChange" }, exportAs: ["datePopup"], usesOnChanges: true, ngImport: i0, template: "<div class=\"{{ prefixCls }}-picker-container {{ className }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek ? prefixCls + '-week-number' : '' }}\n {{ isRange ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition === 'left' ? 'left' : 'bottom' }}\">\n <div class=\"{{ prefixCls }}-picker-shortcut\" *ngIf=\"showShortcut\">\n <div\n class=\"{{ prefixCls }}-picker-shortcut-item\"\n [class.disabled]=\"item.disabled\"\n *ngFor=\"let item of innerShortcutPresets; trackBy: trackByFn\"\n (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n </div>\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n <ng-container *ngIf=\"flexible; else defaultPanel\">\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\"\n >\u9AD8\u7EA7\u9009\u9879</a\n >\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\"\n >\u81EA\u5B9A\u4E49</a\n >\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <ng-template #defaultPanel>\n <ng-container *ngIf=\"isRange; else tplSinglePart\">\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isRange\">\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek\"\n [isRange]=\"isRange\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [hoverValue]=\"hoverValue\"\n [enablePrev]=\"enablePrevNext('prev', partType)\"\n [enableNext]=\"enablePrevNext('next', partType)\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime\"\n [mustShowTime]=\"mustShowTime\"\n [value]=\"value\"\n [disableTimeConfirm]=\"disableTimeConfirm\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n<ng-template #tplSinglePart>\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyNav, selector: "thy-nav", inputs: ["thyType", "thySize", "thyHorizontal", "thyVertical", "thyFill", "thyResponsive", "thyInsideClosable", "thyExtra"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "component", type: ThyButtonIcon, selector: "thy-button-icon,[thy-button-icon],[thyButtonIcon]", inputs: ["thySize", "thyIcon", "thyButtonIcon", "thyShape", "thyLight", "thyActive", "thyTheme", "thyColor"] }, { kind: "component", type: DateCarousel, selector: "date-carousel", inputs: ["activeDate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InnerPopup, selector: "inner-popup", inputs: ["showWeek", "isRange", "activeDate", "rangeActiveDate", "enablePrev", "enableNext", "disabledDate", "dateRender", "selectedValue", "hoverValue", "panelMode", "showDateRangeInput", "partType", "endPanelMode", "value"], outputs: ["panelModeChange", "headerChange", "selectDate", "dayHover"], exportAs: ["innerPopup"] }, { kind: "component", type: CalendarFooter, selector: "calendar-footer", inputs: ["showTime", "mustShowTime", "value", "disableTimeConfirm"], outputs: ["selectTime", "clickOk", "clickRemove", "showTimePickerChange"], exportAs: ["calendarFooter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
492
493
|
}
|
|
493
494
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DatePopup, decorators: [{
|
|
494
495
|
type: Component,
|
|
@@ -542,6 +543,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
542
543
|
type: Input
|
|
543
544
|
}], flexibleDateGranularity: [{
|
|
544
545
|
type: Input
|
|
546
|
+
}], timestampPrecision: [{
|
|
547
|
+
type: Input
|
|
545
548
|
}], panelModeChange: [{
|
|
546
549
|
type: Output
|
|
547
550
|
}], calendarChange: [{
|
|
@@ -555,4 +558,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
555
558
|
}], dateValueChange: [{
|
|
556
559
|
type: Output
|
|
557
560
|
}] } });
|
|
558
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL3BvcHVwcy9kYXRlLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9saWIvcG9wdXBzL2RhdGUtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFnQixRQUFRLEVBQXdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkksT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFhN0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFckQ7O0dBRUc7QUFxQkgsTUFBTSxPQUFPLFNBQVM7SUFzRGxCLElBQUksYUFBYTtRQUNiLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQVdELFlBQW9CLEdBQXNCLEVBQVUsdUJBQW1EO1FBQW5GLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQS9CcEYsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUNwRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ3JELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDdkUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUMsQ0FBQyx3Q0FBd0M7UUFDN0UseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBRTVFLGNBQVMsR0FBRyxjQUFjLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsa0JBQWEsR0FBZSxFQUFFLENBQUMsQ0FBQyxhQUFhO1FBQzdDLGVBQVUsR0FBZSxFQUFFLENBQUMsQ0FBQyxhQUFhO1FBSTFDLHNCQUFpQixHQUEwQixVQUFVLENBQUM7UUFLOUMsZ0JBQVcsR0FBOEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztRQVF2RSx1QkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFK0UsQ0FBQztJQUUzRyxXQUFXLENBQTRCLEdBQU0sRUFBRSxLQUFjO1FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLHVCQUF1QixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHO2dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsZUFBZSxFQUFFLElBQUksQ0FBQyx1QkFBdUI7YUFDaEQsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFFbEcsSUFBSSxDQUFDLFlBQVk7WUFDYixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdGLENBQUMsQ0FBQyxZQUFZO2dCQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1lBQ3RGLENBQUM7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzdHLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFaEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFbkQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTt3QkFDNUQsTUFBTSxLQUFLLEdBQWtCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDL0QsTUFBTSxTQUFTLEdBQVcsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBRXBFLE1BQU0sR0FBRyxHQUFrQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzdELE1BQU0sT0FBTyxHQUFXLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUU5RCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs0QkFDckUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQzNCLENBQUM7NkJBQU0sQ0FBQzs0QkFDSixNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDNUIsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTt3QkFDNUQsTUFBTSxXQUFXLEdBQWtCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUF5QixDQUFDLENBQUM7d0JBQ3RGLE1BQU0sVUFBVSxHQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUUvRCxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs0QkFDekUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQzNCLENBQUM7NkJBQU0sQ0FBQzs0QkFDSixNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDNUIsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQW1CLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFtQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBaUIsQ0FBQyxDQUFDO1FBQy9ILENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN2QyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLE9BQWlCLENBQUM7UUFDdEIsSUFBSSxPQUFpQixDQUFDO1FBQ3RCLElBQUksY0FBOEIsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNwQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixVQUFVLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLFVBQVUsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxjQUFjLElBQUksT0FBTyxjQUFjLEtBQUssVUFBVSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hFLFVBQVUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFhO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBZTtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSwrQ0FBK0M7WUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdFQUF3RTtZQUM1RyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFrQixFQUFFLFFBQXdCO1FBQzFELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFNBQTRCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQy9FLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWUsRUFBRSxRQUF3QjtRQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUN0QyxJQUFJLENBQUMsVUFBd0IsRUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBaUIsQ0FDakUsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBZSxFQUFFLFFBQXdCO1FBQ2xELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsNkJBQTZCO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUE2QjtRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDbEIsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtZQUNULGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1NBQ2hELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxLQUF5QjtRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDdEIsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFlLEVBQUUsUUFBd0I7UUFDM0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztZQUVoQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUEyQixDQUFDO1lBRXZELElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLDZEQUE2RDtnQkFDN0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsQ0FBQztpQkFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN4QixvRkFBb0Y7Z0JBQ3BGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPO2dCQUNoRSxJQUFJLENBQUMsYUFBYSxHQUFHO29CQUNqQixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzNELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQWlCLENBQ2pFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDakQsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxZQUFZO2FBQ3RCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBZTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFpQixDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFakcsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0RSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUEwQixFQUFFLFFBQXdCO1FBQy9ELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2RCxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUF3QixDQUFDO1lBQ25ELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0RBQWtEO1lBQy9HLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2xHLE9BQU8sVUFBVSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXdDLEVBQUUsUUFBd0I7UUFDM0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQWlCLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLFNBQXlCLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxRQUF3QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQywrRUFBK0U7WUFDckgsT0FBUSxTQUF3QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsS0FBaUIsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUF3QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLFVBQXNCLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUEwQixNQUFNO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sY0FBYztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlGLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUYsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFzQjtRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNmLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNiLGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2FBQ2hELENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLE9BQU87UUFDdkUsTUFBTSxXQUFXLEdBQTZDO1lBQzFELElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsTUFBTTtZQUNiLE9BQU8sRUFBRSxNQUFNO1lBQ2YsSUFBSSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUN6QyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFrQyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUF1QixFQUFFLEtBQWU7UUFDMUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQTJCLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFpQjtRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFlLENBQUM7SUFDdEYsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLElBQUksR0FBYSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5RSxNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQWEsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRWhELElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRU8seUJBQXlCLENBQUMsSUFBcUI7UUFDbkQsTUFBTSxPQUFPLEdBQWEsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVoRCxNQUFNLE9BQU8sR0FBVyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDL0QsTUFBTSxPQUFPLEdBQVcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRS9ELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sU0FBUyxHQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEMsTUFBTSxTQUFTLEdBQVcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlDLE1BQU0sT0FBTyxHQUFXLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUxQyxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsT0FBTyxFQUFFLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksU0FBUyxHQUFHLE9BQU8sSUFBSSxPQUFPLElBQUksT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUNqRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFFRCxJQUFJLE9BQU8sSUFBSSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUVELElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFMUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLGVBQWtDO1FBQy9DLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksbUJBQW9DLENBQUM7UUFDekMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQWtCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sR0FBRyxHQUFrQixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0RCxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztvQkFDaEQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzlCLENBQWUsQ0FBQztnQkFFakIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxVQUFVLEdBQWtCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELE1BQU0sY0FBYyxHQUFhLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLG1CQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQWEsQ0FBQztRQUNyRixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7WUFDeEUsYUFBYSxFQUFFLGVBQWU7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQWpqQlEsU0FBUztrR0FBVCxTQUFTLDIxQkM5RHRCLCtsSkEyR0EsNENEekRRLElBQUksNkZBQ0osS0FBSyxtSEFDTCxNQUFNLGlMQUNOLG1CQUFtQiw4SUFDbkIsYUFBYSw0TUFDYixZQUFZLGlGQUNaLFdBQVcsK1ZBQ1gsZ0JBQWdCLG9KQUNoQixVQUFVLDZYQUNWLGNBQWM7OzJGQUdULFNBQVM7a0JBcEJyQixTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFFckMsWUFBWSxZQUNaLFdBQVcsY0FFVCxJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLE1BQU07d0JBQ04sbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsY0FBYztxQkFDakI7K0hBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRWEsZUFBZTtzQkFBakMsTUFBTTtnQkFDWSxjQUFjO3NCQUFoQyxNQUFNO2dCQUNZLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ1ksUUFBUTtzQkFBMUIsTUFBTTtnQkFDWSxvQkFBb0I7c0JBQXRDLE1BQU07Z0JBQ1ksZUFBZTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuZE9mRGF5LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25Qcm9wLCBUaW55RGF0ZSwgVGlueURhdGVDb21wYXJlR3JhaW4sIGhlbHBlcnMsIGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkT3JOdWxsLCBzb3J0UmFuZ2VWYWx1ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUJ1dHRvbkljb24gfSBmcm9tICduZ3gtdGV0aHlzL2J1dHRvbic7XG5pbXBvcnQgeyBUaHlOYXYsIFRoeU5hdkl0ZW1EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL25hdic7XG5pbXBvcnQgeyBUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGF0aWJsZVZhbHVlLCBEYXRlUGlja2VyRmxleGlibGVUYWIsIFJhbmdlQWR2YW5jZWRWYWx1ZSwgUmFuZ2VQYXJ0VHlwZSB9IGZyb20gJy4uLy4uL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IGRhdGVBZGRBbW91bnQsIGdldFNob3J0Y3V0VmFsdWUsIGhhc1ZhbHVlLCBtYWtlVmFsdWUsIHRyYW5zZm9ybURhdGVWYWx1ZSB9IGZyb20gJy4uLy4uL3BpY2tlci51dGlsJztcbmltcG9ydCB7XG4gICAgQ29tcGF0aWJsZURhdGUsXG4gICAgQ29tcGF0aWJsZVByZXNldHMsXG4gICAgRGlzYWJsZWREYXRlRm4sXG4gICAgU3VwcG9ydFRpbWVPcHRpb25zLFxuICAgIFRoeURhdGVDaGFuZ2VFdmVudCxcbiAgICBUaHlEYXRlR3JhbnVsYXJpdHksXG4gICAgVGh5UGFuZWxNb2RlLFxuICAgIFRoeVNob3J0Y3V0UG9zaXRpb24sXG4gICAgVGh5U2hvcnRjdXRQcmVzZXQsXG4gICAgVGh5U2hvcnRjdXRWYWx1ZVxufSBmcm9tICcuLi8uLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckZvb3RlciB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUNhcm91c2VsIH0gZnJvbSAnLi4vZGF0ZS1jYXJvdXNlbC9kYXRlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbm5lclBvcHVwIH0gZnJvbSAnLi9pbm5lci1wb3B1cC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkYXRlLXBvcHVwJyxcbiAgICBleHBvcnRBczogJ2RhdGVQb3B1cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGh5TmF2LFxuICAgICAgICBUaHlOYXZJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUaHlCdXR0b25JY29uLFxuICAgICAgICBEYXRlQ2Fyb3VzZWwsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBJbm5lclBvcHVwLFxuICAgICAgICBDYWxlbmRhckZvb3RlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBvcHVwIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlzUmFuZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1dlZWs6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZERhdGU6IERpc2FibGVkRGF0ZUZuO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudW1iZXI7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bWJlcjtcbiAgICBASW5wdXQoKSBzaG93VG9kYXk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlK/mjIHorr7nva7ml7bpl7Qo5pe244CB5YiGKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUaW1lOiBTdXBwb3J0VGltZU9wdGlvbnMgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pe26Ze0KOaXtuOAgeWIhilcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtdXN0U2hvd1RpbWU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkYXRlUmVuZGVyOiBGdW5jdGlvblByb3A8VGVtcGxhdGVSZWY8RGF0ZT4gfCBzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBhbmVsTW9kZTogVGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW107XG4gICAgQElucHV0KCkgdmFsdWU6IENvbXBhdGlibGVWYWx1ZTtcbiAgICBASW5wdXQoKSBkZWZhdWx0UGlja2VyVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgbnVtYmVyO1xuXG4gICAgQElucHV0KCkgc2hvd1Nob3J0Y3V0OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvcnRjdXRQcmVzZXRzOiBDb21wYXRpYmxlUHJlc2V0cztcblxuICAgIEBJbnB1dCgpIHNob3J0Y3V0UG9zaXRpb246IFRoeVNob3J0Y3V0UG9zaXRpb247XG5cbiAgICBASW5wdXQoKSBmbGV4aWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG5cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgcGFuZWxNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXT4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2FsZW5kYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBhdGlibGVWYWx1ZT4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBhdGlibGVWYWx1ZSB8IFJhbmdlQWR2YW5jZWRWYWx1ZT4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVzdWx0T2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7IC8vIEVtaXR0ZWQgd2hlbiBkb25lIHdpdGggZGF0ZSBzZWxlY3RpbmdcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2hvd1RpbWVQaWNrZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRhdGVWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5RGF0ZUNoYW5nZUV2ZW50PigpO1xuXG4gICAgcHJlZml4Q2xzID0gJ3RoeS1jYWxlbmRhcic7XG4gICAgc2hvd1RpbWVQaWNrZXIgPSBmYWxzZTtcbiAgICB0aW1lT3B0aW9uczogU3VwcG9ydFRpbWVPcHRpb25zIHwgU3VwcG9ydFRpbWVPcHRpb25zW10gfCBudWxsO1xuICAgIGFjdGl2ZURhdGU6IFRpbnlEYXRlIHwgVGlueURhdGVbXTtcbiAgICBzZWxlY3RlZFZhbHVlOiBUaW55RGF0ZVtdID0gW107IC8vIFJhbmdlIE9OTFlcbiAgICBob3ZlclZhbHVlOiBUaW55RGF0ZVtdID0gW107IC8vIFJhbmdlIE9OTFlcblxuICAgIGFkdmFuY2VkU2VsZWN0ZWRWYWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlOyAvLyBhZHZhbmNlZCBPTkxZXG5cbiAgICBmbGV4aWJsZUFjdGl2ZVRhYjogRGF0ZVBpY2tlckZsZXhpYmxlVGFiID0gJ2FkdmFuY2VkJztcblxuICAgIGdldCBoYXNUaW1lUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNob3dUaW1lO1xuICAgIH1cbiAgICBwcml2YXRlIHBhcnRUeXBlTWFwOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0geyBsZWZ0OiAwLCByaWdodDogMSB9O1xuXG4gICAgW3Byb3BlcnR5OiBzdHJpbmddOiBhbnk7XG5cbiAgICBlbmRQYW5lbE1vZGU6IFRoeVBhbmVsTW9kZSB8IFRoeVBhbmVsTW9kZVtdO1xuXG4gICAgaW5uZXJTaG9ydGN1dFByZXNldHM6IFRoeVNob3J0Y3V0UHJlc2V0W107XG5cbiAgICBkaXNhYmxlVGltZUNvbmZpcm0gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBkYXRlUGlja2VyQ29uZmlnU2VydmljZTogVGh5RGF0ZVBpY2tlckNvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgICBzZXRQcm9wZXJ0eTxUIGV4dGVuZHMga2V5b2YgRGF0ZVBvcHVwPihrZXk6IFQsIHZhbHVlOiB0aGlzW1RdKTogdm9pZCB7XG4gICAgICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0U2hvcnRjdXRQcmVzZXRzKCk7XG4gICAgICAgIHRoaXMuaW5pdFBhbmVsTW9kZSgpO1xuICAgICAgICBpZiAodGhpcy5mbGV4aWJsZSAmJiB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID09PSAnZGF5Jykge1xuICAgICAgICAgICAgdGhpcy5mbGV4aWJsZUFjdGl2ZVRhYiA9ICdjdXN0b20nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRQaWNrZXJWYWx1ZSAmJiAhaGFzVmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLmRlZmF1bHRQaWNrZXJWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbWFrZVZhbHVlKHZhbHVlLCB0aGlzLmlzUmFuZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRGF0ZSgpO1xuICAgICAgICB0aGlzLmluaXREaXNhYmxlZERhdGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSAmJiB0aGlzLmZsZXhpYmxlICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRTZWxlY3RlZFZhbHVlID0ge1xuICAgICAgICAgICAgICAgIGJlZ2luOiB0aGlzLnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgIGVuZDogdGhpcy52YWx1ZVsxXSxcbiAgICAgICAgICAgICAgICBkYXRlR3JhbnVsYXJpdHk6IHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnBhbmVsTW9kZSkge1xuICAgICAgICAgICAgaWYgKGhlbHBlcnMuaXNBcnJheSh0aGlzLnBhbmVsTW9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBhbmVsTW9kZSA9IFsuLi50aGlzLnBhbmVsTW9kZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUGFuZWxNb2RlID0gdGhpcy5wYW5lbE1vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZGVmYXVsdFBpY2tlclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZURhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy52YWx1ZSAmJiBjaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0U2hvcnRjdXRQcmVzZXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHNob3J0Y3V0UmFuZ2VzUHJlc2V0cywgc2hvcnRjdXREYXRlUHJlc2V0cywgc2hvd1Nob3J0Y3V0IH0gPSB0aGlzLmRhdGVQaWNrZXJDb25maWdTZXJ2aWNlO1xuXG4gICAgICAgIHRoaXMuc2hvd1Nob3J0Y3V0ID1cbiAgICAgICAgICAgIFsnZGF0ZScsICdkYXRlLGRhdGUnXS5pbmNsdWRlcyh0aGlzLnBhbmVsTW9kZS50b1N0cmluZygpKSAmJiBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzLnNob3dTaG9ydGN1dClcbiAgICAgICAgICAgICAgICA/IHNob3dTaG9ydGN1dFxuICAgICAgICAgICAgICAgIDogdGhpcy5zaG93U2hvcnRjdXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd1Nob3J0Y3V0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvcnRjdXRQcmVzZXRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG9ydGN1dFByZXNldHMgPSB0aGlzLmlzUmFuZ2UgPyBzaG9ydGN1dFJhbmdlc1ByZXNldHMgOiBzaG9ydGN1dERhdGVQcmVzZXRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlubmVyU2hvcnRjdXRQcmVzZXRzID0gaXNGdW5jdGlvbih0aGlzLnNob3J0Y3V0UHJlc2V0cykgPyB0aGlzLnNob3J0Y3V0UHJlc2V0cygpIDogdGhpcy5zaG9ydGN1dFByZXNldHM7XG4gICAgICAgICAgICBpZiAodGhpcy5pbm5lclNob3J0Y3V0UHJlc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5EYXRlOiBUaW55RGF0ZSA9IHRoaXMuZ2V0TWluVGlueURhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhEYXRlOiBUaW55RGF0ZSA9IHRoaXMuZ2V0TWF4VGlueURhdGUoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1pblRpbWUgPSBtaW5EYXRlID8gbWluRGF0ZS5nZXRUaW1lKCkgOiBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFRpbWUgPSBtYXhEYXRlID8gbWF4RGF0ZS5nZXRUaW1lKCkgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyU2hvcnRjdXRQcmVzZXRzLmZvckVhY2goKHByZXNldDogVGh5U2hvcnRjdXRQcmVzZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZ2luOiBudW1iZXIgfCBEYXRlID0gZ2V0U2hvcnRjdXRWYWx1ZShwcmVzZXQudmFsdWVbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVnaW5UaW1lOiBudW1iZXIgPSBuZXcgVGlueURhdGUoc3RhcnRPZkRheShiZWdpbikpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kOiBudW1iZXIgfCBEYXRlID0gZ2V0U2hvcnRjdXRWYWx1ZShwcmVzZXQudmFsdWVbMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZTogbnVtYmVyID0gbmV3IFRpbnlEYXRlKGVuZE9mRGF5KGVuZCkpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtaW5EYXRlICYmIGVuZFRpbWUgPCBtaW5UaW1lKSB8fCAobWF4RGF0ZSAmJiBiZWdpblRpbWUgPiBtYXhUaW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyU2hvcnRjdXRQcmVzZXRzLmZvckVhY2goKHByZXNldDogVGh5U2hvcnRjdXRQcmVzZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpbmdsZVZhbHVlOiBudW1iZXIgfCBEYXRlID0gZ2V0U2hvcnRjdXRWYWx1ZShwcmVzZXQudmFsdWUgYXMgVGh5U2hvcnRjdXRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW5nbGVUaW1lOiBudW1iZXIgPSBuZXcgVGlueURhdGUoc2luZ2xlVmFsdWUpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtaW5EYXRlICYmIHNpbmdsZVRpbWUgPCBtaW5UaW1lKSB8fCAobWF4RGF0ZSAmJiBzaW5nbGVUaW1lID4gbWF4VGltZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWN0aXZlRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckhvdmVyVmFsdWUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy5kZWZhdWx0UGlja2VyVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1ha2VWYWx1ZSh2YWx1ZSwgdGhpcy5pc1JhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmxleGlibGUgfHwgdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eSA9PT0gJ2RheScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnZhbHVlIGFzIFRpbnlEYXRlW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLm5vcm1hbGl6ZVJhbmdlVmFsdWUodGhpcy52YWx1ZSBhcyBUaW55RGF0ZVtdLCB0aGlzLmdldFBhbmVsTW9kZSh0aGlzLmVuZFBhbmVsTW9kZSkgYXMgVGh5UGFuZWxNb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMudmFsdWUgYXMgVGlueURhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVUaW1lQ29uZmlybSgpO1xuICAgIH1cblxuICAgIGluaXRQYW5lbE1vZGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbmRQYW5lbE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkodGhpcy5wYW5lbE1vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQYW5lbE1vZGUgPSBbLi4udGhpcy5wYW5lbE1vZGVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBhbmVsTW9kZSA9IHRoaXMucGFuZWxNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhlbHBlcnMuaXNBcnJheSh0aGlzLmVuZFBhbmVsTW9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IFsuLi50aGlzLmVuZFBhbmVsTW9kZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWxNb2RlID0gdGhpcy5lbmRQYW5lbE1vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0RGlzYWJsZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBsZXQgbWluRGF0ZTogVGlueURhdGU7XG4gICAgICAgIGxldCBtYXhEYXRlOiBUaW55RGF0ZTtcbiAgICAgICAgbGV0IGRpc2FibGVkRGF0ZUZuOiBEaXNhYmxlZERhdGVGbjtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKHRoaXMubWluRGF0ZSk7XG4gICAgICAgICAgICBtaW5EYXRlID0gbmV3IFRpbnlEYXRlKHZhbHVlIGFzIERhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLm1heERhdGUpO1xuICAgICAgICAgICAgbWF4RGF0ZSA9IG5ldyBUaW55RGF0ZSh2YWx1ZSBhcyBEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGUpIHtcbiAgICAgICAgICAgIGRpc2FibGVkRGF0ZUZuID0gdGhpcy5kaXNhYmxlZERhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNhYmxlZERhdGUgPSBkID0+IHtcbiAgICAgICAgICAgIGxldCBleHByZXNzaW9uID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBkIDwgbWluRGF0ZS5zdGFydE9mRGF5KCkubmF0aXZlRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXhEYXRlICYmICFleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGQgPiBtYXhEYXRlLmVuZE9mRGF5KCkubmF0aXZlRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkaXNhYmxlZERhdGVGbiAmJiB0eXBlb2YgZGlzYWJsZWREYXRlRm4gPT09ICdmdW5jdGlvbicgJiYgIWV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gZGlzYWJsZWREYXRlRm4oZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvblNob3dUaW1lUGlja2VyQ2hhbmdlKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93VGltZVBpY2tlciA9IHNob3c7XG4gICAgICAgIHRoaXMuc2hvd1RpbWVQaWNrZXJDaGFuZ2UuZW1pdChzaG93KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrT2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5yZXN1bHRPay5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25DbGlja1JlbW92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaXNSYW5nZSA/IFtdIDogbnVsbDtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uRGF5SG92ZXIodmFsdWU6IFRpbnlEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UgJiYgdGhpcy5zZWxlY3RlZFZhbHVlWzBdICYmICF0aGlzLnNlbGVjdGVkVmFsdWVbMV0pIHtcbiAgICAgICAgICAgIC8vIFdoZW4gcmlnaHQgdmFsdWUgaXMgc2VsZWN0ZWQsIGRvbid0IGRvIGhvdmVyXG4gICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5zZWxlY3RlZFZhbHVlWzBdOyAvLyBVc2UgdGhlIGxlZnQgb2Ygc2VsZWN0ZWQgdmFsdWUgYXMgdGhlIGJhc2UgdG8gZGVjaWRlIGxhdGVyIGhvdmVyVmFsdWVcbiAgICAgICAgICAgIGlmIChiYXNlLmlzQmVmb3JlRGF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJWYWx1ZSA9IFtiYXNlLCB2YWx1ZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJWYWx1ZSA9IFt2YWx1ZSwgYmFzZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBhbmVsTW9kZUNoYW5nZShtb2RlOiBUaHlQYW5lbE1vZGUsIHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICAodGhpcy5wYW5lbE1vZGUgYXMgVGh5UGFuZWxNb2RlW10pW3RoaXMuZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZSldID0gbW9kZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWxNb2RlID0gbW9kZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhbmVsTW9kZUNoYW5nZS5lbWl0KHRoaXMucGFuZWxNb2RlKTtcbiAgICB9XG5cbiAgICBvbkhlYWRlckNoYW5nZSh2YWx1ZTogVGlueURhdGUsIHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVbdGhpcy5nZXRQYXJ0VHlwZUluZGV4KHBhcnRUeXBlKV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMubm9ybWFsaXplUmFuZ2VWYWx1ZShcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgYXMgVGlueURhdGVbXSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBhbmVsTW9kZSh0aGlzLmVuZFBhbmVsTW9kZSwgcGFydFR5cGUpIGFzIFRoeVBhbmVsTW9kZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RUaW1lKHZhbHVlOiBUaW55RGF0ZSwgcGFydFR5cGU/OiBSYW5nZVBhcnRUeXBlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgIC8vIFRPRE86cmFuZ2UgcGlja2VyIHNldCB0aW1lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKG5ldyBUaW55RGF0ZSh2YWx1ZS5uYXRpdmVEYXRlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RUYWIoYWN0aXZlOiBEYXRlUGlja2VyRmxleGlibGVUYWIpIHtcbiAgICAgICAgdGhpcy5mbGV4aWJsZUFjdGl2ZVRhYiA9IGFjdGl2ZTtcbiAgICB9XG5cbiAgICBjbGVhckZsZXhpYmxlVmFsdWUoKSB7XG4gICAgICAgIHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5mbGV4aWJsZUFjdGl2ZVRhYiA9PT0gJ2FkdmFuY2VkJykge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZFNlbGVjdGVkVmFsdWUgPSB7fTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBiZWdpbjogbnVsbCxcbiAgICAgICAgICAgIGVuZDogbnVsbCxcbiAgICAgICAgICAgIGRhdGVHcmFudWxhcml0eTogdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjaGFuZ2VWYWx1ZUZyb21BZHZhbmNlZFNlbGVjdCh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIC8vIGNsZWFyIGN1c3RvbSBkYXRlIHdoZW4gc2VsZWN0IGEgYWR2YW5jZWQgZGF0ZVxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXTtcbiAgICAgICAgdGhpcy5kYXRlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogW3ZhbHVlLmJlZ2luLCB2YWx1ZS5lbmRdXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoYW5nZVZhbHVlRnJvbVNlbGVjdCh2YWx1ZTogVGlueURhdGUsIHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICAvLyBjbGVhciBhZHZhbmNlZCBkYXRlIHdoZW4gc2VsZWN0IGEgY3VzdG9tIGRhdGVcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRTZWxlY3RlZFZhbHVlID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IFtsZWZ0LCByaWdodF0gPSB0aGlzLnNlbGVjdGVkVmFsdWUgYXMgVGlueURhdGVbXTtcblxuICAgICAgICAgICAgaWYgKCghbGVmdCAmJiAhcmlnaHQpIHx8IChsZWZ0ICYmIHJpZ2h0KSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRvdGFsbHkgZnVsbCBvciBlbXB0eSwgY2xlYW4gdXAgJiYgcmUtYXNzaWduIGxlZnQgZmlyc3RcbiAgICAgICAgICAgICAgICB0aGlzLmhvdmVyVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbdmFsdWVdO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFtuZXcgVGlueURhdGUoc3RhcnRPZkRheSh0aGlzLnNlbGVjdGVkVmFsdWVbMF0ubmF0aXZlRGF0ZSkpXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyQ2hhbmdlLmVtaXQoW3RoaXMuc2VsZWN0ZWRWYWx1ZVswXS5jbG9uZSgpXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnQgJiYgIXJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgb25lIG9mIHRoZW0gaXMgZW1wdHksIGFzc2lnbiB0aGUgb3RoZXIgb25lIGFuZCBzb3J0LCB0aGVuIHNldCB0aGUgZmluYWwgdmFsdWVzXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckhvdmVyVmFsdWUoKTsgLy8gQ2xlYW4gdXBcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWUoJ3JpZ2h0JywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHNvcnRSYW5nZVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7IC8vIFNvcnRcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXG4gICAgICAgICAgICAgICAgICAgIG5ldyBUaW55RGF0ZShzdGFydE9mRGF5KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5uYXRpdmVEYXRlKSksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBUaW55RGF0ZShlbmRPZkRheSh0aGlzLnNlbGVjdGVkVmFsdWVbMV0ubmF0aXZlRGF0ZSkpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLm5vcm1hbGl6ZVJhbmdlVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQYW5lbE1vZGUodGhpcy5lbmRQYW5lbE1vZGUsIHBhcnRUeXBlKSBhcyBUaHlQYW5lbE1vZGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5jbG9uZVJhbmdlRGF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyQ2hhbmdlLmVtaXQodGhpcy5jbG9uZVJhbmdlRGF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2xvbmVSYW5nZURhdGUodGhpcy5zZWxlY3RlZFZhbHVlKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdGhpcy51cGRhdGVIb3VyTWludXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodXBkYXRlZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiB1cGRhdGVkVmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3VyTWludXRlKHZhbHVlOiBUaW55RGF0ZSk6IFRpbnlEYXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JpZ2luRGF0ZSA9IHRoaXMudmFsdWUgYXMgVGlueURhdGU7XG4gICAgICAgIGNvbnN0IGRhdGVUaW1lID0gW3ZhbHVlLmdldEhvdXJzKCksIHZhbHVlLmdldE1pbnV0ZXMoKSwgdmFsdWUuZ2V0U2Vjb25kcygpXTtcbiAgICAgICAgY29uc3Qgb3JpZ2luRGF0ZVRpbWUgPSBbb3JpZ2luRGF0ZS5nZXRIb3VycygpLCBvcmlnaW5EYXRlLmdldE1pbnV0ZXMoKSwgb3JpZ2luRGF0ZS5nZXRTZWNvbmRzKCldO1xuXG4gICAgICAgIGNvbnN0IGlzRXF1YWxUaW1lID0gZGF0ZVRpbWUudG9TdHJpbmcoKSA9PT0gb3JpZ2luRGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKGlzRXF1YWxUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc2V0SG1zKG9yaWdpbkRhdGVUaW1lWzBdLCBvcmlnaW5EYXRlVGltZVsxXSwgb3JpZ2luRGF0ZVRpbWVbMl0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlUHJldk5leHQoZGlyZWN0aW9uOiAncHJldicgfCAnbmV4dCcsIHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlICYmIHRoaXMucGFuZWxNb2RlID09PSB0aGlzLmVuZFBhbmVsTW9kZSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5hY3RpdmVEYXRlIGFzIFRpbnlEYXRlW107XG4gICAgICAgICAgICBjb25zdCBzaG93TWlkZGxlID0gIXN0YXJ0LmFkZE1vbnRocygxKS5pc1NhbWUoZW5kLCAnbW9udGgnKTsgLy8gT25lIG1vbnRoIGRpZmYgdGhlbiBkb24ndCBzaG93IG1pZGRsZSBwcmV2L25leHRcbiAgICAgICAgICAgIGlmICgocGFydFR5cGUgPT09ICdsZWZ0JyAmJiBkaXJlY3Rpb24gPT09ICduZXh0JykgfHwgKHBhcnRUeXBlID09PSAncmlnaHQnICYmIGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaG93TWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhbmVsTW9kZShwYW5lbE1vZGU6IFRoeVBhbmVsTW9kZSB8IFRoeVBhbmVsTW9kZVtdLCBwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiBUaHlQYW5lbE1vZGUge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFuZWxNb2RlW3RoaXMuZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZSldIGFzIFRoeVBhbmVsTW9kZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYW5lbE1vZGUgYXMgVGh5UGFuZWxNb2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVCeVNlbGVjdG9yKHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IFRpbnlEYXRlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTaG93ID0gdGhpcy5zZWxlY3RlZFZhbHVlOyAvLyBVc2UgdGhlIHJlYWwgdGltZSB2YWx1ZSB0aGF0IHdpdGhvdXQgZGVjb3JhdGlvbnMgd2hlbiB0aW1lcGlja2VyIGlzIHNob3duIHVwXG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlU2hvdyBhcyBUaW55RGF0ZVtdKVt0aGlzLmdldFBhcnRUeXBlSW5kZXgocGFydFR5cGUpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIFRpbnlEYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QWN0aXZlRGF0ZShwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiBUaW55RGF0ZSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGVbdGhpcy5nZXRQYXJ0VHlwZUluZGV4KHBhcnRUeXBlKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRlIGFzIFRpbnlEYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZTogUmFuZ2VQYXJ0VHlwZSA9ICdsZWZ0Jyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRUeXBlTWFwW3BhcnRUeXBlXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1pblRpbnlEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW5EYXRlID8gbmV3IFRpbnlEYXRlKHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLm1pbkRhdGUpLnZhbHVlIGFzIERhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1heFRpbnlEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhEYXRlID8gbmV3IFRpbnlEYXRlKHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLm1heERhdGUpLnZhbHVlIGFzIERhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFySG92ZXJWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlclZhbHVlID0gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogQ29tcGF0aWJsZVZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSAmJiB0aGlzLmZsZXhpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gJ2RheSc7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIGJlZ2luOiB2YWx1ZVswXSxcbiAgICAgICAgICAgICAgICBlbmQ6IHZhbHVlWzFdLFxuICAgICAgICAgICAgICAgIGRhdGVHcmFudWxhcml0eTogdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpbWUgfHwgIXRoaXMuc2hvd1RpbWVQaWNrZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVUaW1lQ29uZmlybSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9ybWFsaXplUmFuZ2VWYWx1ZSh2YWx1ZTogVGlueURhdGVbXSwgbW9kZTogVGh5UGFuZWxNb2RlID0gJ21vbnRoJyk6IFRpbnlEYXRlW10ge1xuICAgICAgICBjb25zdCBoZWFkZXJNb2RlczogeyBba2V5IGluIFRoeVBhbmVsTW9kZV0/OiBUaHlQYW5lbE1vZGUgfSA9IHtcbiAgICAgICAgICAgIHdlZWs6ICdtb250aCcsXG4gICAgICAgICAgICBkYXRlOiAnbW9udGgnLFxuICAgICAgICAgICAgbW9udGg6ICd5ZWFyJyxcbiAgICAgICAgICAgIHF1YXJ0ZXI6ICd5ZWFyJyxcbiAgICAgICAgICAgIHllYXI6ICdkZWNhZGUnXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhlYWRlck1vZGUgPSBoZWFkZXJNb2Rlc1ttb2RlXTtcbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdmFsdWU7XG4gICAgICAgIGNvbnN0IG5ld1N0YXJ0ID0gc3RhcnQgfHwgbmV3IFRpbnlEYXRlKCk7XG4gICAgICAgIGxldCBuZXdFbmQgPSBlbmQ7XG4gICAgICAgIGlmICghbmV3RW5kIHx8IG5ld1N0YXJ0LmlzU2FtZShlbmQsIGhlYWRlck1vZGUgYXMgVGlueURhdGVDb21wYXJlR3JhaW4pKSB7XG4gICAgICAgICAgICBuZXdFbmQgPSBkYXRlQWRkQW1vdW50KG5ld1N0YXJ0LCAxLCBoZWFkZXJNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25ld1N0YXJ0LCBuZXdFbmRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmFuZ2VWYWx1ZShwYXJ0VHlwZTogUmFuZ2VQYXJ0VHlwZSwgdmFsdWU6IFRpbnlEYXRlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZiA9ICh0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLmNsb25lUmFuZ2VEYXRlKHRoaXMuc2VsZWN0ZWRWYWx1ZSBhcyBUaW55RGF0ZVtdKSk7XG4gICAgICAgIHJlZlt0aGlzLmdldFBhcnRUeXBlSW5kZXgocGFydFR5cGUpXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVSYW5nZURhdGUodmFsdWU6IFRpbnlEYXRlW10pOiBUaW55RGF0ZVtdIHtcbiAgICAgICAgcmV0dXJuIFt2YWx1ZVswXSAmJiB2YWx1ZVswXS5jbG9uZSgpLCB2YWx1ZVsxXSAmJiB2YWx1ZVsxXS5jbG9uZSgpXSBhcyBUaW55RGF0ZVtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEaXNhYmxlVGltZUNvbmZpcm0oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UgfHwgIXRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGU6IFRpbnlEYXRlID0gdGhpcy52YWx1ZSA/ICh0aGlzLnZhbHVlIGFzIFRpbnlEYXRlKSA6IG5ldyBUaW55RGF0ZSgpO1xuICAgICAgICBjb25zdCBtaW5EYXRlOiBUaW55RGF0ZSA9IHRoaXMuZ2V0TWluVGlueURhdGUoKTtcbiAgICAgICAgY29uc3QgbWF4RGF0ZTogVGlueURhdGUgPSB0aGlzLmdldE1heFRpbnlEYXRlKCk7XG5cbiAgICAgICAgaWYgKChtaW5EYXRlICYmIGRhdGUuZ2V0VGltZSgpIDwgbWluRGF0ZS5nZXRUaW1lKCkpIHx8IChtYXhEYXRlICYmIGRhdGUuZ2V0VGltZSgpID4gbWF4RGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVUaW1lQ29uZmlybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVUaW1lQ29uZmlybSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RlZFNob3J0Y3V0UHJlc2V0KGRhdGU6IENvbXBhdGlibGVWYWx1ZSk6IENvbXBhdGlibGVWYWx1ZSB7XG4gICAgICAgIGNvbnN0IG1pbkRhdGU6IFRpbnlEYXRlID0gdGhpcy5nZXRNaW5UaW55RGF0ZSgpO1xuICAgICAgICBjb25zdCBtYXhEYXRlOiBUaW55RGF0ZSA9IHRoaXMuZ2V0TWF4VGlueURhdGUoKTtcblxuICAgICAgICBjb25zdCBtaW5UaW1lOiBudW1iZXIgPSAobWluRGF0ZSAmJiBtaW5EYXRlLmdldFRpbWUoKSkgfHwgbnVsbDtcbiAgICAgICAgY29uc3QgbWF4VGltZTogbnVtYmVyID0gKG1heERhdGUgJiYgbWF4RGF0ZS5nZXRUaW1lKCkpIHx8IG51bGw7XG5cbiAgICAgICAgaWYgKGhlbHBlcnMuaXNBcnJheShkYXRlKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlOiBUaW55RGF0ZSA9IGRhdGVbMF07XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlOiBUaW55RGF0ZSA9IGRhdGVbMV07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZTogbnVtYmVyID0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFRpbWU6IG51bWJlciA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICBpZiAoKG1heERhdGUgJiYgc3RhcnRUaW1lID4gbWF4VGltZSkgfHwgKG1pbkRhdGUgJiYgZW5kVGltZSA8IG1pblRpbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWluRGF0ZSAmJiBzdGFydFRpbWUgPCBtaW5UaW1lICYmIG1heERhdGUgJiYgZW5kVGltZSA+IG1heFRpbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW21pbkRhdGUsIG1heERhdGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWluRGF0ZSAmJiBzdGFydFRpbWUgPCBtaW5UaW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFttaW5EYXRlLCBlbmREYXRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1heERhdGUgJiYgZW5kVGltZSA+IG1heFRpbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3N0YXJ0RGF0ZSwgbWF4RGF0ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2luZ2xlVGltZTogbnVtYmVyID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgIGlmICgobWluRGF0ZSAmJiBzaW5nbGVUaW1lIDwgbWluVGltZSkgfHwgKG1heERhdGUgJiYgc2luZ2xlVGltZSA+IG1heFRpbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvcnRjdXRTZXRWYWx1ZShzaG9ydGN1dFByZXNldHM6IFRoeVNob3J0Y3V0UHJlc2V0KSB7XG4gICAgICAgIGlmIChzaG9ydGN1dFByZXNldHMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHNob3J0Y3V0UHJlc2V0cztcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkUHJlc2V0VmFsdWU6IENvbXBhdGlibGVWYWx1ZTtcbiAgICAgICAgaWYgKGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZ2luOiBudW1iZXIgfCBEYXRlID0gZ2V0U2hvcnRjdXRWYWx1ZSh2YWx1ZVswXSk7XG4gICAgICAgICAgICBjb25zdCBlbmQ6IG51bWJlciB8IERhdGUgPSBnZXRTaG9ydGN1dFZhbHVlKHZhbHVlWzFdKTtcblxuICAgICAgICAgICAgaWYgKGJlZ2luICYmIGVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZ2V0U2VsZWN0ZWRTaG9ydGN1dFByZXNldChbXG4gICAgICAgICAgICAgICAgICAgIG5ldyBUaW55RGF0ZShzdGFydE9mRGF5KGJlZ2luKSksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBUaW55RGF0ZShlbmRPZkRheShlbmQpKVxuICAgICAgICAgICAgICAgIF0pIGFzIFRpbnlEYXRlW107XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RlZFByZXNldFZhbHVlID0gdGhpcy5jbG9uZVJhbmdlRGF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2luZ2xlRGF0ZTogbnVtYmVyIHwgRGF0ZSA9IGdldFNob3J0Y3V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgc2luZ2xlVGlueURhdGU6IFRpbnlEYXRlID0gdGhpcy51cGRhdGVIb3VyTWludXRlKG5ldyBUaW55RGF0ZShzaW5nbGVEYXRlKSk7XG4gICAgICAgICAgICBzZWxlY3RlZFByZXNldFZhbHVlID0gdGhpcy5nZXRTZWxlY3RlZFNob3J0Y3V0UHJlc2V0KHNpbmdsZVRpbnlEYXRlKSBhcyBUaW55RGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZhbHVlKHNlbGVjdGVkUHJlc2V0VmFsdWUpO1xuICAgICAgICB0aGlzLmRhdGVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHZhbHVlOiBoZWxwZXJzLmlzQXJyYXkodmFsdWUpID8gdGhpcy5zZWxlY3RlZFZhbHVlIDogc2VsZWN0ZWRQcmVzZXRWYWx1ZSxcbiAgICAgICAgICAgIHRyaWdnZXJQcmVzZXQ6IHNob3J0Y3V0UHJlc2V0c1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFoZWxwZXJzLmlzQXJyYXkodmFsdWUpICYmIHRoaXMuc2hvd1RpbWUgJiYgdGhpcy5zaG93VGltZVBpY2tlcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcGlja2VyLWNvbnRhaW5lciB7eyBjbGFzc05hbWUgfX1cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19IHt7IHNob3dXZWVrID8gcHJlZml4Q2xzICsgJy13ZWVrLW51bWJlcicgOiAnJyB9fVxuICAgICB7eyBpc1JhbmdlID8gcHJlZml4Q2xzICsgJy1yYW5nZScgOiAnJyB9fSB7eyBwcmVmaXhDbHMgfX0tcGlja2VyLXNob3J0Y3V0LXt7IHNob3J0Y3V0UG9zaXRpb24gPT09ICdsZWZ0JyA/ICdsZWZ0JyA6ICdib3R0b20nIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1waWNrZXItc2hvcnRjdXRcIiAqbmdJZj1cInNob3dTaG9ydGN1dFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInt7IHByZWZpeENscyB9fS1waWNrZXItc2hvcnRjdXQtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW5uZXJTaG9ydGN1dFByZXNldHM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgIChjbGljayk9XCJzaG9ydGN1dFNldFZhbHVlKGl0ZW0pXCI+XG4gICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcGFuZWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tZGF0ZS1wYW5lbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxleGlibGU7IGVsc2UgZGVmYXVsdFBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1kYXRlLXBhbmVsLWZsZXhpYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWRhdGUtcGFuZWwtZmxleGlibGUtdGFiXCI+XG4gICAgICAgICAgICAgIDx0aHktbmF2IHRoeVR5cGU9XCJwdWxsZWRcIiB0aHlTaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5TmF2TGluayBbdGh5TmF2TGlua0FjdGl2ZV09XCJmbGV4aWJsZUFjdGl2ZVRhYiA9PT0gJ2FkdmFuY2VkJ1wiIChjbGljayk9XCJzZWxlY3RUYWIoJ2FkdmFuY2VkJylcIlxuICAgICAgICAgICAgICAgICAgPumrmOe6p+mAiemhuTwvYVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5TmF2TGluayBbdGh5TmF2TGlua0FjdGl2ZV09XCJmbGV4aWJsZUFjdGl2ZVRhYiA9PT0gJ2N1c3RvbSdcIiAoY2xpY2spPVwic2VsZWN0VGFiKCdjdXN0b20nKVwiXG4gICAgICAgICAgICAgICAgICA+6Ieq5a6a5LmJPC9hXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3RoeS1uYXY+XG4gICAgICAgICAgICAgIDxidXR0b24gdGh5QnV0dG9uSWNvbj1cInN3ZWVwXCIgdGh5U2l6ZT1cInNtXCIgY2xhc3M9XCJjbGVhci1kYXRlLWJ1dHRvblwiIChjbGljayk9XCJjbGVhckZsZXhpYmxlVmFsdWUoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWRhdGUtcGFuZWwtYWR2YW5jZWRcIiBbaGlkZGVuXT1cImZsZXhpYmxlQWN0aXZlVGFiICE9PSAnYWR2YW5jZWQnXCI+XG4gICAgICAgICAgICAgICAgPGRhdGUtY2Fyb3VzZWxcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlQ2Fyb3VzZWxcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVmFsdWVGcm9tQWR2YW5jZWRTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkdmFuY2VkU2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbYWN0aXZlRGF0ZV09XCJzZWxlY3RlZFZhbHVlWzBdXCI+PC9kYXRlLWNhcm91c2VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cImZsZXhpYmxlQWN0aXZlVGFiICE9PSAnY3VzdG9tJ1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsSW5uZXJQb3B1cFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhbmVsPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JhbmdlOyBlbHNlIHRwbFNpbmdsZVBhcnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxSYW5nZVBhcnQ7IGNvbnRleHQ6IHsgcGFydFR5cGU6ICdsZWZ0JyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsUmFuZ2VQYXJ0OyBjb250ZXh0OiB7IHBhcnRUeXBlOiAncmlnaHQnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmFuZ2VcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxGb290ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RwbElubmVyUG9wdXAgbGV0LXBhcnRUeXBlPVwicGFydFR5cGVcIj5cbiAgPGlubmVyLXBvcHVwXG4gICAgW3Nob3dXZWVrXT1cInNob3dXZWVrXCJcbiAgICBbaXNSYW5nZV09XCJpc1JhbmdlXCJcbiAgICBbcGFuZWxNb2RlXT1cImdldFBhbmVsTW9kZShwYW5lbE1vZGUsIHBhcnRUeXBlKVwiXG4gICAgW2VuZFBhbmVsTW9kZV09XCJnZXRQYW5lbE1vZGUoZW5kUGFuZWxNb2RlLCBwYXJ0VHlwZSlcIlxuICAgIFtwYXJ0VHlwZV09XCJwYXJ0VHlwZVwiXG4gICAgW3Nob3dEYXRlUmFuZ2VJbnB1dF09XCJmbGV4aWJsZSAmJiBmbGV4aWJsZUFjdGl2ZVRhYiA9PT0gJ2N1c3RvbSdcIlxuICAgIChwYW5lbE1vZGVDaGFuZ2UpPVwib25QYW5lbE1vZGVDaGFuZ2UoJGV2ZW50LCBwYXJ0VHlwZSlcIlxuICAgIFt2YWx1ZV09XCJnZXRWYWx1ZUJ5U2VsZWN0b3IocGFydFR5cGUpXCJcbiAgICBbc2VsZWN0ZWRWYWx1ZV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgICBbYWN0aXZlRGF0ZV09XCJnZXRBY3RpdmVEYXRlKHBhcnRUeXBlKVwiXG4gICAgW3JhbmdlQWN0aXZlRGF0ZV09XCJhY3RpdmVEYXRlXCJcbiAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXG4gICAgW2RhdGVSZW5kZXJdPVwiZGF0ZVJlbmRlclwiXG4gICAgW2hvdmVyVmFsdWVdPVwiaG92ZXJWYWx1ZVwiXG4gICAgW2VuYWJsZVByZXZdPVwiZW5hYmxlUHJldk5leHQoJ3ByZXYnLCBwYXJ0VHlwZSlcIlxuICAgIFtlbmFibGVOZXh0XT1cImVuYWJsZVByZXZOZXh0KCduZXh0JywgcGFydFR5cGUpXCJcbiAgICAoZGF5SG92ZXIpPVwib25EYXlIb3ZlcigkZXZlbnQpXCJcbiAgICAoc2VsZWN0RGF0ZSk9XCJjaGFuZ2VWYWx1ZUZyb21TZWxlY3QoJGV2ZW50LCBwYXJ0VHlwZSlcIlxuICAgIChoZWFkZXJDaGFuZ2UpPVwib25IZWFkZXJDaGFuZ2UoJGV2ZW50LCBwYXJ0VHlwZSlcIj48L2lubmVyLXBvcHVwPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cGxGb290ZXI+XG4gIDxjYWxlbmRhci1mb290ZXJcbiAgICBbc2hvd1RpbWVdPVwic2hvd1RpbWVcIlxuICAgIFttdXN0U2hvd1RpbWVdPVwibXVzdFNob3dUaW1lXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlVGltZUNvbmZpcm1dPVwiZGlzYWJsZVRpbWVDb25maXJtXCJcbiAgICAoc2hvd1RpbWVQaWNrZXJDaGFuZ2UpPVwib25TaG93VGltZVBpY2tlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAoc2VsZWN0VGltZSk9XCJvblNlbGVjdFRpbWUoJGV2ZW50KVwiXG4gICAgKGNsaWNrT2spPVwib25DbGlja09rKClcIlxuICAgIChjbGlja1JlbW92ZSk9XCJvbkNsaWNrUmVtb3ZlKClcIj48L2NhbGVuZGFyLWZvb3Rlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU2luZ2xlIE9OTFkgLS0+XG48bmctdGVtcGxhdGUgI3RwbFNpbmdsZVBhcnQ+XG4gIDxkaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbElubmVyUG9wdXBcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFJhbmdlIE9OTFkgLS0+XG48bmctdGVtcGxhdGUgI3RwbFJhbmdlUGFydCBsZXQtcGFydFR5cGU9XCJwYXJ0VHlwZVwiPlxuICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXJhbmdlLXBhcnQge3sgcHJlZml4Q2xzIH19LXJhbmdlLXt7IHBhcnRUeXBlIH19XCI+XG4gICAgPGRpdiBzdHlsZT1cIm91dGxpbmU6IG5vbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxJbm5lclBvcHVwOyBjb250ZXh0OiB7IHBhcnRUeXBlOiBwYXJ0VHlwZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
561
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL3BvcHVwcy9kYXRlLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9saWIvcG9wdXBzL2RhdGUtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFnQixRQUFRLEVBQXdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkksT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLDRCQUE0QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFhM0ksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSww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QUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5kT2ZEYXksIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBGdW5jdGlvblByb3AsIFRpbnlEYXRlLCBUaW55RGF0ZUNvbXBhcmVHcmFpbiwgaGVscGVycywgaXNGdW5jdGlvbiwgaXNVbmRlZmluZWRPck51bGwsIHNvcnRSYW5nZVZhbHVlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUJ1dHRvbkljb24gfSBmcm9tICduZ3gtdGV0aHlzL2J1dHRvbic7XG5pbXBvcnQgeyBUaHlOYXYsIFRoeU5hdkl0ZW1EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL25hdic7XG5pbXBvcnQgeyBUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGF0aWJsZVZhbHVlLCBEYXRlUGlja2VyRmxleGlibGVUYWIsIFJhbmdlQWR2YW5jZWRWYWx1ZSwgUmFuZ2VQYXJ0VHlwZSB9IGZyb20gJy4uLy4uL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IGRhdGVBZGRBbW91bnQsIGdldFNob3J0Y3V0VmFsdWUsIGhhc1ZhbHVlLCBtYWtlVmFsdWUsIHNldFZhbHVlQnlUaW1lc3RhbXBQcmVjaXNpb24sIHRyYW5zZm9ybURhdGVWYWx1ZSB9IGZyb20gJy4uLy4uL3BpY2tlci51dGlsJztcbmltcG9ydCB7XG4gICAgQ29tcGF0aWJsZURhdGUsXG4gICAgQ29tcGF0aWJsZVByZXNldHMsXG4gICAgRGlzYWJsZWREYXRlRm4sXG4gICAgU3VwcG9ydFRpbWVPcHRpb25zLFxuICAgIFRoeURhdGVDaGFuZ2VFdmVudCxcbiAgICBUaHlEYXRlR3JhbnVsYXJpdHksXG4gICAgVGh5UGFuZWxNb2RlLFxuICAgIFRoeVNob3J0Y3V0UG9zaXRpb24sXG4gICAgVGh5U2hvcnRjdXRQcmVzZXQsXG4gICAgVGh5U2hvcnRjdXRWYWx1ZVxufSBmcm9tICcuLi8uLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckZvb3RlciB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUNhcm91c2VsIH0gZnJvbSAnLi4vZGF0ZS1jYXJvdXNlbC9kYXRlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbm5lclBvcHVwIH0gZnJvbSAnLi9pbm5lci1wb3B1cC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkYXRlLXBvcHVwJyxcbiAgICBleHBvcnRBczogJ2RhdGVQb3B1cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGh5TmF2LFxuICAgICAgICBUaHlOYXZJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUaHlCdXR0b25JY29uLFxuICAgICAgICBEYXRlQ2Fyb3VzZWwsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBJbm5lclBvcHVwLFxuICAgICAgICBDYWxlbmRhckZvb3RlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBvcHVwIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlzUmFuZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1dlZWs6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZERhdGU6IERpc2FibGVkRGF0ZUZuO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudW1iZXI7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bWJlcjtcbiAgICBASW5wdXQoKSBzaG93VG9kYXk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlK/mjIHorr7nva7ml7bpl7Qo5pe244CB5YiGKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUaW1lOiBTdXBwb3J0VGltZU9wdGlvbnMgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pe26Ze0KOaXtuOAgeWIhilcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtdXN0U2hvd1RpbWU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkYXRlUmVuZGVyOiBGdW5jdGlvblByb3A8VGVtcGxhdGVSZWY8RGF0ZT4gfCBzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBhbmVsTW9kZTogVGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW107XG4gICAgQElucHV0KCkgdmFsdWU6IENvbXBhdGlibGVWYWx1ZTtcbiAgICBASW5wdXQoKSBkZWZhdWx0UGlja2VyVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgbnVtYmVyO1xuXG4gICAgQElucHV0KCkgc2hvd1Nob3J0Y3V0OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvcnRjdXRQcmVzZXRzOiBDb21wYXRpYmxlUHJlc2V0cztcblxuICAgIEBJbnB1dCgpIHNob3J0Y3V0UG9zaXRpb246IFRoeVNob3J0Y3V0UG9zaXRpb247XG5cbiAgICBASW5wdXQoKSBmbGV4aWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG5cbiAgICBASW5wdXQoKSB0aW1lc3RhbXBQcmVjaXNpb246ICdzZWNvbmRzJyB8ICdtaWxsaXNlY29uZHMnO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHBhbmVsTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW10+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNhbGVuZGFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wYXRpYmxlVmFsdWU+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wYXRpYmxlVmFsdWUgfCBSYW5nZUFkdmFuY2VkVmFsdWU+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJlc3VsdE9rID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAvLyBFbWl0dGVkIHdoZW4gZG9uZSB3aXRoIGRhdGUgc2VsZWN0aW5nXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNob3dUaW1lUGlja2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBkYXRlVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeURhdGVDaGFuZ2VFdmVudD4oKTtcblxuICAgIHByZWZpeENscyA9ICd0aHktY2FsZW5kYXInO1xuICAgIHNob3dUaW1lUGlja2VyID0gZmFsc2U7XG4gICAgdGltZU9wdGlvbnM6IFN1cHBvcnRUaW1lT3B0aW9ucyB8IFN1cHBvcnRUaW1lT3B0aW9uc1tdIHwgbnVsbDtcbiAgICBhY3RpdmVEYXRlOiBUaW55RGF0ZSB8IFRpbnlEYXRlW107XG4gICAgc2VsZWN0ZWRWYWx1ZTogVGlueURhdGVbXSA9IFtdOyAvLyBSYW5nZSBPTkxZXG4gICAgaG92ZXJWYWx1ZTogVGlueURhdGVbXSA9IFtdOyAvLyBSYW5nZSBPTkxZXG5cbiAgICBhZHZhbmNlZFNlbGVjdGVkVmFsdWU6IFJhbmdlQWR2YW5jZWRWYWx1ZTsgLy8gYWR2YW5jZWQgT05MWVxuXG4gICAgZmxleGlibGVBY3RpdmVUYWI6IERhdGVQaWNrZXJGbGV4aWJsZVRhYiA9ICdhZHZhbmNlZCc7XG5cbiAgICBnZXQgaGFzVGltZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zaG93VGltZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBwYXJ0VHlwZU1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHsgbGVmdDogMCwgcmlnaHQ6IDEgfTtcblxuICAgIFtwcm9wZXJ0eTogc3RyaW5nXTogYW55O1xuXG4gICAgZW5kUGFuZWxNb2RlOiBUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXTtcblxuICAgIGlubmVyU2hvcnRjdXRQcmVzZXRzOiBUaHlTaG9ydGN1dFByZXNldFtdO1xuXG4gICAgZGlzYWJsZVRpbWVDb25maXJtID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0ZVBpY2tlckNvbmZpZ1NlcnZpY2U6IFRoeURhdGVQaWNrZXJDb25maWdTZXJ2aWNlKSB7fVxuXG4gICAgc2V0UHJvcGVydHk8VCBleHRlbmRzIGtleW9mIERhdGVQb3B1cD4oa2V5OiBULCB2YWx1ZTogdGhpc1tUXSk6IHZvaWQge1xuICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFNob3J0Y3V0UHJlc2V0cygpO1xuICAgICAgICB0aGlzLmluaXRQYW5lbE1vZGUoKTtcbiAgICAgICAgaWYgKHRoaXMuZmxleGlibGUgJiYgdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eSA9PT0gJ2RheScpIHtcbiAgICAgICAgICAgIHRoaXMuZmxleGlibGVBY3RpdmVUYWIgPSAnY3VzdG9tJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZWZhdWx0UGlja2VyVmFsdWUgJiYgIWhhc1ZhbHVlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy5kZWZhdWx0UGlja2VyVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1ha2VWYWx1ZSh2YWx1ZSwgdGhpcy5pc1JhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZURhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0RGlzYWJsZWREYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UgJiYgdGhpcy5mbGV4aWJsZSAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkU2VsZWN0ZWRWYWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBiZWdpbjogdGhpcy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICBlbmQ6IHRoaXMudmFsdWVbMV0sXG4gICAgICAgICAgICAgICAgZGF0ZUdyYW51bGFyaXR5OiB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5wYW5lbE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkodGhpcy5wYW5lbE1vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQYW5lbE1vZGUgPSBbLi4udGhpcy5wYW5lbE1vZGVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBhbmVsTW9kZSA9IHRoaXMucGFuZWxNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRlZmF1bHRQaWNrZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMudmFsdWUgJiYgY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFNob3J0Y3V0UHJlc2V0cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBzaG9ydGN1dFJhbmdlc1ByZXNldHMsIHNob3J0Y3V0RGF0ZVByZXNldHMsIHNob3dTaG9ydGN1dCB9ID0gdGhpcy5kYXRlUGlja2VyQ29uZmlnU2VydmljZTtcblxuICAgICAgICB0aGlzLnNob3dTaG9ydGN1dCA9XG4gICAgICAgICAgICBbJ2RhdGUnLCAnZGF0ZSxkYXRlJ10uaW5jbHVkZXModGhpcy5wYW5lbE1vZGUudG9TdHJpbmcoKSkgJiYgaXNVbmRlZmluZWRPck51bGwodGhpcy5zaG93U2hvcnRjdXQpXG4gICAgICAgICAgICAgICAgPyBzaG93U2hvcnRjdXRcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2hvd1Nob3J0Y3V0O1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dTaG9ydGN1dCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3J0Y3V0UHJlc2V0cykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvcnRjdXRQcmVzZXRzID0gdGhpcy5pc1JhbmdlID8gc2hvcnRjdXRSYW5nZXNQcmVzZXRzIDogc2hvcnRjdXREYXRlUHJlc2V0cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbm5lclNob3J0Y3V0UHJlc2V0cyA9IGlzRnVuY3Rpb24odGhpcy5zaG9ydGN1dFByZXNldHMpID8gdGhpcy5zaG9ydGN1dFByZXNldHMoKSA6IHRoaXMuc2hvcnRjdXRQcmVzZXRzO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5uZXJTaG9ydGN1dFByZXNldHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluRGF0ZTogVGlueURhdGUgPSB0aGlzLmdldE1pblRpbnlEYXRlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4RGF0ZTogVGlueURhdGUgPSB0aGlzLmdldE1heFRpbnlEYXRlKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtaW5UaW1lID0gbWluRGF0ZSA/IG1pbkRhdGUuZ2V0VGltZSgpIDogbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhUaW1lID0gbWF4RGF0ZSA/IG1heERhdGUuZ2V0VGltZSgpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lclNob3J0Y3V0UHJlc2V0cy5mb3JFYWNoKChwcmVzZXQ6IFRoeVNob3J0Y3V0UHJlc2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWdpbjogbnVtYmVyIHwgRGF0ZSA9IGdldFNob3J0Y3V0VmFsdWUocHJlc2V0LnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZ2luVGltZTogbnVtYmVyID0gbmV3IFRpbnlEYXRlKHN0YXJ0T2ZEYXkoYmVnaW4pKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZDogbnVtYmVyIHwgRGF0ZSA9IGdldFNob3J0Y3V0VmFsdWUocHJlc2V0LnZhbHVlWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFRpbWU6IG51bWJlciA9IG5ldyBUaW55RGF0ZShlbmRPZkRheShlbmQpKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobWluRGF0ZSAmJiBlbmRUaW1lIDwgbWluVGltZSkgfHwgKG1heERhdGUgJiYgYmVnaW5UaW1lID4gbWF4VGltZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lclNob3J0Y3V0UHJlc2V0cy5mb3JFYWNoKChwcmVzZXQ6IFRoeVNob3J0Y3V0UHJlc2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW5nbGVWYWx1ZTogbnVtYmVyIHwgRGF0ZSA9IGdldFNob3J0Y3V0VmFsdWUocHJlc2V0LnZhbHVlIGFzIFRoeVNob3J0Y3V0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2luZ2xlVGltZTogbnVtYmVyID0gbmV3IFRpbnlEYXRlKHNpbmdsZVZhbHVlKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobWluRGF0ZSAmJiBzaW5nbGVUaW1lIDwgbWluVGltZSkgfHwgKG1heERhdGUgJiYgc2luZ2xlVGltZSA+IG1heFRpbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0LmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUFjdGl2ZURhdGUoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJIb3ZlclZhbHVlKCk7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKHRoaXMuZGVmYXVsdFBpY2tlclZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtYWtlVmFsdWUodmFsdWUsIHRoaXMuaXNSYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZsZXhpYmxlIHx8IHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPT09ICdkYXknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy52YWx1ZSBhcyBUaW55RGF0ZVtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5ub3JtYWxpemVSYW5nZVZhbHVlKHRoaXMudmFsdWUgYXMgVGlueURhdGVbXSwgdGhpcy5nZXRQYW5lbE1vZGUodGhpcy5lbmRQYW5lbE1vZGUpIGFzIFRoeVBhbmVsTW9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnZhbHVlIGFzIFRpbnlEYXRlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlVGltZUNvbmZpcm0oKTtcbiAgICB9XG5cbiAgICBpbml0UGFuZWxNb2RlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZW5kUGFuZWxNb2RlKSB7XG4gICAgICAgICAgICBpZiAoaGVscGVycy5pc0FycmF5KHRoaXMucGFuZWxNb2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUGFuZWxNb2RlID0gWy4uLnRoaXMucGFuZWxNb2RlXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQYW5lbE1vZGUgPSB0aGlzLnBhbmVsTW9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkodGhpcy5lbmRQYW5lbE1vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbE1vZGUgPSBbLi4udGhpcy5lbmRQYW5lbE1vZGVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IHRoaXMuZW5kUGFuZWxNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdERpc2FibGVkRGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IG1pbkRhdGU6IFRpbnlEYXRlO1xuICAgICAgICBsZXQgbWF4RGF0ZTogVGlueURhdGU7XG4gICAgICAgIGxldCBkaXNhYmxlZERhdGVGbjogRGlzYWJsZWREYXRlRm47XG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLm1pbkRhdGUpO1xuICAgICAgICAgICAgbWluRGF0ZSA9IG5ldyBUaW55RGF0ZSh2YWx1ZSBhcyBEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy5tYXhEYXRlKTtcbiAgICAgICAgICAgIG1heERhdGUgPSBuZXcgVGlueURhdGUodmFsdWUgYXMgRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWREYXRlKSB7XG4gICAgICAgICAgICBkaXNhYmxlZERhdGVGbiA9IHRoaXMuZGlzYWJsZWREYXRlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzYWJsZWREYXRlID0gZCA9PiB7XG4gICAgICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG1pbkRhdGUpIHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gZCA8IG1pbkRhdGUuc3RhcnRPZkRheSgpLm5hdGl2ZURhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF4RGF0ZSAmJiAhZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBkID4gbWF4RGF0ZS5lbmRPZkRheSgpLm5hdGl2ZURhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWREYXRlRm4gJiYgdHlwZW9mIGRpc2FibGVkRGF0ZUZuID09PSAnZnVuY3Rpb24nICYmICFleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGRpc2FibGVkRGF0ZUZuKGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGV4cHJlc3Npb247XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25TaG93VGltZVBpY2tlckNoYW5nZShzaG93OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1RpbWVQaWNrZXIgPSBzaG93O1xuICAgICAgICB0aGlzLnNob3dUaW1lUGlja2VyQ2hhbmdlLmVtaXQoc2hvdyk7XG4gICAgfVxuXG4gICAgb25DbGlja09rKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMucmVzdWx0T2suZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2tSZW1vdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlzUmFuZ2UgPyBbXSA6IG51bGw7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkRheUhvdmVyKHZhbHVlOiBUaW55RGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlWzFdKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHJpZ2h0IHZhbHVlIGlzIHNlbGVjdGVkLCBkb24ndCBkbyBob3ZlclxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVswXTsgLy8gVXNlIHRoZSBsZWZ0IG9mIHNlbGVjdGVkIHZhbHVlIGFzIHRoZSBiYXNlIHRvIGRlY2lkZSBsYXRlciBob3ZlclZhbHVlXG4gICAgICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZURheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvdmVyVmFsdWUgPSBbYmFzZSwgdmFsdWVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvdmVyVmFsdWUgPSBbdmFsdWUsIGJhc2VdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QYW5lbE1vZGVDaGFuZ2UobW9kZTogVGh5UGFuZWxNb2RlLCBwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgKHRoaXMucGFuZWxNb2RlIGFzIFRoeVBhbmVsTW9kZVtdKVt0aGlzLmdldFBhcnRUeXBlSW5kZXgocGFydFR5cGUpXSA9IG1vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IG1vZGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYW5lbE1vZGVDaGFuZ2UuZW1pdCh0aGlzLnBhbmVsTW9kZSk7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGFuZ2UodmFsdWU6IFRpbnlEYXRlLCBwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlW3RoaXMuZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZSldID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLm5vcm1hbGl6ZVJhbmdlVmFsdWUoXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlIGFzIFRpbnlEYXRlW10sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQYW5lbE1vZGUodGhpcy5lbmRQYW5lbE1vZGUsIHBhcnRUeXBlKSBhcyBUaHlQYW5lbE1vZGVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0VGltZSh2YWx1ZTogVGlueURhdGUsIHBhcnRUeXBlPzogUmFuZ2VQYXJ0VHlwZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICAvLyBUT0RPOnJhbmdlIHBpY2tlciBzZXQgdGltZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShuZXcgVGlueURhdGUodmFsdWUubmF0aXZlRGF0ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0VGFiKGFjdGl2ZTogRGF0ZVBpY2tlckZsZXhpYmxlVGFiKSB7XG4gICAgICAgIHRoaXMuZmxleGlibGVBY3RpdmVUYWIgPSBhY3RpdmU7XG4gICAgfVxuXG4gICAgY2xlYXJGbGV4aWJsZVZhbHVlKCkge1xuICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuZmxleGlibGVBY3RpdmVUYWIgPT09ICdhZHZhbmNlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRTZWxlY3RlZFZhbHVlID0ge307XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgYmVnaW46IG51bGwsXG4gICAgICAgICAgICBlbmQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlR3JhbnVsYXJpdHk6IHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlVmFsdWVGcm9tQWR2YW5jZWRTZWxlY3QodmFsdWU6IFJhbmdlQWR2YW5jZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAvLyBjbGVhciBjdXN0b20gZGF0ZSB3aGVuIHNlbGVjdCBhIGFkdmFuY2VkIGRhdGVcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gW107XG4gICAgICAgIHRoaXMuZGF0ZVZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgdmFsdWU6IFt2YWx1ZS5iZWdpbiwgdmFsdWUuZW5kXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjaGFuZ2VWYWx1ZUZyb21TZWxlY3QodmFsdWU6IFRpbnlEYXRlLCBwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgLy8gY2xlYXIgYWR2YW5jZWQgZGF0ZSB3aGVuIHNlbGVjdCBhIGN1c3RvbSBkYXRlXG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkU2VsZWN0ZWRWYWx1ZSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBbbGVmdCwgcmlnaHRdID0gdGhpcy5zZWxlY3RlZFZhbHVlIGFzIFRpbnlEYXRlW107XG5cbiAgICAgICAgICAgIGlmICgoIWxlZnQgJiYgIXJpZ2h0KSB8fCAobGVmdCAmJiByaWdodCkpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0b3RhbGx5IGZ1bGwgb3IgZW1wdHksIGNsZWFuIHVwICYmIHJlLWFzc2lnbiBsZWZ0IGZpcnN0XG4gICAgICAgICAgICAgICAgdGhpcy5ob3ZlclZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlID0gW3ZhbHVlXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbbmV3IFRpbnlEYXRlKHN0YXJ0T2ZEYXkodGhpcy5zZWxlY3RlZFZhbHVlWzBdLm5hdGl2ZURhdGUpKV07XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhckNoYW5nZS5lbWl0KFt0aGlzLnNlbGVjdGVkVmFsdWVbMF0uY2xvbmUoKV0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsZWZ0ICYmICFyaWdodCkge1xuICAgICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGVtIGlzIGVtcHR5LCBhc3NpZ24gdGhlIG90aGVyIG9uZSBhbmQgc29ydCwgdGhlbiBzZXQgdGhlIGZpbmFsIHZhbHVlc1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJIb3ZlclZhbHVlKCk7IC8vIENsZWFuIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlKCdyaWdodCcsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBzb3J0UmFuZ2VWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpOyAvLyBTb3J0XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gW1xuICAgICAgICAgICAgICAgICAgICBuZXcgVGlueURhdGUoc3RhcnRPZkRheSh0aGlzLnNlbGVjdGVkVmFsdWVbMF0ubmF0aXZlRGF0ZSkpLFxuICAgICAgICAgICAgICAgICAgICBuZXcgVGlueURhdGUoZW5kT2ZEYXkodGhpcy5zZWxlY3RlZFZhbHVlWzFdLm5hdGl2ZURhdGUpKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5ub3JtYWxpemVSYW5nZVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFuZWxNb2RlKHRoaXMuZW5kUGFuZWxNb2RlLCBwYXJ0VHlwZSkgYXMgVGh5UGFuZWxNb2RlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuY2xvbmVSYW5nZURhdGUodGhpcy5zZWxlY3RlZFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhckNoYW5nZS5lbWl0KHRoaXMuY2xvbmVSYW5nZURhdGUodGhpcy5zZWxlY3RlZFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNsb25lUmFuZ2VEYXRlKHRoaXMuc2VsZWN0ZWRWYWx1ZSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHRoaXMudXBkYXRlSG91ck1pbnV0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdXBkYXRlZFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSG91ck1pbnV0ZSh2YWx1ZTogVGlueURhdGUpOiBUaW55RGF0ZSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yaWdpbkRhdGUgPSB0aGlzLnZhbHVlIGFzIFRpbnlEYXRlO1xuICAgICAgICBjb25zdCBkYXRlVGltZSA9IFt2YWx1ZS5nZXRIb3VycygpLCB2YWx1ZS5nZXRNaW51dGVzKCksIHZhbHVlLmdldFNlY29uZHMoKV07XG4gICAgICAgIGNvbnN0IG9yaWdpbkRhdGVUaW1lID0gW29yaWdpbkRhdGUuZ2V0SG91cnMoKSwgb3JpZ2luRGF0ZS5nZXRNaW51dGVzKCksIG9yaWdpbkRhdGUuZ2V0U2Vjb25kcygpXTtcblxuICAgICAgICBjb25zdCBpc0VxdWFsVGltZSA9IGRhdGVUaW1lLnRvU3RyaW5nKCkgPT09IG9yaWdpbkRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChpc0VxdWFsVGltZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNldEhtcyhvcmlnaW5EYXRlVGltZVswXSwgb3JpZ2luRGF0ZVRpbWVbMV0sIG9yaWdpbkRhdGVUaW1lWzJdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuYWJsZVByZXZOZXh0KGRpcmVjdGlvbjogJ3ByZXYnIHwgJ25leHQnLCBwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSAmJiB0aGlzLnBhbmVsTW9kZSA9PT0gdGhpcy5lbmRQYW5lbE1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMuYWN0aXZlRGF0ZSBhcyBUaW55RGF0ZVtdO1xuICAgICAgICAgICAgY29uc3Qgc2hvd01pZGRsZSA9ICFzdGFydC5hZGRNb250aHMoMSkuaXNTYW1lKGVuZCwgJ21vbnRoJyk7IC8vIE9uZSBtb250aCBkaWZmIHRoZW4gZG9uJ3Qgc2hvdyBtaWRkbGUgcHJldi9uZXh0XG4gICAgICAgICAgICBpZiAoKHBhcnRUeXBlID09PSAnbGVmdCcgJiYgZGlyZWN0aW9uID09PSAnbmV4dCcpIHx8IChwYXJ0VHlwZSA9PT0gJ3JpZ2h0JyAmJiBkaXJlY3Rpb24gPT09ICdwcmV2JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hvd01pZGRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQYW5lbE1vZGUocGFuZWxNb2RlOiBUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXSwgcGFydFR5cGU/OiBSYW5nZVBhcnRUeXBlKTogVGh5UGFuZWxNb2RlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhbmVsTW9kZVt0aGlzLmdldFBhcnRUeXBlSW5kZXgocGFydFR5cGUpXSBhcyBUaHlQYW5lbE1vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGFuZWxNb2RlIGFzIFRoeVBhbmVsTW9kZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlQnlTZWxlY3RvcihwYXJ0VHlwZT86IFJhbmdlUGFydFR5cGUpOiBUaW55RGF0ZSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU2hvdyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZTsgLy8gVXNlIHRoZSByZWFsIHRpbWUgdmFsdWUgdGhhdCB3aXRob3V0IGRlY29yYXRpb25zIHdoZW4gdGltZXBpY2tlciBpcyBzaG93biB1cFxuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZVNob3cgYXMgVGlueURhdGVbXSlbdGhpcy5nZXRQYXJ0VHlwZUluZGV4KHBhcnRUeXBlKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBUaW55RGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFjdGl2ZURhdGUocGFydFR5cGU/OiBSYW5nZVBhcnRUeXBlKTogVGlueURhdGUge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRlW3RoaXMuZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZSldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZSBhcyBUaW55RGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhcnRUeXBlSW5kZXgocGFydFR5cGU6IFJhbmdlUGFydFR5cGUgPSAnbGVmdCcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0VHlwZU1hcFtwYXJ0VHlwZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNaW5UaW55RGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluRGF0ZSA/IG5ldyBUaW55RGF0ZSh0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy5taW5EYXRlKS52YWx1ZSBhcyBEYXRlKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhUaW55RGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4RGF0ZSA/IG5ldyBUaW55RGF0ZSh0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy5tYXhEYXRlKS52YWx1ZSBhcyBEYXRlKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckhvdmVyVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG92ZXJWYWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IENvbXBhdGlibGVWYWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UgJiYgdGhpcy5mbGV4aWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eSA9ICdkYXknO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBiZWdpbjogdmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgZW5kOiB2YWx1ZVsxXSxcbiAgICAgICAgICAgICAgICBkYXRlR3JhbnVsYXJpdHk6IHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaW1lIHx8ICF0aGlzLnNob3dUaW1lUGlja2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlVGltZUNvbmZpcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVJhbmdlVmFsdWUodmFsdWU6IFRpbnlEYXRlW10sIG1vZGU6IFRoeVBhbmVsTW9kZSA9ICdtb250aCcpOiBUaW55RGF0ZVtdIHtcbiAgICAgICAgY29uc3QgaGVhZGVyTW9kZXM6IHsgW2tleSBpbiBUaHlQYW5lbE1vZGVdPzogVGh5UGFuZWxNb2RlIH0gPSB7XG4gICAgICAgICAgICB3ZWVrOiAnbW9udGgnLFxuICAgICAgICAgICAgZGF0ZTogJ21vbnRoJyxcbiAgICAgICAgICAgIG1vbnRoOiAneWVhcicsXG4gICAgICAgICAgICBxdWFydGVyOiAneWVhcicsXG4gICAgICAgICAgICB5ZWFyOiAnZGVjYWRlJ1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBoZWFkZXJNb2RlID0gaGVhZGVyTW9kZXNbbW9kZV07XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHZhbHVlO1xuICAgICAgICBjb25zdCBuZXdTdGFydCA9IHN0YXJ0IHx8IG5ldyBUaW55RGF0ZSgpO1xuICAgICAgICBsZXQgbmV3RW5kID0gZW5kO1xuICAgICAgICBpZiAoIW5ld0VuZCB8fCBuZXdTdGFydC5pc1NhbWUoZW5kLCBoZWFkZXJNb2RlIGFzIFRpbnlEYXRlQ29tcGFyZUdyYWluKSkge1xuICAgICAgICAgICAgbmV3RW5kID0gZGF0ZUFkZEFtb3VudChuZXdTdGFydCwgMSwgaGVhZGVyTW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtuZXdTdGFydCwgbmV3RW5kXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJhbmdlVmFsdWUocGFydFR5cGU6IFJhbmdlUGFydFR5cGUsIHZhbHVlOiBUaW55RGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWYgPSAodGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5jbG9uZVJhbmdlRGF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUgYXMgVGlueURhdGVbXSkpO1xuICAgICAgICByZWZbdGhpcy5nZXRQYXJ0VHlwZUluZGV4KHBhcnRUeXBlKV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb25lUmFuZ2VEYXRlKHZhbHVlOiBUaW55RGF0ZVtdKTogVGlueURhdGVbXSB7XG4gICAgICAgIHJldHVybiBbdmFsdWVbMF0gJiYgdmFsdWVbMF0uY2xvbmUoKSwgdmFsdWVbMV0gJiYgdmFsdWVbMV0uY2xvbmUoKV0gYXMgVGlueURhdGVbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGlzYWJsZVRpbWVDb25maXJtKCkge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlIHx8ICF0aGlzLnNob3dUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRlOiBUaW55RGF0ZSA9IHRoaXMudmFsdWUgPyAodGhpcy52YWx1ZSBhcyBUaW55RGF0ZSkgOiBuZXcgVGlueURhdGUoKTtcbiAgICAgICAgY29uc3QgbWluRGF0ZTogVGlueURhdGUgPSB0aGlzLmdldE1pblRpbnlEYXRlKCk7XG4gICAgICAgIGNvbnN0IG1heERhdGU6IFRpbnlEYXRlID0gdGhpcy5nZXRNYXhUaW55RGF0ZSgpO1xuXG4gICAgICAgIGlmICgobWluRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSA8IG1pbkRhdGUuZ2V0VGltZSgpKSB8fCAobWF4RGF0ZSAmJiBkYXRlLmdldFRpbWUoKSA+IG1heERhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUNvbmZpcm0gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUNvbmZpcm0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0ZWRTaG9ydGN1dFByZXNldChkYXRlOiBDb21wYXRpYmxlVmFsdWUpOiBDb21wYXRpYmxlVmFsdWUge1xuICAgICAgICBjb25zdCBtaW5EYXRlOiBUaW55RGF0ZSA9IHRoaXMuZ2V0TWluVGlueURhdGUoKTtcbiAgICAgICAgY29uc3QgbWF4RGF0ZTogVGlueURhdGUgPSB0aGlzLmdldE1heFRpbnlEYXRlKCk7XG5cbiAgICAgICAgY29uc3QgbWluVGltZTogbnVtYmVyID0gKG1pbkRhdGUgJiYgbWluRGF0ZS5nZXRUaW1lKCkpIHx8IG51bGw7XG4gICAgICAgIGNvbnN0IG1heFRpbWU6IG51bWJlciA9IChtYXhEYXRlICYmIG1heERhdGUuZ2V0VGltZSgpKSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkoZGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZTogVGlueURhdGUgPSBkYXRlWzBdO1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZTogVGlueURhdGUgPSBkYXRlWzFdO1xuXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWU6IG51bWJlciA9IHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lOiBudW1iZXIgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgaWYgKChtYXhEYXRlICYmIHN0YXJ0VGltZSA+IG1heFRpbWUpIHx8IChtaW5EYXRlICYmIGVuZFRpbWUgPCBtaW5UaW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbkRhdGUgJiYgc3RhcnRUaW1lIDwgbWluVGltZSAmJiBtYXhEYXRlICYmIGVuZFRpbWUgPiBtYXhUaW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFttaW5EYXRlLCBtYXhEYXRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbkRhdGUgJiYgc3RhcnRUaW1lIDwgbWluVGltZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbbWluRGF0ZSwgZW5kRGF0ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXhEYXRlICYmIGVuZFRpbWUgPiBtYXhUaW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzdGFydERhdGUsIG1heERhdGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZVRpbWU6IG51bWJlciA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICBpZiAoKG1pbkRhdGUgJiYgc2luZ2xlVGltZSA8IG1pblRpbWUpIHx8IChtYXhEYXRlICYmIHNpbmdsZVRpbWUgPiBtYXhUaW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3J0Y3V0U2V0VmFsdWUoc2hvcnRjdXRQcmVzZXRzOiBUaHlTaG9ydGN1dFByZXNldCkge1xuICAgICAgICBpZiAoc2hvcnRjdXRQcmVzZXRzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSBzaG9ydGN1dFByZXNldHM7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3RlZFByZXNldFZhbHVlOiBDb21wYXRpYmxlVmFsdWU7XG4gICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBiZWdpbjogbnVtYmVyIHwgRGF0ZSA9IGdldFNob3J0Y3V0VmFsdWUodmFsdWVbMF0pO1xuICAgICAgICAgICAgY29uc3QgZW5kOiBudW1iZXIgfCBEYXRlID0gZ2V0U2hvcnRjdXRWYWx1ZSh2YWx1ZVsxXSk7XG5cbiAgICAgICAgICAgIGlmIChiZWdpbiAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLmdldFNlbGVjdGVkU2hvcnRjdXRQcmVzZXQoW1xuICAgICAgICAgICAgICAgICAgICBuZXcgVGlueURhdGUoc3RhcnRPZkRheShiZWdpbikpLFxuICAgICAgICAgICAgICAgICAgICBuZXcgVGlueURhdGUoZW5kT2ZEYXkoZW5kKSlcbiAgICAgICAgICAgICAgICBdKSBhcyBUaW55RGF0ZVtdO1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZXRWYWx1ZSA9IHRoaXMuY2xvbmVSYW5nZURhdGUodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZURhdGU6IG51bWJlciB8IERhdGUgPSBnZXRTaG9ydGN1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZVRpbnlEYXRlOiBUaW55RGF0ZSA9IHRoaXMudXBkYXRlSG91ck1pbnV0ZShuZXcgVGlueURhdGUoc2luZ2xlRGF0ZSkpO1xuICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZXRWYWx1ZSA9IHRoaXMuZ2V0U2VsZWN0ZWRTaG9ydGN1dFByZXNldChzaW5nbGVUaW55RGF0ZSkgYXMgVGlueURhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShzZWxlY3RlZFByZXNldFZhbHVlKTtcbiAgICAgICAgY29uc3Qgc2hvcnRjdXRQcmVzZXRzVmFsdWUgPSBzZXRWYWx1ZUJ5VGltZXN0YW1wUHJlY2lzaW9uKHNob3J0Y3V0UHJlc2V0cz8udmFsdWUsIHRoaXMuaXNSYW5nZSwgdGhpcy50aW1lc3RhbXBQcmVjaXNpb24pIGFzIG51bWJlcjtcbiAgICAgICAgdGhpcy5kYXRlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogaGVscGVycy5pc0FycmF5KHZhbHVlKSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZSA6IHNlbGVjdGVkUHJlc2V0VmFsdWUsXG4gICAgICAgICAgICB0cmlnZ2VyUHJlc2V0OiBPYmplY3QuYXNzaWduKHt9LCBzaG9ydGN1dFByZXNldHMsIHsgdmFsdWU6IHNob3J0Y3V0UHJlc2V0c1ZhbHVlIH0pXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWhlbHBlcnMuaXNBcnJheSh2YWx1ZSkgJiYgdGhpcy5zaG93VGltZSAmJiB0aGlzLnNob3dUaW1lUGlja2VyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZURhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1waWNrZXItY29udGFpbmVyIHt7IGNsYXNzTmFtZSB9fVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0ge3sgc2hvd1dlZWsgPyBwcmVmaXhDbHMgKyAnLXdlZWstbnVtYmVyJyA6ICcnIH19XG4gICAgIHt7IGlzUmFuZ2UgPyBwcmVmaXhDbHMgKyAnLXJhbmdlJyA6ICcnIH19IHt7IHByZWZpeENscyB9fS1waWNrZXItc2hvcnRjdXQte3sgc2hvcnRjdXRQb3NpdGlvbiA9PT0gJ2xlZnQnID8gJ2xlZnQnIDogJ2JvdHRvbScgfX1cIj5cbiAgICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXBpY2tlci1zaG9ydGN1dFwiICpuZ0lmPVwic2hvd1Nob3J0Y3V0XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXBpY2tlci1zaG9ydGN1dC1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbm5lclNob3J0Y3V0UHJlc2V0czsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgKGNsaWNrKT1cInNob3J0Y3V0U2V0VmFsdWUoaXRlbSlcIj5cbiAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1kYXRlLXBhbmVsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbGV4aWJsZTsgZWxzZSBkZWZhdWx0UGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWRhdGUtcGFuZWwtZmxleGlibGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tZGF0ZS1wYW5lbC1mbGV4aWJsZS10YWJcIj5cbiAgICAgICAgICAgICAgPHRoeS1uYXYgdGh5VHlwZT1cInB1bGxlZFwiIHRoeVNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlOYXZMaW5rIFt0aHlOYXZMaW5rQWN0aXZlXT1cImZsZXhpYmxlQWN0aXZlVGFiID09PSAnYWR2YW5jZWQnXCIgKGNsaWNrKT1cInNlbGVjdFRhYignYWR2YW5jZWQnKVwiXG4gICAgICAgICAgICAgICAgICA+6auY57qn6YCJ6aG5PC9hXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlOYXZMaW5rIFt0aHlOYXZMaW5rQWN0aXZlXT1cImZsZXhpYmxlQWN0aXZlVGFiID09PSAnY3VzdG9tJ1wiIChjbGljayk9XCJzZWxlY3RUYWIoJ2N1c3RvbScpXCJcbiAgICAgICAgICAgICAgICAgID7oh6rlrprkuYk8L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvdGh5LW5hdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0aHlCdXR0b25JY29uPVwic3dlZXBcIiB0aHlTaXplPVwic21cIiBjbGFzcz1cImNsZWFyLWRhdGUtYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyRmxleGlibGVWYWx1ZSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tZGF0ZS1wYW5lbC1hZHZhbmNlZFwiIFtoaWRkZW5dPVwiZmxleGlibGVBY3RpdmVUYWIgIT09ICdhZHZhbmNlZCdcIj5cbiAgICAgICAgICAgICAgICA8ZGF0ZS1jYXJvdXNlbFxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRhdGVDYXJvdXNlbFwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VWYWx1ZUZyb21BZHZhbmNlZFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWR2YW5jZWRTZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFthY3RpdmVEYXRlXT1cInNlbGVjdGVkVmFsdWVbMF1cIj48L2RhdGUtY2Fyb3VzZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiZmxleGlibGVBY3RpdmVUYWIgIT09ICdjdXN0b20nXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxJbm5lclBvcHVwXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFuZWw+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmFuZ2U7IGVsc2UgdHBsU2luZ2xlUGFydFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFJhbmdlUGFydDsgY29udGV4dDogeyBwYXJ0VHlwZTogJ2xlZnQnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxSYW5nZVBhcnQ7IGNvbnRleHQ6IHsgcGFydFR5cGU6ICdyaWdodCcgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSYW5nZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbEZvb3RlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdHBsSW5uZXJQb3B1cCBsZXQtcGFydFR5cGU9XCJwYXJ0VHlwZVwiPlxuICA8aW5uZXItcG9wdXBcbiAgICBbc2hvd1dlZWtdPVwic2hvd1dlZWtcIlxuICAgIFtpc1JhbmdlXT1cImlzUmFuZ2VcIlxuICAgIFtwYW5lbE1vZGVdPVwiZ2V0UGFuZWxNb2RlKHBhbmVsTW9kZSwgcGFydFR5cGUpXCJcbiAgICBbZW5kUGFuZWxNb2RlXT1cImdldFBhbmVsTW9kZShlbmRQYW5lbE1vZGUsIHBhcnRUeXBlKVwiXG4gICAgW3BhcnRUeXBlXT1cInBhcnRUeXBlXCJcbiAgICBbc2hvd0RhdGVSYW5nZUlucHV0XT1cImZsZXhpYmxlICYmIGZsZXhpYmxlQWN0aXZlVGFiID09PSAnY3VzdG9tJ1wiXG4gICAgKHBhbmVsTW9kZUNoYW5nZSk9XCJvblBhbmVsTW9kZUNoYW5nZSgkZXZlbnQsIHBhcnRUeXBlKVwiXG4gICAgW3ZhbHVlXT1cImdldFZhbHVlQnlTZWxlY3RvcihwYXJ0VHlwZSlcIlxuICAgIFtzZWxlY3RlZFZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIlxuICAgIFthY3RpdmVEYXRlXT1cImdldEFjdGl2ZURhdGUocGFydFR5cGUpXCJcbiAgICBbcmFuZ2VBY3RpdmVEYXRlXT1cImFjdGl2ZURhdGVcIlxuICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcbiAgICBbZGF0ZVJlbmRlcl09XCJkYXRlUmVuZGVyXCJcbiAgICBbaG92ZXJWYWx1ZV09XCJob3ZlclZhbHVlXCJcbiAgICBbZW5hYmxlUHJldl09XCJlbmFibGVQcmV2TmV4dCgncHJldicsIHBhcnRUeXBlKVwiXG4gICAgW2VuYWJsZU5leHRdPVwiZW5hYmxlUHJldk5leHQoJ25leHQnLCBwYXJ0VHlwZSlcIlxuICAgIChkYXlIb3Zlcik9XCJvbkRheUhvdmVyKCRldmVudClcIlxuICAgIChzZWxlY3REYXRlKT1cImNoYW5nZVZhbHVlRnJvbVNlbGVjdCgkZXZlbnQsIHBhcnRUeXBlKVwiXG4gICAgKGhlYWRlckNoYW5nZSk9XCJvbkhlYWRlckNoYW5nZSgkZXZlbnQsIHBhcnRUeXBlKVwiPjwvaW5uZXItcG9wdXA+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RwbEZvb3Rlcj5cbiAgPGNhbGVuZGFyLWZvb3RlclxuICAgIFtzaG93VGltZV09XCJzaG93VGltZVwiXG4gICAgW211c3RTaG93VGltZV09XCJtdXN0U2hvd1RpbWVcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW2Rpc2FibGVUaW1lQ29uZmlybV09XCJkaXNhYmxlVGltZUNvbmZpcm1cIlxuICAgIChzaG93VGltZVBpY2tlckNoYW5nZSk9XCJvblNob3dUaW1lUGlja2VyQ2hhbmdlKCRldmVudClcIlxuICAgIChzZWxlY3RUaW1lKT1cIm9uU2VsZWN0VGltZSgkZXZlbnQpXCJcbiAgICAoY2xpY2tPayk9XCJvbkNsaWNrT2soKVwiXG4gICAgKGNsaWNrUmVtb3ZlKT1cIm9uQ2xpY2tSZW1vdmUoKVwiPjwvY2FsZW5kYXItZm9vdGVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaW5nbGUgT05MWSAtLT5cbjxuZy10ZW1wbGF0ZSAjdHBsU2luZ2xlUGFydD5cbiAgPGRpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsSW5uZXJQb3B1cFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmFuZ2UgT05MWSAtLT5cbjxuZy10ZW1wbGF0ZSAjdHBsUmFuZ2VQYXJ0IGxldC1wYXJ0VHlwZT1cInBhcnRUeXBlXCI+XG4gIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcmFuZ2UtcGFydCB7eyBwcmVmaXhDbHMgfX0tcmFuZ2Ute3sgcGFydFR5cGUgfX1cIj5cbiAgICA8ZGl2IHN0eWxlPVwib3V0bGluZTogbm9uZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbElubmVyUG9wdXA7IGNvbnRleHQ6IHsgcGFydFR5cGU6IHBhcnRUeXBlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -30,7 +30,7 @@ export class ThyMonthPicker extends BasePicker {
|
|
|
30
30
|
multi: true,
|
|
31
31
|
useExisting: forwardRef(() => ThyMonthPicker)
|
|
32
32
|
}
|
|
33
|
-
], exportAs: ["thyMonthPicker"], usesInheritance: true, ngImport: i0, template: "<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n <date-popup\n [attr.tabindex]=\"-1\"\n *ngIf=\"isShowDatePopup\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"></date-popup>\n</thy-picker>\n", dependencies: [{ kind: "component", type: ThyPicker, selector: "thy-picker", inputs: ["isRange", "open", "disabled", "placeholder", "readonly", "allowClear", "autoFocus", "className", "size", "suffixIcon", "placement", "flexible", "mode", "hasBackdrop", "format", "flexibleDateGranularity", "value"], outputs: ["blur", "valueChange", "openChange", "inputChange"], exportAs: ["thyPicker"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatePopup, selector: "date-popup", inputs: ["isRange", "showWeek", "format", "disabledDate", "minDate", "maxDate", "showToday", "showTime", "mustShowTime", "dateRender", "className", "panelMode", "value", "defaultPickerValue", "showShortcut", "shortcutPresets", "shortcutPosition", "flexible", "flexibleDateGranularity"], outputs: ["panelModeChange", "calendarChange", "valueChange", "resultOk", "showTimePickerChange", "dateValueChange"], exportAs: ["datePopup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
+
], exportAs: ["thyMonthPicker"], usesInheritance: true, ngImport: i0, template: "<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n <date-popup\n [attr.tabindex]=\"-1\"\n *ngIf=\"isShowDatePopup\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n [timestampPrecision]=\"thyTimestampPrecision\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"></date-popup>\n</thy-picker>\n", dependencies: [{ kind: "component", type: ThyPicker, selector: "thy-picker", inputs: ["isRange", "open", "disabled", "placeholder", "readonly", "allowClear", "autoFocus", "className", "size", "suffixIcon", "placement", "flexible", "mode", "hasBackdrop", "format", "flexibleDateGranularity", "value"], outputs: ["blur", "valueChange", "openChange", "inputChange"], exportAs: ["thyPicker"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatePopup, selector: "date-popup", inputs: ["isRange", "showWeek", "format", "disabledDate", "minDate", "maxDate", "showToday", "showTime", "mustShowTime", "dateRender", "className", "panelMode", "value", "defaultPickerValue", "showShortcut", "shortcutPresets", "shortcutPosition", "flexible", "flexibleDateGranularity", "timestampPrecision"], outputs: ["panelModeChange", "calendarChange", "valueChange", "resultOk", "showTimePickerChange", "dateValueChange"], exportAs: ["datePopup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34
34
|
}
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyMonthPicker, decorators: [{
|
|
36
36
|
type: Component,
|
|
@@ -40,8 +40,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
40
40
|
multi: true,
|
|
41
41
|
useExisting: forwardRef(() => ThyMonthPicker)
|
|
42
42
|
}
|
|
43
|
-
], standalone: true, imports: [ThyPicker, NgIf, DatePopup], template: "<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n <date-popup\n [attr.tabindex]=\"-1\"\n *ngIf=\"isShowDatePopup\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"></date-popup>\n</thy-picker>\n" }]
|
|
43
|
+
], standalone: true, imports: [ThyPicker, NgIf, DatePopup], template: "<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n <date-popup\n [attr.tabindex]=\"-1\"\n *ngIf=\"isShowDatePopup\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n [timestampPrecision]=\"thyTimestampPrecision\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"></date-popup>\n</thy-picker>\n" }]
|
|
44
44
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { thyFormat: [{
|
|
45
45
|
type: Input
|
|
46
46
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9tb250aC1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFL0M7Ozs7R0FJRztBQWdCSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFRMUMsWUFBWSxHQUFzQixFQUFZLE9BQW1CO1FBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEc0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVBqRTs7V0FFRztRQUNNLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFFdkIsaUJBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUlyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7OEdBWlEsY0FBYztrR0FBZCxjQUFjLG1HQVZaO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDaEQ7U0FDSiwrRUN6QkwsOHhEQW9EQSw0Q0R6QmMsU0FBUywrV0FBRSxJQUFJLDZGQUFFLFNBQVM7OzJGQUUzQixjQUFjO2tCQWYxQixTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsa0JBQWtCLFlBQ2xCLGdCQUFnQixhQUVmO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQzt5QkFDaEQ7cUJBQ0osY0FDVyxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQzsrR0FNNUIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJhc2VQaWNrZXIgfSBmcm9tICcuL2Jhc2UtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUG9wdXAgfSBmcm9tICcuL2xpYi9wb3B1cHMvZGF0ZS1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5UGlja2VyIH0gZnJvbSAnLi9waWNrZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiDmnIjku73pgInmi6nnu4Tku7ZcbiAqIEBuYW1lIHRoeS1tb250aC1waWNrZXJcbiAqIEBvcmRlciA0MFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ3RoeS1tb250aC1waWNrZXInLFxuICAgIGV4cG9ydEFzOiAndGh5TW9udGhQaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXNlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlNb250aFBpY2tlcilcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5UGlja2VyLCBOZ0lmLCBEYXRlUG9wdXBdXG59KVxuZXhwb3J0IGNsYXNzIFRoeU1vbnRoUGlja2VyIGV4dGVuZHMgQmFzZVBpY2tlciB7XG4gICAgLyoqXG4gICAgICog5bGV56S655qE5pyI5Lu95qC85byPXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Rm9ybWF0ID0gJ3l5eXktTU0nO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKGNkciwgZWxlbWVudCk7XG4gICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLmFkZENsYXNzKCd0aHktY2FsZW5kYXItcGlja2VyJyk7XG4gICAgICAgIHRoaXMudGh5TW9kZSA9ICdtb250aCc7XG4gICAgfVxufVxuIiwiPHRoeS1waWNrZXJcbiAgI3RoeVBpY2tlclxuICBbaXNSYW5nZV09XCJpc1JhbmdlXCJcbiAgW3ZhbHVlXT1cInRoeVZhbHVlXCJcbiAgW2ZsZXhpYmxlXT1cImZsZXhpYmxlXCJcbiAgW2ZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5XT1cImZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5XCJcbiAgKHZhbHVlQ2hhbmdlKT1cIm9uSW5wdXRWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgW29wZW5dPVwidGh5T3BlblwiXG4gIFtkaXNhYmxlZF09XCJ0aHlEaXNhYmxlZFwiXG4gIFtmb3JtYXRdPVwidGh5Rm9ybWF0XCJcbiAgW21vZGVdPVwidGh5TW9kZVwiXG4gIFthbGxvd0NsZWFyXT1cInRoeUFsbG93Q2xlYXJcIlxuICBbY2xhc3NOYW1lXT1cInRoeU9yaWdpbkNsYXNzTmFtZVwiXG4gIFthdXRvRm9jdXNdPVwidGh5QXV0b0ZvY3VzXCJcbiAgW3BsYWNlaG9sZGVyXT1cInRoeVBsYWNlSG9sZGVyXCJcbiAgW3JlYWRvbmx5XT1cInRoeVJlYWRvbmx5XCJcbiAgW3NpemVdPVwidGh5U2l6ZVwiXG4gIFtzdWZmaXhJY29uXT1cInRoeVN1ZmZpeEljb25cIlxuICBbcGxhY2VtZW50XT1cInRoeVBsYWNlbWVudFwiXG4gIFtoYXNCYWNrZHJvcF09XCJ0aHlIYXNCYWNrZHJvcFwiXG4gIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAoaW5wdXRDaGFuZ2UpPVwib25JbnB1dERhdGUoJGV2ZW50KVwiPlxuICA8ZGF0ZS1wb3B1cFxuICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAqbmdJZj1cImlzU2hvd0RhdGVQb3B1cFwiXG4gICAgW2lzUmFuZ2VdPVwiaXNSYW5nZVwiXG4gICAgW3Nob3dXZWVrXT1cInNob3dXZWVrXCJcbiAgICBbcGFuZWxNb2RlXT1cInBhbmVsTW9kZVwiXG4gICAgW2ZsZXhpYmxlXT1cImZsZXhpYmxlXCJcbiAgICBbZmxleGlibGVEYXRlR3JhbnVsYXJpdHldPVwiZmxleGlibGVEYXRlR3JhbnVsYXJpdHlcIlxuICAgIFtkZWZhdWx0UGlja2VyVmFsdWVdPVwidGh5RGVmYXVsdFBpY2tlclZhbHVlXCJcbiAgICAocGFuZWxNb2RlQ2hhbmdlKT1cInRoeU9uUGFuZWxDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAoc2hvd1RpbWVQaWNrZXJDaGFuZ2UpPVwib25TaG93VGltZVBpY2tlckNoYW5nZSgkZXZlbnQpXCJcbiAgICBbdmFsdWVdPVwidGh5VmFsdWVcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChjYWxlbmRhckNoYW5nZSk9XCJvbkNhbGVuZGFyQ2hhbmdlKCRldmVudClcIlxuICAgIFtzaG93VGltZV09XCJ0aHlTaG93VGltZVwiXG4gICAgW211c3RTaG93VGltZV09XCJ3aXRoVGltZVwiXG4gICAgW2Zvcm1hdF09XCJ0aHlGb3JtYXRcIlxuICAgIFtkYXRlUmVuZGVyXT1cInRoeURhdGVSZW5kZXJcIlxuICAgIFtkaXNhYmxlZERhdGVdPVwidGh5RGlzYWJsZWREYXRlXCJcbiAgICBbbWluRGF0ZV09XCJ0aHlNaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJ0aHlNYXhEYXRlXCJcbiAgICBbc2hvd1Nob3J0Y3V0XT1cInRoeVNob3dTaG9ydGN1dFwiXG4gICAgW3Nob3J0Y3V0UHJlc2V0c109XCJzaG9ydGN1dFByZXNldHNcIlxuICAgIFtzaG9ydGN1dFBvc2l0aW9uXT1cInNob3J0Y3V0UG9zaXRpb25cIlxuICAgIFt0aW1lc3RhbXBQcmVjaXNpb25dPVwidGh5VGltZXN0YW1wUHJlY2lzaW9uXCJcbiAgICAoZGF0ZVZhbHVlQ2hhbmdlKT1cIm9uRGF0ZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIFtjbGFzc05hbWVdPVwidGh5UGFuZWxDbGFzc05hbWVcIlxuICAgIChyZXN1bHRPayk9XCJvblJlc3VsdE9rKClcIj48L2RhdGUtcG9wdXA+XG48L3RoeS1waWNrZXI+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromUnixTime } from 'date-fns';
|
|
2
|
-
import { helpers, TinyDate } from 'ngx-tethys/util';
|
|
2
|
+
import { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';
|
|
3
3
|
export function transformDateValue(value) {
|
|
4
4
|
if (!value) {
|
|
5
5
|
return { value: null };
|
|
@@ -203,4 +203,16 @@ function fixStringDate(dateStr) {
|
|
|
203
203
|
}
|
|
204
204
|
return replacedStr;
|
|
205
205
|
}
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvcGlja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFxRztJQUtwSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFFBQVEsRUFBRSx1QkFBMkMsQ0FBQztJQUMxRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLEtBQUssSUFBSSx5QkFBeUIsQ0FBQyxLQUF3QixDQUFDLEVBQUUsQ0FBQztRQUMvRCxJQUFJLEtBQUssWUFBWSxRQUFRLEVBQUUsQ0FBQztZQUM1QixLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBa0IsQ0FBQyxFQUFFLENBQUM7UUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxT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TUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JELFdBQVcsR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBhdGlibGVEYXRlLCBEYXRlRW50cnksIFRoeURhdGVSYW5nZUVudHJ5LCBUaHlQYW5lbE1vZGUsIFRoeURhdGVHcmFudWxhcml0eSwgVGh5U2hvcnRjdXRWYWx1ZSB9IGZyb20gJy4vc3RhbmRhcmQtdHlwZXMnO1xuXG5pbXBvcnQgeyBmcm9tVW5peFRpbWUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBoZWxwZXJzLCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4vaW5uZXItdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0ZVZhbHVlKHZhbHVlOiBDb21wYXRpYmxlRGF0ZSB8IENvbXBhdGlibGVWYWx1ZSB8IG51bWJlciB8IERhdGVFbnRyeSB8IFRoeURhdGVSYW5nZUVudHJ5IHwgUmFuZ2VBZHZhbmNlZFZhbHVlKToge1xuICAgIHZhbHVlOiBDb21wYXRpYmxlRGF0ZTtcbiAgICB3aXRoVGltZT86IGJvb2xlYW47XG4gICAgZmxleGlibGVEYXRlR3JhbnVsYXJpdHk/OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG59IHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiBudWxsIH07XG4gICAgfVxuICAgIGxldCB3aXRoVGltZSwgZmxleGlibGVEYXRlR3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YWx1ZSA9IGNvbnZlcnREYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlICYmIGluc3RhbmNlT2ZDb21wYXRpYmxlVmFsdWUodmFsdWUgYXMgQ29tcGF0aWJsZVZhbHVlKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUaW55RGF0ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSBjb252ZXJ0RGF0ZSh2YWx1ZS5uYXRpdmVEYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlWzBdID0gY29udmVydERhdGUodmFsdWVbMF0ubmF0aXZlRGF0ZSk7XG4gICAgICAgICAgICB2YWx1ZVsxXSA9IGNvbnZlcnREYXRlKHZhbHVlWzFdLm5hdGl2ZURhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiBpbnN0YW5jZU9mRGF0ZUVudHJ5KHZhbHVlIGFzIERhdGVFbnRyeSkpIHtcbiAgICAgICAgY29uc3QgeyBkYXRlLCB3aXRoX3RpbWUgfSA9IHZhbHVlIGFzIERhdGVFbnRyeTtcbiAgICAgICAgdmFsdWUgPSBkYXRlID8gY29udmVydERhdGUoZGF0ZSkgOiBudWxsO1xuICAgICAgICB3aXRoVGltZSA9ICEhd2l0aF90aW1lO1xuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgaW5zdGFuY2VPZlJhbmdlRW50cnkodmFsdWUgYXMgVGh5RGF0ZVJhbmdlRW50cnkpKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlVmFsdWUgPSB2YWx1ZSBhcyBUaHlEYXRlUmFuZ2VFbnRyeTtcbiAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgaWYgKHJhbmdlVmFsdWUuYmVnaW4gJiYgcmFuZ2VWYWx1ZS5lbmQpIHtcbiAgICAgICAgICAgIHZhbHVlWzBdID0gY29udmVydERhdGUocmFuZ2VWYWx1ZS5iZWdpbik7XG4gICAgICAgICAgICB2YWx1ZVsxXSA9IGNvbnZlcnREYXRlKHJhbmdlVmFsdWUuZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmFuZ2VWYWx1ZS5ncmFudWxhcml0eSkge1xuICAgICAgICAgICAgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSByYW5nZVZhbHVlLmdyYW51bGFyaXR5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIGluc3RhbmNlT2ZSYW5nZUFkdmFuY2VkVmFsdWUodmFsdWUgYXMgUmFuZ2VBZHZhbmNlZFZhbHVlKSkge1xuICAgICAgICBjb25zdCByYW5nZVZhbHVlID0gdmFsdWUgYXMgUmFuZ2VBZHZhbmNlZFZhbHVlO1xuICAgICAgICBpZiAocmFuZ2VWYWx1ZS5kYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgICAgIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gcmFuZ2VWYWx1ZS5kYXRlR3JhbnVsYXJpdHk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgaWYgKHJhbmdlVmFsdWUuYmVnaW4gJiYgcmFuZ2VWYWx1ZS5lbmQpIHtcbiAgICAgICAgICAgIHZhbHVlWzBdID0gY29udmVydERhdGUocmFuZ2VWYWx1ZS5iZWdpbi5uYXRpdmVEYXRlKTtcbiAgICAgICAgICAgIHZhbHVlWzFdID0gY29udmVydERhdGUocmFuZ2VWYWx1ZS5lbmQubmF0aXZlRGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlIGFzIENvbXBhdGlibGVEYXRlLCB3aXRoVGltZSwgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsZXhpYmxlQWR2YW5jZWRSZWFkYWJsZVZhbHVlKHRpbnlEYXRlczogVGlueURhdGVbXSwgZmxleGlibGVEYXRlR3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgIGlmICghdGlueURhdGVzWzBdIHx8ICF0aW55RGF0ZXNbMV0pIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBzd2l0Y2ggKGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgaWYgKHRpbnlEYXRlc1swXS5pc1NhbWVZZWFyKHRpbnlEYXRlc1sxXSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3RpbnlEYXRlc1swXS5nZXRZZWFyKCl95bm0YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBgJHt0aW55RGF0ZXNbMF0uZ2V0WWVhcigpfeW5tCDvvZ4gJHt0aW55RGF0ZXNbMV0uZ2V0WWVhcigpfeW5tGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICBpZiAodGlueURhdGVzWzBdLmlzU2FtZVF1YXJ0ZXIodGlueURhdGVzWzFdKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7dGlueURhdGVzWzBdLmdldFllYXIoKX3lubQgUSR7dGlueURhdGVzWzBdLmdldFF1YXJ0ZXIoKX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3RpbnlEYXRlc1swXS5nZXRZZWFyKCl95bm0IFEke3RpbnlEYXRlc1swXS5nZXRRdWFydGVyKCl9IH4gJHt0aW55RGF0ZXNbMV0uZ2V0WWVhcigpfeW5tCBRJHt0aW55RGF0ZXNbMV0uZ2V0UXVhcnRlcigpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgaWYgKHRpbnlEYXRlc1swXS5pc1NhbWVNb250aCh0aW55RGF0ZXNbMV0pKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBgJHt0aW55RGF0ZXNbMF0uZ2V0WWVhcigpfeW5tCAke3RpbnlEYXRlc1swXS5nZXRNb250aCgpICsgMX3mnIhgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3RpbnlEYXRlc1swXS5nZXRZZWFyKCl95bm0ICR7dGlueURhdGVzWzBdLmdldE1vbnRoKCkgKyAxfeaciCB+ICR7dGlueURhdGVzWzFdLmdldFllYXIoKX3lubQgJHtcbiAgICAgICAgICAgICAgICAgICAgdGlueURhdGVzWzFdLmdldE1vbnRoKCkgKyAxXG4gICAgICAgICAgICAgICAgfeaciGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGUoZGF0ZTogRGF0ZSB8IG51bWJlcik6IERhdGUge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGRhdGUudG9TdHJpbmcoKS5sZW5ndGggPCAxMykge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Vbml4VGltZShkYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1ZhbHVlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICEhdmFsdWVbMF0gJiYgISF2YWx1ZVsxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsdWUodmFsdWU6IENvbXBhdGlibGVEYXRlIHwgbnVsbCwgaXNSYW5nZTogYm9vbGVhbiA9IGZhbHNlKTogQ29tcGF0aWJsZVZhbHVlIHtcbiAgICBpZiAoaXNSYW5nZSkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAodmFsdWUgYXMgRGF0ZVtdKS5tYXAodmFsID0+IG5ldyBUaW55RGF0ZSh2YWwpKSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBUaW55RGF0ZSh2YWx1ZSBhcyBEYXRlKSA6IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUFkZEFtb3VudCh2YWx1ZTogVGlueURhdGUsIGFtb3VudDogbnVtYmVyLCBtb2RlOiBUaHlQYW5lbE1vZGUpOiBUaW55RGF0ZSB7XG4gICAgbGV0IGRhdGU6IFRpbnlEYXRlO1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICBjYXNlICdkZWNhZGUnOlxuICAgICAgICAgICAgZGF0ZSA9IHZhbHVlLmFkZFllYXJzKGFtb3VudCAqIDEwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgIGRhdGUgPSB2YWx1ZS5hZGRZZWFycyhhbW91bnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgIGRhdGUgPSB2YWx1ZS5hZGRNb250aHMoYW1vdW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGF0ZSA9IHZhbHVlLmFkZE1vbnRocyhhbW91bnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xufVxuXG4vLyByaWdodERhdGUg6LaF6L+HIGxlZnREYXRlIOS4gOS4quaciFxuZXhwb3J0IGZ1bmN0aW9uIGlzQWZ0ZXJNb3JlVGhhbk9uZU1vbnRoKHJpZ2h0RGF0ZTogVGlueURhdGUsIGxlZnREYXRlOiBUaW55RGF0ZSkge1xuICAgIHJpZ2h0RGF0ZSA9IHJpZ2h0RGF0ZSA/IHJpZ2h0RGF0ZSA6IGxlZnREYXRlID8gbGVmdERhdGUgOiBuZXcgVGlueURhdGUoKTtcbiAgICBsZWZ0RGF0ZSA9IGxlZnREYXRlID8gbGVmdERhdGUgOiByaWdodERhdGU7XG4gICAgaWYgKHJpZ2h0RGF0ZS5nZXRZZWFyKCkgPCBsZWZ0RGF0ZS5nZXRZZWFyKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChyaWdodERhdGUuZ2V0WWVhcigpID09PSBsZWZ0RGF0ZS5nZXRZZWFyKCkgJiYgbGVmdERhdGUuZ2V0TW9udGgoKSArIDEgPj0gcmlnaHREYXRlLmdldE1vbnRoKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIOWkhOeQhnJpZ2h0RGF0ZSgyMDIwLDEsMSkg5Li6bGVmdERhdGUoMjAyMCwxMiwxKeWQjuS4gOW5tDHmnIgs5ZCM5pe2bGVmdERhdGXml6XmnJ/kuLoxMuaciOeahOeJueauiuaDheWGtVxuICAgIHJldHVybiAhKHJpZ2h0RGF0ZS5nZXRZZWFyKCkgLSBsZWZ0RGF0ZS5nZXRZZWFyKCkgPT09IDEgJiYgcmlnaHREYXRlLmdldE1vbnRoKCkgPT09IDAgJiYgbGVmdERhdGUuZ2V0TW9udGgoKSA9PT0gMTEpO1xufVxuXG4vLyByaWdodERhdGUg6LaF6L+HIGxlZnREYXRlIOS4jeWIsOS4gOW5tFxuZXhwb3J0IGZ1bmN0aW9uIGlzQWZ0ZXJNb3JlVGhhbkxlc3NPbmVZZWFyKHJpZ2h0RGF0ZTogVGlueURhdGUsIGxlZnREYXRlOiBUaW55RGF0ZSkge1xuICAgIHJpZ2h0RGF0ZSA9IHJpZ2h0RGF0ZSA/IHJpZ2h0RGF0ZSA6IGxlZnREYXRlID8gbGVmdERhdGUgOiBuZXcgVGlueURhdGUoKTtcbiAgICBsZWZ0RGF0ZSA9IGxlZnREYXRlID8gbGVmdERhdGUgOiByaWdodERhdGU7XG4gICAgaWYgKHJpZ2h0RGF0ZS5nZXRZZWFyKCkgPD0gbGVmdERhdGUuZ2V0WWVhcigpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8g5aSE55CGcmlnaHREYXRlKDIwMjEsMSwxKeaXpeacn+avlGxlZnREYXRlKDIwMjAsMTIsMSnml6XmnJ/lpKcx5bm0LOWQjOaXtnJpZ2h0RGF0ZeaXpeacn+aciOS7veWwj+S6jmxlZnREYXRl5pel5pyf5pyI5Lu955qE5oOF5Ya1XG4gICAgcmV0dXJuICEocmlnaHREYXRlLmdldFllYXIoKSAtIGxlZnREYXRlLmdldFllYXIoKSA9PT0gMSAmJiByaWdodERhdGUuZ2V0TW9udGgoKSA8PSBsZWZ0RGF0ZS5nZXRNb250aCgpKTtcbn1cblxuLy8gcmlnaHREYXRlIOi2hei/hyBsZWZ0RGF0ZSDkuIDlubRcbmV4cG9ydCBmdW5jdGlvbiBpc0FmdGVyTW9yZVRoYW5PbmVZZWFyKHJpZ2h0RGF0ZTogVGlueURhdGUsIGxlZnREYXRlOiBUaW55RGF0ZSkge1xuICAgIHJpZ2h0RGF0ZSA9IHJpZ2h0RGF0ZSA/IHJpZ2h0RGF0ZSA6IGxlZnREYXRlID8gbGVmdERhdGUgOiBuZXcgVGlueURhdGUoKTtcbiAgICBsZWZ0RGF0ZSA9IGxlZnREYXRlID8gbGVmdERhdGUgOiByaWdodERhdGU7XG4gICAgaWYgKGxlZnREYXRlLmdldFllYXIoKSArIDEgPj0gcmlnaHREYXRlLmdldFllYXIoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBZnRlck1vcmVUaGFuT25lRGVjYWRlKHJpZ2h0RGF0ZTogVGlueURhdGUsIGxlZnREYXRlOiBUaW55RGF0ZSkge1xuICAgIHJpZ2h0RGF0ZSA9IHJpZ2h0RGF0ZSA/IHJpZ2h0RGF0ZSA6IGxlZnREYXRlID8gbGVmdERhdGUgOiBuZXcgVGlueURhdGUoKTtcbiAgICBsZWZ0RGF0ZSA9IGxlZnREYXRlID8gbGVmdERhdGUgOiByaWdodERhdGU7XG4gICAgcmV0dXJuIHJpZ2h0RGF0ZS5nZXRZZWFyKCkgLSBsZWZ0RGF0ZS5nZXRZZWFyKCkgPj0gMjA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mRGF0ZUVudHJ5KG9iamVjdDogRGF0ZUVudHJ5KTogb2JqZWN0IGlzIERhdGVFbnRyeSB7XG4gICAgcmV0dXJuIGlzU3VwcG9ydERhdGVUeXBlKG9iamVjdCwgJ2RhdGUnKSAmJiB0eXBlb2Ygb2JqZWN0LndpdGhfdGltZSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mUmFuZ2VFbnRyeShvYmplY3Q6IFRoeURhdGVSYW5nZUVudHJ5KTogb2JqZWN0IGlzIFRoeURhdGVSYW5nZUVudHJ5IHtcbiAgICByZXR1cm4gaXNTdXBwb3J0RGF0ZVR5cGUob2JqZWN0LCAnYmVnaW4nKSAmJiBpc1N1cHBvcnREYXRlVHlwZShvYmplY3QsICdlbmQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlT2ZDb21wYXRpYmxlVmFsdWUob2JqZWN0OiBDb21wYXRpYmxlVmFsdWUpOiBvYmplY3QgaXMgQ29tcGF0aWJsZVZhbHVlIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgVGlueURhdGUgfHwgb2JqZWN0WzBdIGluc3RhbmNlb2YgVGlueURhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mUmFuZ2VBZHZhbmNlZFZhbHVlKG9iamVjdDogUmFuZ2VBZHZhbmNlZFZhbHVlKTogb2JqZWN0IGlzIFJhbmdlQWR2YW5jZWRWYWx1ZSB7XG4gICAgcmV0dXJuIG9iamVjdFsnYmVnaW4nXSBpbnN0YW5jZW9mIFRpbnlEYXRlICYmIG9iamVjdFsnZW5kJ10gaW5zdGFuY2VvZiBUaW55RGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VwcG9ydERhdGVUeXBlKG9iamVjdDogRGF0ZUVudHJ5IHwgVGh5RGF0ZVJhbmdlRW50cnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ251bWJlcicgfHwgb2JqZWN0W2tleV0gPT09IG51bGwgfHwgb2JqZWN0W2tleV0gaW5zdGFuY2VvZiBEYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRjdXRWYWx1ZSh2YWx1ZTogVGh5U2hvcnRjdXRWYWx1ZSk6IG51bWJlciB8IERhdGUge1xuICAgIHJldHVybiBoZWxwZXJzLmlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUoKSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0cmluZ0RhdGUoZGF0ZVN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VEYXRlID0gcGFyc2VTdHJpbmdEYXRlKGRhdGVTdHIpLm5hdGl2ZURhdGUuZ2V0VGltZSgpO1xuICAgIHJldHVybiAhKHBhcnNlRGF0ZSA8IDAgfHwgaXNOYU4ocGFyc2VEYXRlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZ0RhdGUoZGF0ZVN0cjogc3RyaW5nKTogVGlueURhdGUge1xuICAgIHJldHVybiBoYXNUaW1lSW5TdHJpbmdEYXRlKGRhdGVTdHIpID8gbmV3IFRpbnlEYXRlKGZpeFN0cmluZ0RhdGUoZGF0ZVN0cikpIDogbmV3IFRpbnlEYXRlKGZpeFN0cmluZ0RhdGUoZGF0ZVN0cikpLnN0YXJ0T2ZEYXkoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1RpbWVJblN0cmluZ0RhdGUoZGF0ZVN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybWF0RGF0ZSA9IGZpeFN0cmluZ0RhdGUoZGF0ZVN0cik7XG4gICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfTpcXGR7MSwyfSg6XFxkezEsMn0pPyl8KF5cXGR7MSwyfeaXtlxcZHsxLDJ95YiGKFxcZHsxLDJ956eSKT8pJC87XG4gICAgcmV0dXJuIHRpbWVSZWdleC50ZXN0KGZvcm1hdERhdGUpO1xufVxuXG5mdW5jdGlvbiBmaXhTdHJpbmdEYXRlKGRhdGVTdHI6IHN0cmluZykge1xuICAgIGxldCByZXBsYWNlZFN0ciA9IGRhdGVTdHIucmVwbGFjZSgvW14wLTlcXHMuLDpdL2csICctJykucmVwbGFjZSgnLSAnLCAnICcpO1xuICAgIGNvbnN0IGhhc1llYXIgPSAvXFxkezR9Ly50ZXN0KHJlcGxhY2VkU3RyKTtcbiAgICBpZiAoIWhhc1llYXIgfHwgcmVwbGFjZWRTdHIubGVuZ3RoIDwgJ3l5eXkuTS5kJy5sZW5ndGgpIHtcbiAgICAgICAgcmVwbGFjZWRTdHIgPSBgJHtuZXcgVGlueURhdGUobmV3IERhdGUoKSkuZ2V0WWVhcigpfS0ke3JlcGxhY2VkU3RyfWA7XG4gICAgfVxuICAgIHJldHVybiByZXBsYWNlZFN0cjtcbn1cbiJdfQ==
|
|
206
|
+
export function setValueByTimestampPrecision(date, isRange, timestampPrecision) {
|
|
207
|
+
const { value } = transformDateValue(date);
|
|
208
|
+
if (!value || (helpers.isArray(value) && !value?.length)) {
|
|
209
|
+
return helpers.isArray(value) ? [null, null] : null;
|
|
210
|
+
}
|
|
211
|
+
if (timestampPrecision === 'milliseconds') {
|
|
212
|
+
return isRange ? coerceArray(value).map(val => new TinyDate(val).getTime()) : new TinyDate(value).getTime();
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
return isRange ? coerceArray(value).map(val => new TinyDate(val).getUnixTime()) : new TinyDate(value)?.getUnixTime();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvcGlja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUlqRSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBcUc7SUFLcEksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxRQUFRLEVBQUUsdUJBQTJDLENBQUM7SUFDMUQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUkseUJBQXlCLENBQUMsS0FBd0IsQ0FBQyxFQUFFLENBQUM7UUFDL0QsSUFBSSxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7WUFDNUIsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLEtBQWtCLENBQUMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sRUFBRSxJ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QUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBYSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDakksQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wYXRpYmxlRGF0ZSwgRGF0ZUVudHJ5LCBUaHlEYXRlUmFuZ2VFbnRyeSwgVGh5UGFuZWxNb2RlLCBUaHlEYXRlR3JhbnVsYXJpdHksIFRoeVNob3J0Y3V0VmFsdWUgfSBmcm9tICcuL3N0YW5kYXJkLXR5cGVzJztcblxuaW1wb3J0IHsgZnJvbVVuaXhUaW1lIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXksIGhlbHBlcnMsIFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IENvbXBhdGlibGVWYWx1ZSwgUmFuZ2VBZHZhbmNlZFZhbHVlIH0gZnJvbSAnLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRlVmFsdWUodmFsdWU6IENvbXBhdGlibGVEYXRlIHwgQ29tcGF0aWJsZVZhbHVlIHwgbnVtYmVyIHwgRGF0ZUVudHJ5IHwgVGh5RGF0ZVJhbmdlRW50cnkgfCBSYW5nZUFkdmFuY2VkVmFsdWUpOiB7XG4gICAgdmFsdWU6IENvbXBhdGlibGVEYXRlO1xuICAgIHdpdGhUaW1lPzogYm9vbGVhbjtcbiAgICBmbGV4aWJsZURhdGVHcmFudWxhcml0eT86IFRoeURhdGVHcmFudWxhcml0eTtcbn0ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gICAgbGV0IHdpdGhUaW1lLCBmbGV4aWJsZURhdGVHcmFudWxhcml0eTogVGh5RGF0ZUdyYW51bGFyaXR5O1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHZhbHVlID0gY29udmVydERhdGUodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgaW5zdGFuY2VPZkNvbXBhdGlibGVWYWx1ZSh2YWx1ZSBhcyBDb21wYXRpYmxlVmFsdWUpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRpbnlEYXRlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbnZlcnREYXRlKHZhbHVlLm5hdGl2ZURhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWVbMF0gPSBjb252ZXJ0RGF0ZSh2YWx1ZVswXS5uYXRpdmVEYXRlKTtcbiAgICAgICAgICAgIHZhbHVlWzFdID0gY29udmVydERhdGUodmFsdWVbMV0ubmF0aXZlRGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhbHVlICYmIGluc3RhbmNlT2ZEYXRlRW50cnkodmFsdWUgYXMgRGF0ZUVudHJ5KSkge1xuICAgICAgICBjb25zdCB7IGRhdGUsIHdpdGhfdGltZSB9ID0gdmFsdWUgYXMgRGF0ZUVudHJ5O1xuICAgICAgICB2YWx1ZSA9IGRhdGUgPyBjb252ZXJ0RGF0ZShkYXRlKSA6IG51bGw7XG4gICAgICAgIHdpdGhUaW1lID0gISF3aXRoX3RpbWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiBpbnN0YW5jZU9mUmFuZ2VFbnRyeSh2YWx1ZSBhcyBUaHlEYXRlUmFuZ2VFbnRyeSkpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VWYWx1ZSA9IHZhbHVlIGFzIFRoeURhdGVSYW5nZUVudHJ5O1xuICAgICAgICB2YWx1ZSA9IFtdO1xuICAgICAgICBpZiAocmFuZ2VWYWx1ZS5iZWdpbiAmJiByYW5nZVZhbHVlLmVuZCkge1xuICAgICAgICAgICAgdmFsdWVbMF0gPSBjb252ZXJ0RGF0ZShyYW5nZVZhbHVlLmJlZ2luKTtcbiAgICAgICAgICAgIHZhbHVlWzFdID0gY29udmVydERhdGUocmFuZ2VWYWx1ZS5lbmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyYW5nZVZhbHVlLmdyYW51bGFyaXR5KSB7XG4gICAgICAgICAgICBmbGV4aWJsZURhdGVHcmFudWxhcml0eSA9IHJhbmdlVmFsdWUuZ3JhbnVsYXJpdHk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgJiYgaW5zdGFuY2VPZlJhbmdlQWR2YW5jZWRWYWx1ZSh2YWx1ZSBhcyBSYW5nZUFkdmFuY2VkVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlVmFsdWUgPSB2YWx1ZSBhcyBSYW5nZUFkdmFuY2VkVmFsdWU7XG4gICAgICAgIGlmIChyYW5nZVZhbHVlLmRhdGVHcmFudWxhcml0eSkge1xuICAgICAgICAgICAgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSByYW5nZVZhbHVlLmRhdGVHcmFudWxhcml0eTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IFtdO1xuICAgICAgICBpZiAocmFuZ2VWYWx1ZS5iZWdpbiAmJiByYW5nZVZhbHVlLmVuZCkge1xuICAgICAgICAgICAgdmFsdWVbMF0gPSBjb252ZXJ0RGF0ZShyYW5nZVZhbHVlLmJlZ2luLm5hdGl2ZURhdGUpO1xuICAgICAgICAgICAgdmFsdWVbMV0gPSBjb252ZXJ0RGF0ZShyYW5nZVZhbHVlLmVuZC5uYXRpdmVEYXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUgYXMgQ29tcGF0aWJsZURhdGUsIHdpdGhUaW1lLCBmbGV4aWJsZURhdGVHcmFudWxhcml0eSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmxleGlibGVBZHZhbmNlZFJlYWRhYmxlVmFsdWUodGlueURhdGVzOiBUaW55RGF0ZVtdLCBmbGV4aWJsZURhdGVHcmFudWxhcml0eTogVGh5RGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgaWYgKCF0aW55RGF0ZXNbMF0gfHwgIXRpbnlEYXRlc1sxXSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN3aXRjaCAoZmxleGlibGVEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICBpZiAodGlueURhdGVzWzBdLmlzU2FtZVllYXIodGlueURhdGVzWzFdKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7dGlueURhdGVzWzBdLmdldFllYXIoKX3lubRgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3RpbnlEYXRlc1swXS5nZXRZZWFyKCl95bm0IO+9niAke3RpbnlEYXRlc1sxXS5nZXRZZWFyKCl95bm0YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgIGlmICh0aW55RGF0ZXNbMF0uaXNTYW1lUXVhcnRlcih0aW55RGF0ZXNbMV0pKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBgJHt0aW55RGF0ZXNbMF0uZ2V0WWVhcigpfeW5tCBRJHt0aW55RGF0ZXNbMF0uZ2V0UXVhcnRlcigpfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7dGlueURhdGVzWzBdLmdldFllYXIoKX3lubQgUSR7dGlueURhdGVzWzBdLmdldFF1YXJ0ZXIoKX0gfiAke3RpbnlEYXRlc1sxXS5nZXRZZWFyKCl95bm0IFEke3RpbnlEYXRlc1sxXS5nZXRRdWFydGVyKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICBpZiAodGlueURhdGVzWzBdLmlzU2FtZU1vbnRoKHRpbnlEYXRlc1sxXSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3RpbnlEYXRlc1swXS5nZXRZZWFyKCl95bm0ICR7dGlueURhdGVzWzBdLmdldE1vbnRoKCkgKyAxfeaciGA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7dGlueURhdGVzWzBdLmdldFllYXIoKX3lubQgJHt0aW55RGF0ZXNbMF0uZ2V0TW9udGgoKSArIDF95pyIIH4gJHt0aW55RGF0ZXNbMV0uZ2V0WWVhcigpfeW5tCAke1xuICAgICAgICAgICAgICAgICAgICB0aW55RGF0ZXNbMV0uZ2V0TW9udGgoKSArIDFcbiAgICAgICAgICAgICAgICB95pyIYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RGF0ZShkYXRlOiBEYXRlIHwgbnVtYmVyKTogRGF0ZSB7XG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoZGF0ZS50b1N0cmluZygpLmxlbmd0aCA8IDEzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbVVuaXhUaW1lKGRhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFsdWUodmFsdWU6IENvbXBhdGlibGVWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gISF2YWx1ZVswXSAmJiAhIXZhbHVlWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAhIXZhbHVlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VWYWx1ZSh2YWx1ZTogQ29tcGF0aWJsZURhdGUgfCBudWxsLCBpc1JhbmdlOiBib29sZWFuID0gZmFsc2UpOiBDb21wYXRpYmxlVmFsdWUge1xuICAgIGlmIChpc1JhbmdlKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICh2YWx1ZSBhcyBEYXRlW10pLm1hcCh2YWwgPT4gbmV3IFRpbnlEYXRlKHZhbCkpIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gbmV3IFRpbnlEYXRlKHZhbHVlIGFzIERhdGUpIDogbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQWRkQW1vdW50KHZhbHVlOiBUaW55RGF0ZSwgYW1vdW50OiBudW1iZXIsIG1vZGU6IFRoeVBhbmVsTW9kZSk6IFRpbnlEYXRlIHtcbiAgICBsZXQgZGF0ZTogVGlueURhdGU7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIGNhc2UgJ2RlY2FkZSc6XG4gICAgICAgICAgICBkYXRlID0gdmFsdWUuYWRkWWVhcnMoYW1vdW50ICogMTApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgZGF0ZSA9IHZhbHVlLmFkZFllYXJzKGFtb3VudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgZGF0ZSA9IHZhbHVlLmFkZE1vbnRocyhhbW91bnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBkYXRlID0gdmFsdWUuYWRkTW9udGhzKGFtb3VudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG59XG5cbi8vIHJpZ2h0RGF0ZSDotoXov4cgbGVmdERhdGUg5LiA5Liq5pyIXG5leHBvcnQgZnVuY3Rpb24gaXNBZnRlck1vcmVUaGFuT25lTW9udGgocmlnaHREYXRlOiBUaW55RGF0ZSwgbGVmdERhdGU6IFRpbnlEYXRlKSB7XG4gICAgcmlnaHREYXRlID0gcmlnaHREYXRlID8gcmlnaHREYXRlIDogbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IG5ldyBUaW55RGF0ZSgpO1xuICAgIGxlZnREYXRlID0gbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IHJpZ2h0RGF0ZTtcbiAgICBpZiAocmlnaHREYXRlLmdldFllYXIoKSA8IGxlZnREYXRlLmdldFllYXIoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0RGF0ZS5nZXRZZWFyKCkgPT09IGxlZnREYXRlLmdldFllYXIoKSAmJiBsZWZ0RGF0ZS5nZXRNb250aCgpICsgMSA+PSByaWdodERhdGUuZ2V0TW9udGgoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8g5aSE55CGcmlnaHREYXRlKDIwMjAsMSwxKSDkuLpsZWZ0RGF0ZSgyMDIwLDEyLDEp5ZCO5LiA5bm0MeaciCzlkIzml7ZsZWZ0RGF0ZeaXpeacn+S4ujEy5pyI55qE54m55q6K5oOF5Ya1XG4gICAgcmV0dXJuICEocmlnaHREYXRlLmdldFllYXIoKSAtIGxlZnREYXRlLmdldFllYXIoKSA9PT0gMSAmJiByaWdodERhdGUuZ2V0TW9udGgoKSA9PT0gMCAmJiBsZWZ0RGF0ZS5nZXRNb250aCgpID09PSAxMSk7XG59XG5cbi8vIHJpZ2h0RGF0ZSDotoXov4cgbGVmdERhdGUg5LiN5Yiw5LiA5bm0XG5leHBvcnQgZnVuY3Rpb24gaXNBZnRlck1vcmVUaGFuTGVzc09uZVllYXIocmlnaHREYXRlOiBUaW55RGF0ZSwgbGVmdERhdGU6IFRpbnlEYXRlKSB7XG4gICAgcmlnaHREYXRlID0gcmlnaHREYXRlID8gcmlnaHREYXRlIDogbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IG5ldyBUaW55RGF0ZSgpO1xuICAgIGxlZnREYXRlID0gbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IHJpZ2h0RGF0ZTtcbiAgICBpZiAocmlnaHREYXRlLmdldFllYXIoKSA8PSBsZWZ0RGF0ZS5nZXRZZWFyKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyDlpITnkIZyaWdodERhdGUoMjAyMSwxLDEp5pel5pyf5q+UbGVmdERhdGUoMjAyMCwxMiwxKeaXpeacn+WkpzHlubQs5ZCM5pe2cmlnaHREYXRl5pel5pyf5pyI5Lu95bCP5LqObGVmdERhdGXml6XmnJ/mnIjku73nmoTmg4XlhrVcbiAgICByZXR1cm4gIShyaWdodERhdGUuZ2V0WWVhcigpIC0gbGVmdERhdGUuZ2V0WWVhcigpID09PSAxICYmIHJpZ2h0RGF0ZS5nZXRNb250aCgpIDw9IGxlZnREYXRlLmdldE1vbnRoKCkpO1xufVxuXG4vLyByaWdodERhdGUg6LaF6L+HIGxlZnREYXRlIOS4gOW5tFxuZXhwb3J0IGZ1bmN0aW9uIGlzQWZ0ZXJNb3JlVGhhbk9uZVllYXIocmlnaHREYXRlOiBUaW55RGF0ZSwgbGVmdERhdGU6IFRpbnlEYXRlKSB7XG4gICAgcmlnaHREYXRlID0gcmlnaHREYXRlID8gcmlnaHREYXRlIDogbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IG5ldyBUaW55RGF0ZSgpO1xuICAgIGxlZnREYXRlID0gbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IHJpZ2h0RGF0ZTtcbiAgICBpZiAobGVmdERhdGUuZ2V0WWVhcigpICsgMSA+PSByaWdodERhdGUuZ2V0WWVhcigpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FmdGVyTW9yZVRoYW5PbmVEZWNhZGUocmlnaHREYXRlOiBUaW55RGF0ZSwgbGVmdERhdGU6IFRpbnlEYXRlKSB7XG4gICAgcmlnaHREYXRlID0gcmlnaHREYXRlID8gcmlnaHREYXRlIDogbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IG5ldyBUaW55RGF0ZSgpO1xuICAgIGxlZnREYXRlID0gbGVmdERhdGUgPyBsZWZ0RGF0ZSA6IHJpZ2h0RGF0ZTtcbiAgICByZXR1cm4gcmlnaHREYXRlLmdldFllYXIoKSAtIGxlZnREYXRlLmdldFllYXIoKSA+PSAyMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlT2ZEYXRlRW50cnkob2JqZWN0OiBEYXRlRW50cnkpOiBvYmplY3QgaXMgRGF0ZUVudHJ5IHtcbiAgICByZXR1cm4gaXNTdXBwb3J0RGF0ZVR5cGUob2JqZWN0LCAnZGF0ZScpICYmIHR5cGVvZiBvYmplY3Qud2l0aF90aW1lID09PSAnbnVtYmVyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlT2ZSYW5nZUVudHJ5KG9iamVjdDogVGh5RGF0ZVJhbmdlRW50cnkpOiBvYmplY3QgaXMgVGh5RGF0ZVJhbmdlRW50cnkge1xuICAgIHJldHVybiBpc1N1cHBvcnREYXRlVHlwZShvYmplY3QsICdiZWdpbicpICYmIGlzU3VwcG9ydERhdGVUeXBlKG9iamVjdCwgJ2VuZCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VPZkNvbXBhdGlibGVWYWx1ZShvYmplY3Q6IENvbXBhdGlibGVWYWx1ZSk6IG9iamVjdCBpcyBDb21wYXRpYmxlVmFsdWUge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBUaW55RGF0ZSB8fCBvYmplY3RbMF0gaW5zdGFuY2VvZiBUaW55RGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlT2ZSYW5nZUFkdmFuY2VkVmFsdWUob2JqZWN0OiBSYW5nZUFkdmFuY2VkVmFsdWUpOiBvYmplY3QgaXMgUmFuZ2VBZHZhbmNlZFZhbHVlIHtcbiAgICByZXR1cm4gb2JqZWN0WydiZWdpbiddIGluc3RhbmNlb2YgVGlueURhdGUgJiYgb2JqZWN0WydlbmQnXSBpbnN0YW5jZW9mIFRpbnlEYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdXBwb3J0RGF0ZVR5cGUob2JqZWN0OiBEYXRlRW50cnkgfCBUaHlEYXRlUmFuZ2VFbnRyeSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdFtrZXldID09PSAnbnVtYmVyJyB8fCBvYmplY3Rba2V5XSA9PT0gbnVsbCB8fCBvYmplY3Rba2V5XSBpbnN0YW5jZW9mIERhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydGN1dFZhbHVlKHZhbHVlOiBUaHlTaG9ydGN1dFZhbHVlKTogbnVtYmVyIHwgRGF0ZSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3RyaW5nRGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXJzZURhdGUgPSBwYXJzZVN0cmluZ0RhdGUoZGF0ZVN0cikubmF0aXZlRGF0ZS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuICEocGFyc2VEYXRlIDwgMCB8fCBpc05hTihwYXJzZURhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyaW5nRGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBUaW55RGF0ZSB7XG4gICAgcmV0dXJuIGhhc1RpbWVJblN0cmluZ0RhdGUoZGF0ZVN0cikgPyBuZXcgVGlueURhdGUoZml4U3RyaW5nRGF0ZShkYXRlU3RyKSkgOiBuZXcgVGlueURhdGUoZml4U3RyaW5nRGF0ZShkYXRlU3RyKSkuc3RhcnRPZkRheSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVGltZUluU3RyaW5nRGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtYXREYXRlID0gZml4U3RyaW5nRGF0ZShkYXRlU3RyKTtcbiAgICBjb25zdCB0aW1lUmVnZXggPSAvKFxcZHsxLDJ9OlxcZHsxLDJ9KDpcXGR7MSwyfSk/KXwoXlxcZHsxLDJ95pe2XFxkezEsMn3liIYoXFxkezEsMn3np5IpPykkLztcbiAgICByZXR1cm4gdGltZVJlZ2V4LnRlc3QoZm9ybWF0RGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGZpeFN0cmluZ0RhdGUoZGF0ZVN0cjogc3RyaW5nKSB7XG4gICAgbGV0IHJlcGxhY2VkU3RyID0gZGF0ZVN0ci5yZXBsYWNlKC9bXjAtOVxccy4sOl0vZywgJy0nKS5yZXBsYWNlKCctICcsICcgJyk7XG4gICAgY29uc3QgaGFzWWVhciA9IC9cXGR7NH0vLnRlc3QocmVwbGFjZWRTdHIpO1xuICAgIGlmICghaGFzWWVhciB8fCByZXBsYWNlZFN0ci5sZW5ndGggPCAneXl5eS5NLmQnLmxlbmd0aCkge1xuICAgICAgICByZXBsYWNlZFN0ciA9IGAke25ldyBUaW55RGF0ZShuZXcgRGF0ZSgpKS5nZXRZZWFyKCl9LSR7cmVwbGFjZWRTdHJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlcGxhY2VkU3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsdWVCeVRpbWVzdGFtcFByZWNpc2lvbihcbiAgICBkYXRlOiBDb21wYXRpYmxlRGF0ZSB8IG51bWJlciB8IERhdGUgfCBEYXRlRW50cnkgfCBUaHlEYXRlUmFuZ2VFbnRyeSB8IFNhZmVBbnksXG4gICAgaXNSYW5nZTogYm9vbGVhbixcbiAgICB0aW1lc3RhbXBQcmVjaXNpb246ICdzZWNvbmRzJyB8ICdtaWxsaXNlY29uZHMnXG4pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKGRhdGUpO1xuICAgIGlmICghdmFsdWUgfHwgKGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlPy5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBoZWxwZXJzLmlzQXJyYXkodmFsdWUpID8gW251bGwsIG51bGxdIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKHRpbWVzdGFtcFByZWNpc2lvbiA9PT0gJ21pbGxpc2Vjb25kcycpIHtcbiAgICAgICAgcmV0dXJuIGlzUmFuZ2UgPyBjb2VyY2VBcnJheSh2YWx1ZSkubWFwKHZhbCA9PiBuZXcgVGlueURhdGUodmFsKS5nZXRUaW1lKCkpIDogbmV3IFRpbnlEYXRlKHZhbHVlIGFzIERhdGUpLmdldFRpbWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXNSYW5nZSA/IGNvZXJjZUFycmF5KHZhbHVlKS5tYXAodmFsID0+IG5ldyBUaW55RGF0ZSh2YWwpLmdldFVuaXhUaW1lKCkpIDogbmV3IFRpbnlEYXRlKHZhbHVlIGFzIERhdGUpPy5nZXRVbml4VGltZSgpO1xuICAgIH1cbn1cbiJdfQ==
|