ca-components 1.3.32 → 1.3.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/ca-components.module.mjs +10 -4
- package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +12 -11
- package/esm2022/lib/components/ca-checkbox/ca-checkbox.component.mjs +134 -0
- package/esm2022/lib/components/ca-checkbox/interfaces/column-check-action.interface.mjs +2 -0
- package/esm2022/lib/components/ca-checkbox/interfaces/index.mjs +2 -0
- package/esm2022/lib/components/ca-checkbox/utils/svg-routes/checkbox-svg-routes.mjs +7 -0
- package/esm2022/lib/components/ca-checkbox/utils/svg-routes/index.mjs +2 -0
- package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +3 -3
- package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +95 -24
- package/esm2022/lib/components/ca-dropdown-menu/enums/dropdown-menu.enum.mjs +19 -0
- package/esm2022/lib/components/ca-dropdown-menu/enums/index.mjs +2 -2
- package/esm2022/lib/components/ca-dropdown-menu/interfaces/dropdown-menu-item.interface.mjs +2 -0
- package/esm2022/lib/components/ca-dropdown-menu/interfaces/dropdown-menu-option-emit.interface.mjs +2 -0
- package/esm2022/lib/components/ca-dropdown-menu/interfaces/index.mjs +3 -0
- package/esm2022/lib/components/ca-dropdown-menu/pipes/dropdown-menu-placement-class.pipe.mjs +4 -4
- package/esm2022/lib/components/ca-dropdown-menu/pipes/group-item-checked-state.pipe.mjs +21 -0
- package/esm2022/lib/components/ca-dropdown-menu/pipes/index.mjs +2 -1
- package/esm2022/lib/components/ca-main-table/ca-main-table.component.mjs +5 -3
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +1 -1
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +1 -1
- package/esm2022/lib/components/ca-tooltip-list/ca-tooltip-list.component.mjs +3 -3
- package/esm2022/lib/enums/dropdown-menu.enum.mjs +20 -0
- package/esm2022/lib/pipes/row-class.pipe.mjs +26 -0
- package/esm2022/lib/utils/constants/dropdown-menu-content.constants.mjs +26 -26
- package/esm2022/lib/utils/helpers/dropdown-menu-content-conditional-items.helper.mjs +4 -4
- package/esm2022/lib/utils/helpers/dropdown-menu-content.helper.mjs +6 -6
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ca-components.mjs +350 -99
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/ca-components.module.d.ts +2 -1
- package/lib/components/ca-checkbox/ca-checkbox.component.d.ts +39 -0
- package/lib/components/ca-checkbox/interfaces/column-check-action.interface.d.ts +6 -0
- package/lib/components/ca-checkbox/interfaces/index.d.ts +1 -0
- package/lib/components/ca-checkbox/utils/svg-routes/checkbox-svg-routes.d.ts +6 -0
- package/lib/components/ca-checkbox/utils/svg-routes/index.d.ts +1 -0
- package/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.d.ts +16 -7
- package/lib/components/ca-dropdown-menu/enums/{dropdown-menu-string.enum.d.ts → dropdown-menu.enum.d.ts} +5 -2
- package/lib/components/ca-dropdown-menu/enums/index.d.ts +1 -1
- package/lib/components/ca-dropdown-menu/{models/dropdown-menu-item.model.d.ts → interfaces/dropdown-menu-item.interface.d.ts} +7 -1
- package/lib/components/ca-dropdown-menu/{models/dropdown-menu-option-emit.model.d.ts → interfaces/dropdown-menu-option-emit.interface.d.ts} +1 -1
- package/lib/components/ca-dropdown-menu/interfaces/index.d.ts +2 -0
- package/lib/components/ca-dropdown-menu/pipes/group-item-checked-state.pipe.d.ts +8 -0
- package/lib/components/ca-dropdown-menu/pipes/index.d.ts +1 -0
- package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
- package/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.d.ts +4 -4
- package/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.d.ts +3 -3
- package/lib/enums/{dropdown-menu-string.enum.d.ts → dropdown-menu.enum.d.ts} +1 -1
- package/lib/pipes/row-class.pipe.d.ts +7 -0
- package/lib/utils/constants/dropdown-menu-content.constants.d.ts +3 -3
- package/lib/utils/helpers/dropdown-menu-content-conditional-items.helper.d.ts +3 -3
- package/lib/utils/helpers/dropdown-menu-content.helper.d.ts +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/assets/ca-components/svg/common/ic_carriera-logo-active.svg +4 -0
- package/src/assets/ca-components/svg/common/ic_carriera-logo-inactive.svg +4 -0
- package/src/assets/ca-components/svg/common/ic_columns.svg +8 -0
- package/src/assets/ca-components/svg/common/ic_disable.svg +3 -0
- package/esm2022/lib/components/ca-dropdown-menu/enums/dropdown-menu-string.enum.mjs +0 -14
- package/esm2022/lib/components/ca-dropdown-menu/models/dropdown-menu-item.model.mjs +0 -2
- package/esm2022/lib/components/ca-dropdown-menu/models/dropdown-menu-option-emit.model.mjs +0 -2
- package/esm2022/lib/components/ca-dropdown-menu/models/index.mjs +0 -3
- package/esm2022/lib/enums/dropdown-menu-string.enum.mjs +0 -20
- package/lib/components/ca-dropdown-menu/models/index.d.ts +0 -2
package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs
CHANGED
|
@@ -187,7 +187,7 @@ export class CaCustomDatetimePickersComponent {
|
|
|
187
187
|
this.listPreview = CalendarListPreviewStringEnum.FULL_LIST;
|
|
188
188
|
}
|
|
189
189
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaCustomDatetimePickersComponent, deps: [{ token: i1.CalendarDateTimePickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
190
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaCustomDatetimePickersComponent, isStandalone: true, selector: "ca-custom-datetime-pickers", inputs: { dateTime: "dateTime", inputConfig: "inputConfig", calendarType: "calendarType", placeholder: "placeholder" }, outputs: { closePopover: "closePopover" }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, read: ViewContainerRef }, { propertyName: "dateCalendar", first: true, predicate: CaCustomDateTimePickersDateCalendarsComponent, descendants: true }, { propertyName: "pmAmScroll", first: true, predicate: ["pmAmScroll"], descendants: true }, { propertyName: "minutesScroll", first: true, predicate: ["minutesScroll"], descendants: true }, { propertyName: "hourScroll", first: true, predicate: ["hourScroll"], descendants: true }], ngImport: i0, template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n
|
|
190
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaCustomDatetimePickersComponent, isStandalone: true, selector: "ca-custom-datetime-pickers", inputs: { dateTime: "dateTime", inputConfig: "inputConfig", calendarType: "calendarType", placeholder: "placeholder" }, outputs: { closePopover: "closePopover" }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, read: ViewContainerRef }, { propertyName: "dateCalendar", first: true, predicate: CaCustomDateTimePickersDateCalendarsComponent, descendants: true }, { propertyName: "pmAmScroll", first: true, predicate: ["pmAmScroll"], descendants: true }, { propertyName: "minutesScroll", first: true, predicate: ["minutesScroll"], descendants: true }, { propertyName: "hourScroll", first: true, predicate: ["hourScroll"], descendants: true }], ngImport: i0, template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"calendarMainType === 'time'\">\n <div class=\"time_picker\">\n <div class=\"time_picker_head d-flex\">\n <div class=\"selected_time ta-font-bold\">\n {{ selectedTime }}\n </div>\n <div\n class=\"sel_now ta-font-bold\"\n (click)=\"setDefaultTime()\"\n >\n Default\n </div>\n </div>\n <div class=\"time_picker_body\">\n <div class=\"picker_body_head\">\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'hours'\"\n >\n Hour\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'minutes'\"\n >\n Minute\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'times'\"\n >\n AM/PM\n </div>\n </div>\n <div class=\"picker_body\">\n <div\n #hourScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'hours'\"\n (scroll)=\"onScroll($event, 'hourScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let hour of hourTimes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.hourScroll === indx,\n }\"\n (click)=\"\n onScroll($event, 'hourScroll', indx)\n \"\n >\n {{ hour }}\n </div>\n </ng-container>\n </div>\n <div\n #minutesScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'minutes'\"\n (scroll)=\"onScroll($event, 'minutesScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let minutes of timeMinutes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.minutesScroll ===\n indx,\n }\"\n (click)=\"\n onScroll(\n $event,\n 'minutesScroll',\n indx\n )\n \"\n >\n {{ minutes }}\n </div>\n </ng-container>\n </div>\n <div\n #pmAmScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'times'\"\n (scroll)=\"onScroll($event, 'pmAmScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let when of timeOfDay;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.pmAmScroll === indx,\n }\"\n (click)=\"\n onScroll($event, 'pmAmScroll', indx)\n \"\n >\n {{ when }}\n </div>\n </ng-container>\n </div>\n <div class=\"picker_line\">\n <span class=\"border_line\"></span>\n <span class=\"border_line line_2\"></span>\n </div>\n </div>\n <div class=\"picker_buttons\">\n <div\n (click)=\"closePopup()\"\n class=\"pick_button ta-font-bold\"\n >\n Cancel\n </div>\n <div\n (click)=\"setTime()\"\n class=\"pick_button set_button ta-font-bold\"\n >\n Set\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CaCustomDateTimePickersDateCalendarsComponent, selector: "app-ca-custom-datetime-pickers-date-calendars", inputs: ["listPreview", "dateTime", "isMonthAndYearOnly"], outputs: ["setListPreviewValue"] }] }); }
|
|
191
191
|
}
|
|
192
192
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaCustomDatetimePickersComponent, decorators: [{
|
|
193
193
|
type: Component,
|
|
@@ -195,7 +195,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
195
195
|
CommonModule,
|
|
196
196
|
FormsModule,
|
|
197
197
|
CaCustomDateTimePickersDateCalendarsComponent,
|
|
198
|
-
], template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n
|
|
198
|
+
], template: "<div class=\"temp_inp_holder\">\n <div>\n <div class=\"pickers_holder dark_picker\">\n <ng-container *ngIf=\"calendarMainType === 'date'\">\n <div class=\"date_picker\">\n <app-ca-custom-datetime-pickers-date-calendars\n [listPreview]=\"listPreview\"\n [dateTime]=\"dateTime\"\n [isMonthAndYearOnly]=\"\n _inputConfig.name === 'datepickerBankCard'\n \"\n (setListPreviewValue)=\"setListPreview($event)\"\n ></app-ca-custom-datetime-pickers-date-calendars>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"calendarMainType === 'time'\">\n <div class=\"time_picker\">\n <div class=\"time_picker_head d-flex\">\n <div class=\"selected_time ta-font-bold\">\n {{ selectedTime }}\n </div>\n <div\n class=\"sel_now ta-font-bold\"\n (click)=\"setDefaultTime()\"\n >\n Default\n </div>\n </div>\n <div class=\"time_picker_body\">\n <div class=\"picker_body_head\">\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'hours'\"\n >\n Hour\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'minutes'\"\n >\n Minute\n </div>\n <div\n class=\"ta-font-bold\"\n [class.active]=\"hoveredItem === 'times'\"\n >\n AM/PM\n </div>\n </div>\n <div class=\"picker_body\">\n <div\n #hourScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'hours'\"\n (scroll)=\"onScroll($event, 'hourScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let hour of hourTimes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.hourScroll === indx,\n }\"\n (click)=\"\n onScroll($event, 'hourScroll', indx)\n \"\n >\n {{ hour }}\n </div>\n </ng-container>\n </div>\n <div\n #minutesScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'minutes'\"\n (scroll)=\"onScroll($event, 'minutesScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let minutes of timeMinutes;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.minutesScroll ===\n indx,\n }\"\n (click)=\"\n onScroll(\n $event,\n 'minutesScroll',\n indx\n )\n \"\n >\n {{ minutes }}\n </div>\n </ng-container>\n </div>\n <div\n #pmAmScroll\n (mouseout)=\"hoveredItem = null\"\n (mouseover)=\"hoveredItem = 'times'\"\n (scroll)=\"onScroll($event, 'pmAmScroll')\"\n class=\"scroll_pickers\"\n >\n <ng-container\n *ngFor=\"\n let when of timeOfDay;\n let indx = index;\n trackBy: trackByIndex\n \"\n >\n <div\n class=\"scroll_item ta-font-medium\"\n [ngClass]=\"{\n 'active_item ta-font-bold':\n scrollTypes.pmAmScroll === indx,\n }\"\n (click)=\"\n onScroll($event, 'pmAmScroll', indx)\n \"\n >\n {{ when }}\n </div>\n </ng-container>\n </div>\n <div class=\"picker_line\">\n <span class=\"border_line\"></span>\n <span class=\"border_line line_2\"></span>\n </div>\n </div>\n <div class=\"picker_buttons\">\n <div\n (click)=\"closePopup()\"\n class=\"pick_button ta-font-bold\"\n >\n Cancel\n </div>\n <div\n (click)=\"setTime()\"\n class=\"pick_button set_button ta-font-bold\"\n >\n Set\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
|
|
199
199
|
}], ctorParameters: () => [{ type: i1.CalendarDateTimePickerService }], propDecorators: { dateTime: [{
|
|
200
200
|
type: Input
|
|
201
201
|
}], ref: [{
|
|
@@ -222,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
222
222
|
}], placeholder: [{
|
|
223
223
|
type: Input
|
|
224
224
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUztBQUNULE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUs1QixhQUFhO0FBQ2IsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sNEdBQTRHLENBQUM7QUFFM0ssWUFBWTtBQUNaLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBTXJHLFFBQVE7QUFDUixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWF4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QUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUUvQixXQUFXO3NCQUF2QixLQUFLO2dCQVlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLDZDQUE2QztnQkFFL0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNLLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDRCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUNuQixZQUFZO3NCQURmLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb21lbnRcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy5jb21wb25lbnQnO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzL2N1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbnN0YW50cyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcbmltcG9ydCB7IFNjcm9sbFR5cGUgfSBmcm9tICcuL21vZGVscy9zY3JvbGwtdHlwZS5tb2RlbCc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2EtaW5wdXQvZW51bXMvaW5wdXQtY29uZmlnLW5hbWUtc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgQ2FsZW5kYXJUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItdHlwZS1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBDYWxlbmRhckxpc3RQcmV2aWV3U3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItbGlzdC1wcmV2aWV3LXN0cmluZy5lbnVtJztcbmltcG9ydCB7IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXNjcm9sbC10eXBlLXN0cmluZy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKSBkYXRlVGltZSE6IERhdGU7XG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSByZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwdWJsaWMgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gIEBJbnB1dCgpIHNldCBpbnB1dENvbmZpZyhjb25maWc6IElDYUlucHV0KSB7XG4gICAgdGhpcy5faW5wdXRDb25maWcgPSBjb25maWc7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICApXG4gICAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uTU9OVEhfTElTVDtcblxuICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZy5taW51dGVzR2FwRml2ZSlcbiAgICAgIHRoaXMudGltZU1pbnV0ZXMgPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU1pbnV0ZXNHYXBGaXZlO1xuICAgIGVsc2UgdGhpcy50aW1lTWludXRlcyA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy50aW1lTWludXRlcztcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZVBvcG92ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudClcbiAgZGF0ZUNhbGVuZGFyITogQ2FDdXN0b21EYXRlVGltZVBpY2tlcnNEYXRlQ2FsZW5kYXJzQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdwbUFtU2Nyb2xsJykgcG1BbVNjcm9sbCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZXNTY3JvbGwnKSBtaW51dGVzU2Nyb2xsITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaG91clNjcm9sbCcpIGhvdXJTY3JvbGwhOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVUaW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2FsZW5kYXJNYWluVHlwZSE6IHN0cmluZztcbiAgcHVibGljIG91dHB1dFR5cGUhOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBwdWJsaWMgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgcHVibGljIGN1cnJlbnRNb250aDogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRNb250aCgpO1xuICBwdWJsaWMgY3VycmVudERheTogbnVtYmVyID0gbmV3IERhdGUoKS5nZXREYXRlKCk7XG4gIHB1YmxpYyBsaXN0UHJldmlldzogc3RyaW5nID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICBwdWJsaWMgdGltZU1pbnV0ZXMhOiBzdHJpbmdbXTtcbiAgcHVibGljIG1vbnRoQXJyYXk6IG51bWJlcltdID0gbmV3IEFycmF5KDEyKVxuICAgIC5maWxsKDApXG4gICAgLm1hcCgoXywgaW5keCkgPT4gaW5keCArIDEpO1xuICBwdWJsaWMgbW9udGhEYXlMaXN0OiBudW1iZXJbXSA9IG5ldyBBcnJheSgzMSlcbiAgICAuZmlsbCgwKVxuICAgIC5tYXAoKF8sIGluZHgpID0+IGluZHggKyAxKTtcbiAgcHVibGljIHllYXJzTGlzdDogKHN0cmluZyB8IG51bWJlcilbXSA9IG5ldyBBcnJheSgxMDApXG4gICAgLmZpbGwoMClcbiAgICAubWFwKChfLCBpZHgpID0+IChpZHggPCAxMCA/ICcwJyArIGlkeCA6IGlkeCkpO1xuICBwdWJsaWMgc2Nyb2xsVGltZXIhOiBOb2RlSlMuVGltZW91dCB8IG51bWJlcjtcbiAgcHVibGljIGhvdmVyZWRJdGVtITogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGlzSW5wdXRGb2N1cyE6IGJvb2xlYW47XG4gIHB1YmxpYyBtb250aE5hbWVzOiBzdHJpbmdbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5tb250aE5hbWVzO1xuICBwdWJsaWMgaG91clRpbWVzOiBudW1iZXJbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5ob3VyVGltZXM7XG4gIHB1YmxpYyBzY3JvbGxUeXBlczogU2Nyb2xsVHlwZSA9XG4gICAgQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRTY3JvbGxUeXBlcztcbiAgcHVibGljIHNlbGVjdGVkVGltZTogc3RyaW5nID1cbiAgICBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMuZGVmYXVsdFNlbGVjdGVkVGltZTtcbiAgcHVibGljIHRpbWVPZkRheTogc3RyaW5nW10gPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU9mRGF5O1xuXG4gIHB1YmxpYyBwcmV2aW91c1JhbmdlU2lkZSE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlKSB7fVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhclR5cGUoY2FsZW5kYXJUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhbGVuZGFyTWFpblR5cGUgPSBjYWxlbmRhclR5cGU7XG4gICAgaWYgKGNhbGVuZGFyVHlwZSA9PT0gQ2FsZW5kYXJUeXBlU3RyaW5nRW51bS5USU1FKVxuICAgICAgdGhpcy5vdXRwdXRUeXBlID0gQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRPdXRwdXRUeXBlVGltZTtcbiAgICBlbHNlIHRoaXMub3V0cHV0VHlwZSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5kZWZhdWx0T3V0cHV0VHlwZURhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHBsYWNlaG9sZGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZVZhbHVlKCk7XG4gICAgdGhpcy5jaGFuZ2VPcGVuZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgIT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMF0gPSBkYXRlWzBdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSBkYXRlWzFdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbNF0gPSBkYXRlWzJdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUgPSB0aGlzLmNyZWF0ZVN0cmluZ0Zyb21PdXRwdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUaW1lVmFsdWUoKSB7XG4gICAgY29uc3QgZGF0ZUlucHV0QXJyYXkgPSBtb21lbnQodGhpcy5kYXRlVGltZSkuZm9ybWF0KCdIL21tL0EnKS5zcGxpdCgnLycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID0gdGhpcy5ob3VyVGltZXMuaW5kZXhPZihcbiAgICAgICAgcGFyc2VJbnQoZGF0ZUlucHV0QXJyYXlbMF0pXG4gICAgICApO1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID0gdGhpcy50aW1lTWludXRlcy5pbmRleE9mKFxuICAgICAgICBkYXRlSW5wdXRBcnJheVsxXVxuICAgICAgKTtcblxuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gZGF0ZUlucHV0QXJyYXlbMl0gPT09ICdBTScgPyAwIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0UHJldmlldyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5saXN0UHJldmlldyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGlucHV0SW5Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlT3BlbmVkKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuaXNJbnB1dEZvY3VzID0gZTtcbiAgICAvLyBpZiAoZSkge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgPT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG91clNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMubWludXRlc1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsICogMjI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRlc3QgPSBgJHtcbiAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RGF0ZSgpfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RnVsbFllYXIoKX1gO1xuXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5zY3JvbGxUb0RhdGUubmV4dChcbiAgICAgICAgYCR7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgICB9LyR7dGhpcy5kYXRlVGltZS5nZXREYXRlKCl9LyR7dGhpcy5kYXRlVGltZS5nZXRGdWxsWWVhcigpfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRwdXRUeXBlWzBdID0gdGhpcy5ob3VyVGltZXNbdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsXTtcbiAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF07XG4gICAgdGhpcy5vdXRwdXRUeXBlWzRdID0gdGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHRoaXMuY3JlYXRlU3RyaW5nRnJvbU91dHB1dCgpO1xuXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KFxuICAgICAgbmV3IERhdGUoY3VycmVudERhdGUgKyAnICcgKyB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUpXG4gICAgKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0VGltZSgpOiB2b2lkIHtcbiAgICBsZXQgY3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KG5ldyBEYXRlKGN1cnJlbnREYXRlICsgJyAwODowMCcpKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdHJpbmdGcm9tT3V0cHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0VHlwZS5qb2luKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChcbiAgICBldmVudDogRXZlbnQsXG4gICAgdHlwZToga2V5b2YgU2Nyb2xsVHlwZSxcbiAgICBpbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xGcm9tVG9wID0gTWF0aC5mbG9vcigoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3ApO1xuICAgIGNvbnN0IHNjcm9sbEluZGV4ID0gaW5kZXggPT09IG51bGwgPyBNYXRoLmZsb29yKHNjcm9sRnJvbVRvcCAvIDIyKSA6IGluZGV4O1xuICAgIGNvbnN0IHNjcm9sbFJlbWFpbmluZyA9IHNjcm9sRnJvbVRvcCAlIDIyO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxUaW1lcik7XG4gICAgdGhpcy5zY3JvbGxUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNjcm9sbFJlbWFpbmluZyA8IDExICYmIGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCA9IHNjcm9sbEluZGV4ICogMjI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXNbdHlwZV0gPSBzY3JvbGxJbmRleDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgKDxIVE1MRWxlbWVudD4oPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkucGFyZW50Tm9kZSkuc2Nyb2xsVG9wID1cbiAgICAgICAgICBzY3JvbGxJbmRleCAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSAoc2Nyb2xsSW5kZXggKyAxKSAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXggKyAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoZWNrRm9yU2Nyb2xsZWRUeXBlKHR5cGUpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGb3JTY3JvbGxlZFR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uSE9VUlNfU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA+PSAxMikge1xuICAgICAgICB0aGlzLnBtQW1TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAyMjtcbiAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uUE1fQU1fU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA9PT0gMCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID49IDEyKSB7XG4gICAgICAgICAgdGhpcy5ob3VyU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICAgICAgICh0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgLSAxMikgKiAyMjtcbiAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIC0gMTJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIDwgMTIpIHtcbiAgICAgICAgICB0aGlzLmhvdXJTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgICAgKHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCArIDEyKSAqIDIyO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgKyAxMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IGAke3RoaXMuaG91clRpbWVzW3RoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbF19OiR7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF1cbiAgICB9ICR7dGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXX1gO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGVtcF9pbnBfaG9sZGVyXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcnNfaG9sZGVyIGRhcmtfcGlja2VyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsZW5kYXJNYWluVHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVfcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMtZGF0ZS1jYWxlbmRhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0UHJldmlld109XCJsaXN0UHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZVRpbWVdPVwiZGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTW9udGhBbmRZZWFyT25seV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXJCYW5rQ2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2V0TGlzdFByZXZpZXdWYWx1ZSk9XCJzZXRMaXN0UHJldmlldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLWRhdGUtY2FsZW5kYXJzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWxlbmRhck1haW5UeXBlID09PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZV9waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVfcGlja2VyX2hlYWQgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRfdGltZSB0YS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsX25vdyB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREZWZhdWx0VGltZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lX3BpY2tlcl9ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2JvZHlfaGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJob3ZlcmVkSXRlbSA9PT0gJ21pbnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAndGltZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNL1BNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdXJTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cImhvdmVyZWRJdGVtID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZEl0ZW0gPSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQsICdob3VyU2Nyb2xsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9waWNrZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBob3VyIG9mIGhvdXJUaW1lcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsKCRldmVudCwgJ2hvdXJTY3JvbGwnLCBpbmR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI21pbnV0ZXNTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cImhvdmVyZWRJdGVtID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZEl0ZW0gPSAnbWludXRlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudCwgJ21pbnV0ZXNTY3JvbGwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX3BpY2tlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgb2YgdGltZU1pbnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZHggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbCgkZXZlbnQsICdtaW51dGVzU2Nyb2xsJywgaW5keClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1pbnV0ZXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwbUFtU2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJob3ZlcmVkSXRlbSA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdmVyKT1cImhvdmVyZWRJdGVtID0gJ3RpbWVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50LCAncG1BbVNjcm9sbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzY3JvbGxfcGlja2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2hlbiBvZiB0aW1lT2ZEYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZHggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID09PSBpbmR4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsKCRldmVudCwgJ3BtQW1TY3JvbGwnLCBpbmR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgd2hlbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvcmRlcl9saW5lXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvcmRlcl9saW5lIGxpbmVfMlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcl9idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQb3B1cCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrX2J1dHRvbiB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrX2J1dHRvbiBzZXRfYnV0dG9uIHRhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUztBQUNULE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUs1QixhQUFhO0FBQ2IsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sNEdBQTRHLENBQUM7QUFFM0ssWUFBWTtBQUNaLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBTXJHLFFBQVE7QUFDUixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWF4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QUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUUvQixXQUFXO3NCQUF2QixLQUFLO2dCQVlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLDZDQUE2QztnQkFFL0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNLLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDRCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUNuQixZQUFZO3NCQURmLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb21lbnRcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy1kYXRlLWNhbGVuZGFycy5jb21wb25lbnQnO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzL2N1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbnN0YW50cyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcbmltcG9ydCB7IFNjcm9sbFR5cGUgfSBmcm9tICcuL21vZGVscy9zY3JvbGwtdHlwZS5tb2RlbCc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2EtaW5wdXQvZW51bXMvaW5wdXQtY29uZmlnLW5hbWUtc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgQ2FsZW5kYXJUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItdHlwZS1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBDYWxlbmRhckxpc3RQcmV2aWV3U3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvY2FsZW5kYXItbGlzdC1wcmV2aWV3LXN0cmluZy5lbnVtJztcbmltcG9ydCB7IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXNjcm9sbC10eXBlLXN0cmluZy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKSBkYXRlVGltZSE6IERhdGU7XG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSByZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwdWJsaWMgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gIEBJbnB1dCgpIHNldCBpbnB1dENvbmZpZyhjb25maWc6IElDYUlucHV0KSB7XG4gICAgdGhpcy5faW5wdXRDb25maWcgPSBjb25maWc7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICApXG4gICAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uTU9OVEhfTElTVDtcblxuICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZy5taW51dGVzR2FwRml2ZSlcbiAgICAgIHRoaXMudGltZU1pbnV0ZXMgPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU1pbnV0ZXNHYXBGaXZlO1xuICAgIGVsc2UgdGhpcy50aW1lTWludXRlcyA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy50aW1lTWludXRlcztcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZVBvcG92ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKENhQ3VzdG9tRGF0ZVRpbWVQaWNrZXJzRGF0ZUNhbGVuZGFyc0NvbXBvbmVudClcbiAgZGF0ZUNhbGVuZGFyITogQ2FDdXN0b21EYXRlVGltZVBpY2tlcnNEYXRlQ2FsZW5kYXJzQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdwbUFtU2Nyb2xsJykgcG1BbVNjcm9sbCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZXNTY3JvbGwnKSBtaW51dGVzU2Nyb2xsITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaG91clNjcm9sbCcpIGhvdXJTY3JvbGwhOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVUaW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2FsZW5kYXJNYWluVHlwZSE6IHN0cmluZztcbiAgcHVibGljIG91dHB1dFR5cGUhOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBwdWJsaWMgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgcHVibGljIGN1cnJlbnRNb250aDogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRNb250aCgpO1xuICBwdWJsaWMgY3VycmVudERheTogbnVtYmVyID0gbmV3IERhdGUoKS5nZXREYXRlKCk7XG4gIHB1YmxpYyBsaXN0UHJldmlldzogc3RyaW5nID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICBwdWJsaWMgdGltZU1pbnV0ZXMhOiBzdHJpbmdbXTtcbiAgcHVibGljIG1vbnRoQXJyYXk6IG51bWJlcltdID0gbmV3IEFycmF5KDEyKVxuICAgIC5maWxsKDApXG4gICAgLm1hcCgoXywgaW5keCkgPT4gaW5keCArIDEpO1xuICBwdWJsaWMgbW9udGhEYXlMaXN0OiBudW1iZXJbXSA9IG5ldyBBcnJheSgzMSlcbiAgICAuZmlsbCgwKVxuICAgIC5tYXAoKF8sIGluZHgpID0+IGluZHggKyAxKTtcbiAgcHVibGljIHllYXJzTGlzdDogKHN0cmluZyB8IG51bWJlcilbXSA9IG5ldyBBcnJheSgxMDApXG4gICAgLmZpbGwoMClcbiAgICAubWFwKChfLCBpZHgpID0+IChpZHggPCAxMCA/ICcwJyArIGlkeCA6IGlkeCkpO1xuICBwdWJsaWMgc2Nyb2xsVGltZXIhOiBOb2RlSlMuVGltZW91dCB8IG51bWJlcjtcbiAgcHVibGljIGhvdmVyZWRJdGVtITogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGlzSW5wdXRGb2N1cyE6IGJvb2xlYW47XG4gIHB1YmxpYyBtb250aE5hbWVzOiBzdHJpbmdbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5tb250aE5hbWVzO1xuICBwdWJsaWMgaG91clRpbWVzOiBudW1iZXJbXSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5ob3VyVGltZXM7XG4gIHB1YmxpYyBzY3JvbGxUeXBlczogU2Nyb2xsVHlwZSA9XG4gICAgQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRTY3JvbGxUeXBlcztcbiAgcHVibGljIHNlbGVjdGVkVGltZTogc3RyaW5nID1cbiAgICBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMuZGVmYXVsdFNlbGVjdGVkVGltZTtcbiAgcHVibGljIHRpbWVPZkRheTogc3RyaW5nW10gPSBDdXN0b21EYXRldGltZVBpY2tlcnNDb25zdGFudHMudGltZU9mRGF5O1xuXG4gIHB1YmxpYyBwcmV2aW91c1JhbmdlU2lkZSE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlKSB7fVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhclR5cGUoY2FsZW5kYXJUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhbGVuZGFyTWFpblR5cGUgPSBjYWxlbmRhclR5cGU7XG4gICAgaWYgKGNhbGVuZGFyVHlwZSA9PT0gQ2FsZW5kYXJUeXBlU3RyaW5nRW51bS5USU1FKVxuICAgICAgdGhpcy5vdXRwdXRUeXBlID0gQ3VzdG9tRGF0ZXRpbWVQaWNrZXJzQ29uc3RhbnRzLmRlZmF1bHRPdXRwdXRUeXBlVGltZTtcbiAgICBlbHNlIHRoaXMub3V0cHV0VHlwZSA9IEN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbnN0YW50cy5kZWZhdWx0T3V0cHV0VHlwZURhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHBsYWNlaG9sZGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZVZhbHVlKCk7XG4gICAgdGhpcy5jaGFuZ2VPcGVuZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0RGF0ZUNoYW5nZWRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgIT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMF0gPSBkYXRlWzBdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSBkYXRlWzFdO1xuICAgICAgICB0aGlzLm91dHB1dFR5cGVbNF0gPSBkYXRlWzJdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUgPSB0aGlzLmNyZWF0ZVN0cmluZ0Zyb21PdXRwdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUaW1lVmFsdWUoKSB7XG4gICAgY29uc3QgZGF0ZUlucHV0QXJyYXkgPSBtb21lbnQodGhpcy5kYXRlVGltZSkuZm9ybWF0KCdIL21tL0EnKS5zcGxpdCgnLycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID0gdGhpcy5ob3VyVGltZXMuaW5kZXhPZihcbiAgICAgICAgcGFyc2VJbnQoZGF0ZUlucHV0QXJyYXlbMF0pXG4gICAgICApO1xuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID0gdGhpcy50aW1lTWludXRlcy5pbmRleE9mKFxuICAgICAgICBkYXRlSW5wdXRBcnJheVsxXVxuICAgICAgKTtcblxuICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gZGF0ZUlucHV0QXJyYXlbMl0gPT09ICdBTScgPyAwIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0UHJldmlldyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5saXN0UHJldmlldyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGlucHV0SW5Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlT3BlbmVkKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuaXNJbnB1dEZvY3VzID0gZTtcbiAgICAvLyBpZiAoZSkge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyTWFpblR5cGUgPT09IENhbGVuZGFyVHlwZVN0cmluZ0VudW0uVElNRSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG91clNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMubWludXRlc1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsICogMjI7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsICogMjI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRlc3QgPSBgJHtcbiAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RGF0ZSgpfS8ke3RoaXMuZGF0ZVRpbWUuZ2V0RnVsbFllYXIoKX1gO1xuXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5zY3JvbGxUb0RhdGUubmV4dChcbiAgICAgICAgYCR7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZS5nZXRNb250aCgpICsgMVxuICAgICAgICB9LyR7dGhpcy5kYXRlVGltZS5nZXREYXRlKCl9LyR7dGhpcy5kYXRlVGltZS5nZXRGdWxsWWVhcigpfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRwdXRUeXBlWzBdID0gdGhpcy5ob3VyVGltZXNbdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsXTtcbiAgICB0aGlzLm91dHB1dFR5cGVbMl0gPSB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF07XG4gICAgdGhpcy5vdXRwdXRUeXBlWzRdID0gdGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlVGltZSA9IHRoaXMuY3JlYXRlU3RyaW5nRnJvbU91dHB1dCgpO1xuXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KFxuICAgICAgbmV3IERhdGUoY3VycmVudERhdGUgKyAnICcgKyB0aGlzLnNlbGVjdGVkRGF0ZVRpbWUpXG4gICAgKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0VGltZSgpOiB2b2lkIHtcbiAgICBsZXQgY3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KG5ldyBEYXRlKGN1cnJlbnREYXRlICsgJyAwODowMCcpKTtcblxuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdHJpbmdGcm9tT3V0cHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0VHlwZS5qb2luKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChcbiAgICBldmVudDogRXZlbnQsXG4gICAgdHlwZToga2V5b2YgU2Nyb2xsVHlwZSxcbiAgICBpbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xGcm9tVG9wID0gTWF0aC5mbG9vcigoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3ApO1xuICAgIGNvbnN0IHNjcm9sbEluZGV4ID0gaW5kZXggPT09IG51bGwgPyBNYXRoLmZsb29yKHNjcm9sRnJvbVRvcCAvIDIyKSA6IGluZGV4O1xuICAgIGNvbnN0IHNjcm9sbFJlbWFpbmluZyA9IHNjcm9sRnJvbVRvcCAlIDIyO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxUaW1lcik7XG4gICAgdGhpcy5zY3JvbGxUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNjcm9sbFJlbWFpbmluZyA8IDExICYmIGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCA9IHNjcm9sbEluZGV4ICogMjI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXNbdHlwZV0gPSBzY3JvbGxJbmRleDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgKDxIVE1MRWxlbWVudD4oPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkucGFyZW50Tm9kZSkuc2Nyb2xsVG9wID1cbiAgICAgICAgICBzY3JvbGxJbmRleCAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSAoc2Nyb2xsSW5kZXggKyAxKSAqIDIyO1xuICAgICAgICB0aGlzLnNjcm9sbFR5cGVzW3R5cGVdID0gc2Nyb2xsSW5kZXggKyAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoZWNrRm9yU2Nyb2xsZWRUeXBlKHR5cGUpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGb3JTY3JvbGxlZFR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uSE9VUlNfU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA+PSAxMikge1xuICAgICAgICB0aGlzLnBtQW1TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAyMjtcbiAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG1BbVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMucG1BbVNjcm9sbCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IENhbGVuZGFyU2Nyb2xsVHlwZVN0cmluZ0VudW0uUE1fQU1fU0NST0xMKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUeXBlc1t0eXBlXSA9PT0gMCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID49IDEyKSB7XG4gICAgICAgICAgdGhpcy5ob3VyU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICAgICAgICh0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgLSAxMikgKiAyMjtcbiAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIC0gMTJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxUeXBlcy5ob3VyU2Nyb2xsIDwgMTIpIHtcbiAgICAgICAgICB0aGlzLmhvdXJTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgICAgKHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCArIDEyKSAqIDIyO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFR5cGVzLmhvdXJTY3JvbGwgKyAxMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IGAke3RoaXMuaG91clRpbWVzW3RoaXMuc2Nyb2xsVHlwZXMuaG91clNjcm9sbF19OiR7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzW3RoaXMuc2Nyb2xsVHlwZXMubWludXRlc1Njcm9sbF1cbiAgICB9ICR7dGhpcy50aW1lT2ZEYXlbdGhpcy5zY3JvbGxUeXBlcy5wbUFtU2Nyb2xsXX1gO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmxpc3RQcmV2aWV3ID0gQ2FsZW5kYXJMaXN0UHJldmlld1N0cmluZ0VudW0uRlVMTF9MSVNUO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGVtcF9pbnBfaG9sZGVyXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlcnNfaG9sZGVyIGRhcmtfcGlja2VyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FsZW5kYXJNYWluVHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVfcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnMtZGF0ZS1jYWxlbmRhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0UHJldmlld109XCJsaXN0UHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZVRpbWVdPVwiZGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTW9udGhBbmRZZWFyT25seV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXJCYW5rQ2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2V0TGlzdFByZXZpZXdWYWx1ZSk9XCJzZXRMaXN0UHJldmlldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLWRhdGUtY2FsZW5kYXJzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWxlbmRhck1haW5UeXBlID09PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZV9waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVfcGlja2VyX2hlYWQgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRfdGltZSB0YS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsX25vdyB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREZWZhdWx0VGltZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lX3BpY2tlcl9ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2JvZHlfaGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJob3ZlcmVkSXRlbSA9PT0gJ21pbnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhvdmVyZWRJdGVtID09PSAndGltZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNL1BNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdXJTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cImhvdmVyZWRJdGVtID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZEl0ZW0gPSAnaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQsICdob3VyU2Nyb2xsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNjcm9sbF9waWNrZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBob3VyIG9mIGhvdXJUaW1lcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5ob3VyU2Nyb2xsID09PSBpbmR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGwoJGV2ZW50LCAnaG91clNjcm9sbCcsIGluZHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBob3VyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbWludXRlc1Njcm9sbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwiaG92ZXJlZEl0ZW0gPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkSXRlbSA9ICdtaW51dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50LCAnbWludXRlc1Njcm9sbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzY3JvbGxfcGlja2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWludXRlcyBvZiB0aW1lTWludXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX2l0ZW0gdGEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZV9pdGVtIHRhLWZvbnQtYm9sZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUeXBlcy5taW51dGVzU2Nyb2xsID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbnV0ZXNTY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW51dGVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcG1BbVNjcm9sbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwiaG92ZXJlZEl0ZW0gPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkSXRlbSA9ICd0aW1lcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudCwgJ3BtQW1TY3JvbGwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsX3BpY2tlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdoZW4gb2YgdGltZU9mRGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmR4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzY3JvbGxfaXRlbSB0YS1mb250LW1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlX2l0ZW0gdGEtZm9udC1ib2xkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFR5cGVzLnBtQW1TY3JvbGwgPT09IGluZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbCgkZXZlbnQsICdwbUFtU2Nyb2xsJywgaW5keClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHdoZW4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyX2xpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3JkZXJfbGluZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3JkZXJfbGluZSBsaW5lXzJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJfYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja19idXR0b24gdGEtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja19idXR0b24gc2V0X2J1dHRvbiB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|