@wavemaker/app-ng-runtime 11.11.4-rc.6173 → 11.11.5-rc.6185
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/components/base/bundles/index.umd.js +12 -7
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +13 -8
- package/components/base/fesm2022/index.mjs +12 -7
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +20 -1
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +5 -2
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -1
- package/components/data/form/esm2022/form.component.mjs +15 -1
- package/components/data/form/esm2022/form.props.mjs +2 -1
- package/components/data/form/fesm2022/index.mjs +20 -1
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form.component.d.ts +1 -0
- package/components/data/list/bundles/index.umd.js +53 -10
- package/components/data/list/esm2022/list.component.mjs +51 -10
- package/components/data/list/esm2022/list.props.mjs +4 -2
- package/components/data/list/fesm2022/index.mjs +53 -10
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list.component.d.ts +7 -0
- package/components/data/pagination/bundles/index.umd.js +502 -106
- package/components/data/pagination/esm2022/pagination.component.mjs +500 -105
- package/components/data/pagination/esm2022/pagination.props.mjs +4 -1
- package/components/data/pagination/fesm2022/index.mjs +502 -104
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +21 -1
- package/components/data/table/bundles/index.umd.js +89 -11
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column/table-column.props.mjs +2 -1
- package/components/data/table/esm2022/table.component.mjs +82 -12
- package/components/data/table/esm2022/table.props.mjs +7 -1
- package/components/data/table/fesm2022/index.mjs +90 -12
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-column/table-column.directive.d.ts +1 -0
- package/components/data/table/table.component.d.ts +17 -0
- package/components/input/epoch/base-date-time.component.d.ts +3 -1
- package/components/input/epoch/bundles/index.umd.js +123 -65
- package/components/input/epoch/esm2022/base-date-time.component.mjs +31 -20
- package/components/input/epoch/esm2022/date/date.component.mjs +5 -6
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +45 -22
- package/components/input/epoch/esm2022/date-time/date-time.props.mjs +3 -2
- package/components/input/epoch/esm2022/time/time.component.mjs +40 -14
- package/components/input/epoch/esm2022/time/time.props.mjs +3 -2
- package/components/input/epoch/fesm2022/index.mjs +118 -60
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/bundles/index.umd.js +107 -38
- package/components/input/slider/esm2022/slider.component.mjs +86 -18
- package/components/input/slider/esm2022/slider.props.mjs +5 -3
- package/components/input/slider/fesm2022/index.mjs +88 -19
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +5 -0
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/esm2022/oAuth.service.mjs +1 -1
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +84 -34
- package/runtime/base/components/app-component/app.component.d.ts +10 -3
- package/runtime/base/esm2022/components/app-component/app.component.mjs +85 -34
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +2 -2
- package/runtime/base/fesm2022/index.mjs +85 -35
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +56 -10
|
@@ -162,16 +162,15 @@ export class DateComponent extends BaseDateTimeComponent {
|
|
|
162
162
|
// So actual bootstrap input target width we made it to 0, so bootstrap calculating the calendar container top position improperly.
|
|
163
163
|
// To fix the container top position set the width 1px;
|
|
164
164
|
this.$element.find('.model-holder').width('1px');
|
|
165
|
-
const
|
|
166
|
-
|
|
165
|
+
const dpContainerEl = $('bs-datepicker-container');
|
|
166
|
+
dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');
|
|
167
167
|
$('.bs-calendar-container').removeAttr('role');
|
|
168
168
|
const datePickerContainer = $('.bs-datepicker-container')[0];
|
|
169
169
|
this.focusTrap = setFocusTrap(datePickerContainer, true);
|
|
170
170
|
this.focusTrap.activate();
|
|
171
171
|
this.addDatepickerKeyboardEvents(this, false);
|
|
172
|
-
adjustContainerPosition(
|
|
173
|
-
adjustContainerRightEdges(
|
|
174
|
-
this.adjustDateTimePickerInModel(datePickerContainerEl[0], this.bsDatePickerDirective);
|
|
172
|
+
adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);
|
|
173
|
+
adjustContainerRightEdges($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);
|
|
175
174
|
if (this.timeZone) {
|
|
176
175
|
const todayBtn = document.querySelector(`.${this.dateContainerCls} .bs-datepicker-buttons .btn-today-wrapper button`);
|
|
177
176
|
const setTodayTZHandler = (event) => {
|
|
@@ -374,4 +373,4 @@ export class DateComponent extends BaseDateTimeComponent {
|
|
|
374
373
|
args: ['dateInput', { read: IMaskDirective }]
|
|
375
374
|
}] }); })();
|
|
376
375
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateComponent, { className: "DateComponent", filePath: "date/date.component.ts", lineNumber: 46 }); })();
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDeEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFpQixTQUFTLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFD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Q0FBQztvQkFDakQsU0FBUyxnQkFBZ0IsYUFBYSxFQUFFLElBQUksQ0FBQztvQkFDN0Msa0JBQWtCLGVBQWU7aUJBQ3BDOztzQkF3RUksTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBUkcscUJBQXFCO2tCQUFoRSxTQUFTO21CQUFDLHFCQUFxQjtZQUNrQixLQUFLO2tCQUF0RCxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7O2tGQS9EdkMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQgeyBJTWFza01vZHVsZSB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJEaXJlY3RpdmUsIEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQge1xuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sXG4gICAgYWRqdXN0Q29udGFpbmVyUmlnaHRFZGdlcyxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBFVkVOVF9MSUZFLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldERhdGVPYmosXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0XG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IElXaWRnZXRDb25maWcsIHByb3ZpZGVBcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzZXRGb2N1c1RyYXAsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgQmFzZURhdGVUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9iYXNlLWRhdGUtdGltZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vZGF0ZS5wcm9wcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVRoZU1hc2tlZERhdGUgfSBmcm9tICcuL2ltYXNrVXRpbCc7XG5pbXBvcnQgeyBJTWFza0RpcmVjdGl2ZSB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0IHsgaW5jbHVkZXMsIGlzTmFOLCBwYXJzZUludCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RhdGUtdGltZS9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudFwiO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5cbmNvbnN0IENVUlJFTlRfREFURSA9ICdDVVJSRU5UX0RBVEUnO1xuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWRhdGUgaW5wdXQtZ3JvdXAnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tZGF0ZScsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbV21Db21wb25lbnRzTW9kdWxlLCBEYXRlVGltZVBpY2tlckNvbXBvbmVudCwgSU1hc2tNb2R1bGUsIEJzRGF0ZXBpY2tlck1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdbd21EYXRlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXMoRGF0ZUNvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoRGF0ZUNvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihEYXRlQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VEYXRlVGltZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBic0RhdGFWYWx1ZTtcbiAgICBwdWJsaWMgc2hvd2Ryb3Bkb3dub246IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGVDb250YWluZXJDbHM6IHN0cmluZztcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfYnNEZWZhdWx0TG9hZENoZWNrOiBib29sZWFuO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHVibGljIGFyaWFsYWJlbDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBkZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcjtcbiAgICBwcml2YXRlIGlzQ3VycmVudERhdGU7XG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA7XG4gICAgcHJpdmF0ZSBzaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICBtYXNrO1xuICAgIHByaXZhdGUgbWFza0RhdGVJbnB1dEZvcm1hdDtcbiAgICBwcml2YXRlIG1hc2tEYXRlSW5wdXRGb3JtYXRQbGFjZWhvbGRlcjtcblxuICAgIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZS52YWx1ZU9mKCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGVJbnB1dEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVPcHRpb25zLmRhdGVJbnB1dEZvcm1hdCB8fCAneXl5eS1NTS1kZCc7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd2RhdGVmb3JtYXRhc3BsYWNlaG9sZGVyICYmIHRoaXMuaW1hc2s/Lm1hc2tSZWYgJiYgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZURpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgJ3l5eXktTU0tZGQnLCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLm91dHB1dGZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbCkge1xuICAgICAgICBpZiAobmV3VmFsID09PSBDVVJSRU5UX0RBVEUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB0aGlzLnRpbWVab25lID8gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gbmV3VmFsID8gZ2V0RGF0ZU9iaihuZXdWYWwsIHsgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9LCB0aGlzLnRpbWVab25lKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcHJldmlvdXMgZGF0YXZhbHVlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSkgcHJvdGVjdGVkIGJzRGF0ZVBpY2tlckRpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdkYXRlSW5wdXQnLCB7IHJlYWQ6IElNYXNrRGlyZWN0aXZlIH0pIGltYXNrOiBJTWFza0RpcmVjdGl2ZTxhbnk+O1xuXG4gICAgLy8gVE9ETyB1c2UgQnNMb2NhbGVTZXJ2aWNlIHRvIHNldCB0aGUgY3VycmVudCB1c2VyJ3MgbG9jYWxlIHRvIHNlZSB0aGUgbG9jYWxpemVkIGxhYmVsc1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuXG4gICAgICAgIHRoaXMuZGF0ZUNvbnRhaW5lckNscyA9IGBhcHAtZGF0ZS0ke3RoaXMud2lkZ2V0SWR9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuY29udGFpbmVyQ2xhc3MgPSBgYXBwLWRhdGUgJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuc2hvd1dlZWtOdW1iZXJzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjayA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZXBhdHRlcm4gPSB0aGlzLmFwcERlZmF1bHRzLmRhdGVGb3JtYXQgfHwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0KEZvcm1XaWRnZXRUeXBlLkRBVEUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgnZGF0ZXBhdHRlcm4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdHJpZ2dlcmVkIHdoZW4gdGhlIGRhdGUgaW5wdXQgY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGlzcGxheURhdGVDaGFuZ2UoJGV2ZW50LCBpc05hdGl2ZVBpY2tlcjogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5pc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlucHV0VmFsID0gJGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgLy8gV2hlbiB0aGUgaW5wdXQgaXMgY2xlYXJlZCwgdGhlIGlucHV0IHZhbHVlIGJlY29tZXMgbWFza0RhdGVJbnB1dEZvcm1hdFBsYWNlaG9sZGVyLiBUaGlzIGNhdXNlcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4gICAgICAgIC8vIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGVxdWFsIHRvIG1hc2tEYXRlSW5wdXRGb3JtYXRQbGFjZWhvbGRlciwgaXQgbWVhbnMgdGhhdCB0aGUgaW5wdXQgaXMgaW4gYW4gZW1wdHkgc3RhdGUuXG4gICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiBpbnB1dFZhbCA9PT0gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIGlucHV0VmFsID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdWYWwgPSBnZXREYXRlT2JqKGlucHV0VmFsLCB7IHBhdHRlcm46IHRoaXMuZGF0ZXBhdHRlcm4sIGlzTmF0aXZlUGlja2VyOiBpc05hdGl2ZVBpY2tlciB9KTtcbiAgICAgICAgLy8gZGF0ZSBwYXR0ZXJuIHZhbGlkYXRpb25cbiAgICAgICAgLy8gaWYgaW52YWxpZCBwYXR0ZXJuIGlzIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIGFuIGVycm9yLlxuICAgICAgICBpZiAoIXRoaXMuZm9ybWF0VmFsaWRhdGlvbihuZXdWYWwsIGlucHV0VmFsLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiBtb2JpbGUgdmlldy5cbiAgICAgICAgLy8gaWYgaW52YWxpZCBkYXRlcyBhcmUgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gYWxlcnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlciAmJiB0aGlzLm1pbkRhdGVNYXhEYXRlVmFsaWRhdGlvbk9uSW5wdXQobmV3VmFsLCAkZXZlbnQsIHRoaXMuZGlzcGxheVZhbHVlLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShuZXdWYWwpO1xuICAgIH1cblxuICAgIC8vIHNldHMgdGhlIGRhdGFWYWx1ZSBhbmQgY29tcHV0ZXMgdGhlIGRpc3BsYXkgbW9kZWwgdmFsdWVzXG4gICAgcHJpdmF0ZSBzZXREYXRhVmFsdWUobmV3VmFsKTogdm9pZCB7XG4gICAgICAgIGlmKCFuZXdWYWwgJiYgJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5kaXNwbGF5LWlucHV0JykudmFsKCkpe1xuICAgICAgICAgICAgcmV0dXJuIDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiB3ZWIuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgICAgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCk7XG4gICAgICAgIGlmIChnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIG5ld1ZhbCwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgPT09IHRoaXMuZGlzcGxheVZhbHVlKSB7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmRpc3BsYXktaW5wdXQnKS52YWwodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmKCF0aGlzLmRhdGVOb3RJblJhbmdlKXtcbiAgICAgICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gbmV3VmFsO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHRoaXMuZGF0YXZhbHVlPT09IHRoaXMuZ2V0UHJldkRhdGFWYWx1ZSgpKXtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlPWdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5kYXRhdmFsdWUsIHRoaXMuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpXG4gICAgICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5kaXNwbGF5LWlucHV0JykudmFsKGRhdGUpO31cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB7fSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25EYXRlUGlja2VyT3BlbigpIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZSA6ICh0aGlzLnRpbWVab25lID8gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpIDogbmV3IERhdGUoKSk7XG4gICAgICAgIGlmICghdGhpcy5ic0RhdGFWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdodGxpZ2h0VG9kYXkodGhpcy5hY3RpdmVEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIGlmICh0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZSAmJiAodGhpcy5kYXRlTm90SW5SYW5nZXx8dGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fYnNWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBhcmUgdXNpbmcgdGhlIHR3byBpbnB1dCB0YWdzKFRvIG1haW50YWluIHRoZSBtb2RhbCBhbmQgcHJveHkgbW9kYWwpIGZvciB0aGUgZGF0ZSBjb250cm9sLlxuICAgICAgICAvLyBTbyBhY3R1YWwgYm9vdHN0cmFwIGlucHV0IHRhcmdldCB3aWR0aCB3ZSBtYWRlIGl0IHRvIDAsIHNvIGJvb3RzdHJhcCBjYWxjdWxhdGluZyB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHRvcCBwb3NpdGlvbiBpbXByb3Blcmx5LlxuICAgICAgICAvLyBUbyBmaXggdGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gc2V0IHRoZSB3aWR0aCAxcHg7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGVsLWhvbGRlcicpLndpZHRoKCcxcHgnKTtcbiAgICAgICAgY29uc3QgZGF0ZVBpY2tlckNvbnRhaW5lckVsID0gJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKTtcbiAgICAgICAgZGF0ZVBpY2tlckNvbnRhaW5lckVsLmF0dHIoJ2FyaWEtbGFiZWwnLCAnVXNlIEFycm93IGtleXMgdG8gbmF2aWdhdGUgZGF0ZXMsIENob29zZSBEYXRlIGZyb20gZGF0ZXBpY2tlcicpO1xuICAgICAgICAkKCcuYnMtY2FsZW5kYXItY29udGFpbmVyJykucmVtb3ZlQXR0cigncm9sZScpO1xuICAgICAgICBjb25zdCBkYXRlUGlja2VyQ29udGFpbmVyID0gJCgnLmJzLWRhdGVwaWNrZXItY29udGFpbmVyJylbMF07XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwID0gc2V0Rm9jdXNUcmFwKGRhdGVQaWNrZXJDb250YWluZXIsIHRydWUpO1xuICAgICAgICB0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmFkZERhdGVwaWNrZXJLZXlib2FyZEV2ZW50cyh0aGlzLCBmYWxzZSk7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKGRhdGVQaWNrZXJDb250YWluZXJFbCwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMoZGF0ZVBpY2tlckNvbnRhaW5lckVsLCB0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuYnNEYXRlUGlja2VyRGlyZWN0aXZlLl9kYXRlcGlja2VyKTtcbiAgICAgICAgdGhpcy5hZGp1c3REYXRlVGltZVBpY2tlckluTW9kZWwoZGF0ZVBpY2tlckNvbnRhaW5lckVsWzBdLCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZSk7XG4gICAgICAgIGlmICh0aGlzLnRpbWVab25lKSB7XG4gICAgICAgICAgICBjb25zdCB0b2RheUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuZGF0ZUNvbnRhaW5lckNsc30gLmJzLWRhdGVwaWNrZXItYnV0dG9ucyAuYnRuLXRvZGF5LXdyYXBwZXIgYnV0dG9uYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBzZXRUb2RheVRaSGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5VFogPSBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSk7XG4gICAgICAgICAgICAgICAgaWYgKG5ldyBEYXRlKHRoaXMuYnNEYXRhVmFsdWUpLnRvRGF0ZVN0cmluZygpICE9PSBuZXcgRGF0ZSh0b2RheVRaKS50b0RhdGVTdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdG9kYXlUWjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9kYXlCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdG9kYXlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcilcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbklucHV0Qmx1cigkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJTWFzaygpO1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSU1hc2soKSB7XG4gICAgICAgIHRoaXMuaW1hc2s/Lm1hc2tSZWY/LnVwZGF0ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ2NoYW5nZScsICdjbGljayddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudChub2RlLCBldmVudE5hbWUsIGNhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB0b2dnbGUgdGhlIGRyb3Bkb3duIG9mIHRoZSBkYXRlIHdpZGdldFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVEcERyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy8gRml4ZXMgY2xpY2sgZXZlbnQgZ2V0dGluZyB0cmlnZ3JlZCB0d2ljZSBpbiBNb2JpbGUgZGV2aWNlcy5cbiAgICAgICAgICAgIGlmICghc2tpcEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHsgJGV2ZW50OiAkZXZlbnQgfSk7XG4gICAgICAgICAgICAvLyAgdGhpcy5mb2N1c09uSW5wdXRFbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0ICYmICQoJGV2ZW50LnRhcmdldCkuaXMoJ2lucHV0JykgJiYgISh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUudG9nZ2xlKCk7XG4gICAgICAgIHRoaXMuYWRkQm9keUNsaWNrTGlzdGVuZXIodGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuaXNPcGVuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJzRGF0ZUNvbnRhaW5lckVsZW1lbnQgPSBib2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgYnNEYXRlQ29udGFpbmVyRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCB0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIGRhdGUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWwgPSBnZXREYXRlT2JqKGV2ZW50LnRhcmdldC52YWx1ZSwgeyBwYXR0ZXJuOiB0aGlzLmRhdGVwYXR0ZXJuIH0pO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgbmV3VmFsLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRWYWwgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiBpbnB1dFZhbCA9PT0gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWwgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRWYWwgJiYgdGhpcy5kYXRlcGF0dGVybiA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihpbnB1dFZhbCkgJiYgcGFyc2VJbnQoaW5wdXRWYWwpICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCBldmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dFZhbCAmJiBpbnB1dFZhbCAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuYnNWYWx1ZSA9IGlucHV0VmFsID8gbmV3VmFsIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcERyb3Bkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVEYXRlcGlja2VyRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBkYXRlIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EYXRlQ2hhbmdlKG5ld1ZhbCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogIE5neC1ib290c3RyYXAgdXBncmFkZSA6IFRvIGF2b2lkIHRoZSBwYWdlIGxvYWQgZGF0ZWNoYW5nZSBldmVudDtcbiAgICAgICAgICogIFRPRE86XG4gICAgICAgICAqICBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvNjAxNlxuICAgICAgICAgKiAgRm9yIGFib3ZlIGlzc3VlLCBvbmNlIHdlIGdldCB0aGUgc29sdXRpb24gZnJvbSBOZ3gtQm9vdHN0cmFwIHRlYW0sICByZW1vdmUgdGhlIF9ic0RlZmF1bHRMb2FkQ2hlY2sgY2hlY2sgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5fYnNEZWZhdWx0TG9hZENoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShuZXdWYWwpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdzaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXInKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciA9IG52O1xuICAgICAgICAgICAgdGhpcy5pbWFzaz8uZGVzdHJveU1hc2soKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiB0aGlzLmRhdGVwYXR0ZXJuICE9PSAndGltZXN0YW1wJykge1xuICAgICAgICAgICAgICAgIHRoaXMubWFzayA9IHZhbGlkYXRlVGhlTWFza2VkRGF0ZSh0aGlzLmRhdGVwYXR0ZXJuLCB0aGlzLnNlbGVjdGVkTG9jYWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQgPSB0aGlzLmRhdGVJbnB1dEZvcm1hdDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQgPSAodGhpcy5kYXRlSW5wdXRGb3JtYXQuc3BsaXQoJ2QnKS5sZW5ndGggLSAxKSA9PT0gMSA/IHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdC5yZXBsYWNlKCdkJywgJ2RkJykgOiB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gKHRoaXMuZGF0ZUlucHV0Rm9ybWF0LnNwbGl0KCdNJykubGVuZ3RoIC0gMSkgPT09IDEgPyB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQucmVwbGFjZSgnTScsICdNTScpIDogdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0O1xuICAgICAgICAgICAgICAgIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdFBsYWNlaG9sZGVyID0gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0LnRvVXBwZXJDYXNlKCkucmVwbGFjZSgnRUVFRScsICdFRUVFRUUnKS5yZXBsYWNlKCdNTU1NJywgJ01NTScpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGFwcC10ZXh0Ym94IGFwcC1kYXRlaW5wdXQgZGlzcGxheS1pbnB1dFwiXG4gIGZvY3VzLXRhcmdldFxuICB0eXBlPVwidGV4dFwiXG4gIFtuYW1lXT1cIm5hbWVcIlxuICAjZGF0ZUlucHV0XG4gIFtpbWFza109XCJtYXNrXCJcbiAgW3VubWFza109XCJ0cnVlXCJcbiAgW3RhYmluZGV4XT1cImxvYWROYXRpdmVEYXRlSW5wdXQgPyAnLTEnIDogdGFiaW5kZXhcIlxuICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgKGNsaWNrKT1cInRvZ2dsZURwRHJvcGRvd24oJGV2ZW50LCB0cnVlKVwiXG4gIChmb2N1cyk9XCJvbkRhdGVUaW1lSW5wdXRGb2N1cygpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7IHVwZGF0ZUlNYXNrKClcIlxuICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWxcIlxuICAoY2hhbmdlKT1cIm9uRGlzcGxheURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gIChrZXlkb3duKT1cInRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7IG9uRGlzcGxheUtleWRvd24oJGV2ZW50KTtcIj5cblxuPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tdGltZVwiXG4gICAgW3RhYmluZGV4XT1cImxvYWROYXRpdmVEYXRlSW5wdXQgPyAnLTEnIDogdGFiaW5kZXhcIlxuICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiEhbG9hZE5hdGl2ZURhdGVJbnB1dFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRpc3BsYXlWYWx1ZSA/ICdDaGFuZ2UgRGF0ZSAnICsgZGlzcGxheVZhbHVlIDogJ0Nob29zZSBkYXRlIGJ5IHByZXNzaW5nIGVudGVyJ1wiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIGZhbHNlKVwiPlxuICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJhcHAtaWNvbiB3bS1zbC1sIHNsLWNhbGVuZGFyXCI+PC9pPlxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbjxkaXYgc3R5bGU9XCJ3aWR0aDogMDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+XG4gIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgYXJpYS1sYWJlbD1cImRhdGVwaWNrZXIgZHJvcGRvd25tZW51XCJcbiAgICBhcmlhLWNvbnRyb2xzPVwiZGF0ZVwiXG4gICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyVGFyZ2V0IHx8ICcud20tYXBwJ1wiXG4gICAgW2JzQ29uZmlnXT1cIl9kYXRlT3B0aW9uc1wiXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgICNkYXRlcGlja2VyPVwiYnNEYXRlcGlja2VyXCJcbiAgICBic0RhdGVwaWNrZXJcbiAgICBbZGF5c0Rpc2FibGVkXT1cImV4Y2x1ZGVkRGF5c1RvRGlzYWJsZVwiXG4gICAgW2RhdGVzRGlzYWJsZWRdPVwiZXhjbHVkZWREYXRlc1RvRGlzYWJsZVwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCJcbiAgICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgW2JzVmFsdWVdPVwiYnNEYXRhVmFsdWVcIlxuICAgIChvblNob3duKT1cIm9uRGF0ZVBpY2tlck9wZW4oKVwiXG4gICAgKG9uSGlkZGVuKT1cImhpZGVEYXRlcGlja2VyRHJvcGRvd24oKVwiXG4gICAgKGJzVmFsdWVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG5AaWYgKGxvYWROYXRpdmVEYXRlSW5wdXQpIHtcbiAgPHdtLWRhdGV0aW1lcGlja2VyXG4gICAgZGF0ZVRpbWVQaWNrZXJcbiAgICBtb2RlPVwiREFURVwiXG4gICAgW2NvbmZpZ109XCJfZGF0ZU9wdGlvbnNcIlxuICAgIFtwbGFjZW1lbnRdPVwibW9kYWxcIlxuICAgIFtleGNsdWRlZERheXNUb0Rpc2FibGVdPVwiZXhjbHVkZWREYXlzVG9EaXNhYmxlXCJcbiAgICBbZXhjbHVkZWREYXRlc1RvRGlzYWJsZV09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICBbZGlzcGxheUZvcm1hdF09XCJkYXRlSW5wdXRGb3JtYXRcIlxuICAgIFt2YWx1ZV09XCJic0RhdGFWYWx1ZVwiXG4gICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3dtLWRhdGV0aW1lcGlja2VyPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLWlucHV0IG1vYmlsZS1kYXRlcGlja2VyLWNvbnRhaW5lclwiXG4gICAgW3RhYmluZGV4XT1cInRhYmluZGV4IHx8IDBcIlxuICAgIChjbGljayk9XCIhKGRpc2FibGVkIHx8IHJlYWRvbmx5KSAmJiBzaG93RGF0ZVBpY2tlck1vZGFsKGJzRGF0YVZhbHVlKVwiXG4gICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKHRydWUpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7XCJcbiAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRpc3BsYXlWYWx1ZSA/ICdDaGFuZ2UgRGF0ZSAnICsgZGlzcGxheVZhbHVlIDogYXJpYWxhYmVsIHx8ICdDaG9vc2UgRGF0ZSdcIlxuICAgIHJvbGU9XCJidXR0b25cIj5cbiAgPC9kaXY+XG59XG4iXX0=
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDeEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFpQixTQUFTLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFD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QixlQUFlO2lCQUNwQzs7c0JBd0VJLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQVJHLHFCQUFxQjtrQkFBaEUsU0FBUzttQkFBQyxxQkFBcUI7WUFDa0IsS0FBSztrQkFBdEQsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFOztrRkEvRHZDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXbUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHsgSU1hc2tNb2R1bGUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlLCBCc0RhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHtcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgQXBwRGVmYXVsdHMsXG4gICAgRVZFTlRfTElGRSxcbiAgICBGb3JtV2lkZ2V0VHlwZSxcbiAgICBnZXREYXRlT2JqLFxuICAgIGdldERpc3BsYXlEYXRlVGltZUZvcm1hdCxcbiAgICBnZXRGb3JtYXR0ZWREYXRlLFxuICAgIGdldE1vbWVudExvY2FsZU9iamVjdFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBJV2lkZ2V0Q29uZmlnLCBwcm92aWRlQXMsIHByb3ZpZGVBc1dpZGdldFJlZiwgc2V0Rm9jdXNUcmFwLCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2RhdGUucHJvcHMnO1xuaW1wb3J0IHsgdmFsaWRhdGVUaGVNYXNrZWREYXRlIH0gZnJvbSAnLi9pbWFza1V0aWwnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcbmltcG9ydCB7IGluY2x1ZGVzLCBpc05hTiwgcGFyc2VJbnQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBEYXRlVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gXCIuLi9kYXRlLXRpbWUvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnRcIjtcblxuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5jb25zdCBDVVJSRU5UX0RBVEUgPSAnQ1VSUkVOVF9EQVRFJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRlIGlucHV0LWdyb3VwJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWRhdGUnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1dtQ29tcG9uZW50c01vZHVsZSwgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsIElNYXNrTW9kdWxlLCBCc0RhdGVwaWNrZXJNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnW3dtRGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRGF0ZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgYnNEYXRhVmFsdWU7XG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXRlQ29udGFpbmVyQ2xzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JzRGVmYXVsdExvYWRDaGVjazogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgZGVyZWdpc3RlckV2ZW50TGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBpc0N1cnJlbnREYXRlO1xuICAgIHByaXZhdGUgZm9jdXNUcmFwO1xuICAgIHByaXZhdGUgc2hvd2RhdGVmb3JtYXRhc3BsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgbWFzaztcbiAgICBwcml2YXRlIG1hc2tEYXRlSW5wdXRGb3JtYXQ7XG4gICAgcHJpdmF0ZSBtYXNrRGF0ZUlucHV0Rm9ybWF0UGxhY2Vob2xkZXI7XG5cbiAgICBnZXQgdGltZXN0YW1wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ic0RhdGFWYWx1ZSA/IHRoaXMuYnNEYXRhVmFsdWUudmFsdWVPZigpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBkYXRlSW5wdXRGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlT3B0aW9ucy5kYXRlSW5wdXRGb3JtYXQgfHwgJ3l5eXktTU0tZGQnO1xuICAgIH1cblxuICAgIGdldCBkaXNwbGF5VmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiB0aGlzLmltYXNrPy5tYXNrUmVmICYmIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsIHRoaXMuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVEaXNwbGF5VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsICd5eXl5LU1NLWRkJywgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgdGhpcy5vdXRwdXRmb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgLy8gVG9kb1tTaHViaGFtXTogbmVlZHMgdG8gYmUgcmVkZWZpbmVkXG4gICAgLy8gc2V0cyB0aGUgZGF0YVZhbHVlIGFuZCBjb21wdXRlcyB0aGUgZGlzcGxheSBtb2RlbCB2YWx1ZXNcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0IGRhdGF2YWx1ZShuZXdWYWwpIHtcbiAgICAgICAgaWYgKG5ld1ZhbCA9PT0gQ1VSUkVOVF9EQVRFKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdGhpcy50aW1lWm9uZSA/IGdldE1vbWVudExvY2FsZU9iamVjdCh0aGlzLnRpbWVab25lKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudERhdGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IG5ld1ZhbCA/IGdldERhdGVPYmoobmV3VmFsLCB7IGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSwgdGhpcy50aW1lWm9uZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudERhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB1cGRhdGUgdGhlIHByZXZpb3VzIGRhdGF2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZChCc0RhdGVwaWNrZXJEaXJlY3RpdmUpIHByb3RlY3RlZCBic0RhdGVQaWNrZXJEaXJlY3RpdmU7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JywgeyByZWFkOiBJTWFza0RpcmVjdGl2ZSB9KSBpbWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8vIFRPRE8gdXNlIEJzTG9jYWxlU2VydmljZSB0byBzZXQgdGhlIGN1cnJlbnQgdXNlcidzIGxvY2FsZSB0byBzZWUgdGhlIGxvY2FsaXplZCBsYWJlbHNcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICB0aGlzLmRhdGVDb250YWluZXJDbHMgPSBgYXBwLWRhdGUtJHt0aGlzLndpZGdldElkfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLmNvbnRhaW5lckNsYXNzID0gYGFwcC1kYXRlICR7dGhpcy5kYXRlQ29udGFpbmVyQ2xzfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ic0RlZmF1bHRMb2FkQ2hlY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuID0gdGhpcy5hcHBEZWZhdWx0cy5kYXRlRm9ybWF0IHx8IGdldERpc3BsYXlEYXRlVGltZUZvcm1hdChGb3JtV2lkZ2V0VHlwZS5EQVRFKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoJ2RhdGVwYXR0ZXJuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBkYXRlIGlucHV0IGNoYW5nZXNcbiAgICAgKi9cbiAgICBvbkRpc3BsYXlEYXRlQ2hhbmdlKCRldmVudCwgaXNOYXRpdmVQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRW50ZXJQcmVzc2VkT25EYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnB1dFZhbCA9ICRldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIC8vIFdoZW4gdGhlIGlucHV0IGlzIGNsZWFyZWQsIHRoZSBpbnB1dCB2YWx1ZSBiZWNvbWVzIG1hc2tEYXRlSW5wdXRGb3JtYXRQbGFjZWhvbGRlci4gVGhpcyBjYXVzZXMgYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICAvLyBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBlcXVhbCB0byBtYXNrRGF0ZUlucHV0Rm9ybWF0UGxhY2Vob2xkZXIsIGl0IG1lYW5zIHRoYXQgdGhlIGlucHV0IGlzIGluIGFuIGVtcHR5IHN0YXRlLlxuICAgICAgICBpZiAodGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgJiYgaW5wdXRWYWwgPT09IHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdFBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICBpbnB1dFZhbCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0RGF0ZU9iaihpbnB1dFZhbCwgeyBwYXR0ZXJuOiB0aGlzLmRhdGVwYXR0ZXJuLCBpc05hdGl2ZVBpY2tlcjogaXNOYXRpdmVQaWNrZXIgfSk7XG4gICAgICAgIC8vIGRhdGUgcGF0dGVybiB2YWxpZGF0aW9uXG4gICAgICAgIC8vIGlmIGludmFsaWQgcGF0dGVybiBpcyBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyBhbiBlcnJvci5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCBpbnB1dFZhbCwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWluIGRhdGUgYW5kIG1heCBkYXRlIHZhbGlkYXRpb24gaW4gbW9iaWxlIHZpZXcuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIGFuIGFsZXJ0LlxuICAgICAgICBpZiAoaXNOYXRpdmVQaWNrZXIgJiYgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCwgJGV2ZW50LCB0aGlzLmRpc3BsYXlWYWx1ZSwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG5cbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIHByaXZhdGUgc2V0RGF0YVZhbHVlKG5ld1ZhbCk6IHZvaWQge1xuICAgICAgICBpZighbmV3VmFsICYmICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCcuZGlzcGxheS1pbnB1dCcpLnZhbCgpKXtcbiAgICAgICAgICAgIHJldHVybiA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgLy8gbWluIGRhdGUgYW5kIG1heCBkYXRlIHZhbGlkYXRpb24gaW4gd2ViLlxuICAgICAgICAvLyBpZiBpbnZhbGlkIGRhdGVzIGFyZSBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICAgIHRoaXMubWluRGF0ZU1heERhdGVWYWxpZGF0aW9uT25JbnB1dChuZXdWYWwpO1xuICAgICAgICBpZiAoZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCBuZXdWYWwsIHRoaXMuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpID09PSB0aGlzLmRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5kaXNwbGF5LWlucHV0JykudmFsKHRoaXMuZGlzcGxheVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZighdGhpcy5kYXRlTm90SW5SYW5nZSl7XG4gICAgICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IG5ld1ZhbDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih0aGlzLmRhdGF2YWx1ZT09PSB0aGlzLmdldFByZXZEYXRhVmFsdWUoKSl7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZT1nZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuZGF0YXZhbHVlLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKVxuICAgICAgICAgICAgICAgICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCcuZGlzcGxheS1pbnB1dCcpLnZhbChkYXRlKTt9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uRGF0ZVBpY2tlck9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5ic0RhdGFWYWx1ZSA/IHRoaXMuYnNEYXRhVmFsdWUgOiAodGhpcy50aW1lWm9uZSA/IGdldE1vbWVudExvY2FsZU9iamVjdCh0aGlzLnRpbWVab25lKSA6IG5ldyBEYXRlKCkpO1xuICAgICAgICBpZiAoIXRoaXMuYnNEYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaHRsaWdodFRvZGF5KHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVJTWFzaygpO1xuICAgICAgICBpZiAodGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUgJiYgKHRoaXMuZGF0ZU5vdEluUmFuZ2V8fHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0KSkge1xuICAgICAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuX2JzVmFsdWUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgYXJlIHVzaW5nIHRoZSB0d28gaW5wdXQgdGFncyhUbyBtYWludGFpbiB0aGUgbW9kYWwgYW5kIHByb3h5IG1vZGFsKSBmb3IgdGhlIGRhdGUgY29udHJvbC5cbiAgICAgICAgLy8gU28gYWN0dWFsIGJvb3RzdHJhcCBpbnB1dCB0YXJnZXQgd2lkdGggd2UgbWFkZSBpdCB0byAwLCBzbyBib290c3RyYXAgY2FsY3VsYXRpbmcgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gaW1wcm9wZXJseS5cbiAgICAgICAgLy8gVG8gZml4IHRoZSBjb250YWluZXIgdG9wIHBvc2l0aW9uIHNldCB0aGUgd2lkdGggMXB4O1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5tb2RlbC1ob2xkZXInKS53aWR0aCgnMXB4Jyk7XG4gICAgICAgIGNvbnN0IGRwQ29udGFpbmVyRWwgPSAkKCdicy1kYXRlcGlja2VyLWNvbnRhaW5lcicpO1xuICAgICAgICBkcENvbnRhaW5lckVsLmF0dHIoJ2FyaWEtbGFiZWwnLCAnVXNlIEFycm93IGtleXMgdG8gbmF2aWdhdGUgZGF0ZXMsIENob29zZSBEYXRlIGZyb20gZGF0ZXBpY2tlcicpO1xuICAgICAgICAkKCcuYnMtY2FsZW5kYXItY29udGFpbmVyJykucmVtb3ZlQXR0cigncm9sZScpO1xuICAgICAgICBjb25zdCBkYXRlUGlja2VyQ29udGFpbmVyID0gJCgnLmJzLWRhdGVwaWNrZXItY29udGFpbmVyJylbMF07XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwID0gc2V0Rm9jdXNUcmFwKGRhdGVQaWNrZXJDb250YWluZXIsIHRydWUpO1xuICAgICAgICB0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmFkZERhdGVwaWNrZXJLZXlib2FyZEV2ZW50cyh0aGlzLCBmYWxzZSk7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyksIHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuX2RhdGVwaWNrZXIpO1xuICAgICAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzKCQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyksIHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuX2RhdGVwaWNrZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbWVab25lKSB7XG4gICAgICAgICAgICBjb25zdCB0b2RheUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuZGF0ZUNvbnRhaW5lckNsc30gLmJzLWRhdGVwaWNrZXItYnV0dG9ucyAuYnRuLXRvZGF5LXdyYXBwZXIgYnV0dG9uYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBzZXRUb2RheVRaSGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5VFogPSBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSk7XG4gICAgICAgICAgICAgICAgaWYgKG5ldyBEYXRlKHRoaXMuYnNEYXRhVmFsdWUpLnRvRGF0ZVN0cmluZygpICE9PSBuZXcgRGF0ZSh0b2RheVRaKS50b0RhdGVTdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdG9kYXlUWjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9kYXlCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdG9kYXlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcilcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbklucHV0Qmx1cigkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJTWFzaygpO1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSU1hc2soKSB7XG4gICAgICAgIHRoaXMuaW1hc2s/Lm1hc2tSZWY/LnVwZGF0ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ2NoYW5nZScsICdjbGljayddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudChub2RlLCBldmVudE5hbWUsIGNhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB0b2dnbGUgdGhlIGRyb3Bkb3duIG9mIHRoZSBkYXRlIHdpZGdldFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVEcERyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy8gRml4ZXMgY2xpY2sgZXZlbnQgZ2V0dGluZyB0cmlnZ3JlZCB0d2ljZSBpbiBNb2JpbGUgZGV2aWNlcy5cbiAgICAgICAgICAgIGlmICghc2tpcEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHsgJGV2ZW50OiAkZXZlbnQgfSk7XG4gICAgICAgICAgICAvLyAgdGhpcy5mb2N1c09uSW5wdXRFbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0ICYmICQoJGV2ZW50LnRhcmdldCkuaXMoJ2lucHV0JykgJiYgISh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUudG9nZ2xlKCk7XG4gICAgICAgIHRoaXMuYWRkQm9keUNsaWNrTGlzdGVuZXIodGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuaXNPcGVuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJzRGF0ZUNvbnRhaW5lckVsZW1lbnQgPSBib2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgYnNEYXRlQ29udGFpbmVyRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCB0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIGRhdGUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWwgPSBnZXREYXRlT2JqKGV2ZW50LnRhcmdldC52YWx1ZSwgeyBwYXR0ZXJuOiB0aGlzLmRhdGVwYXR0ZXJuIH0pO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgbmV3VmFsLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRWYWwgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiBpbnB1dFZhbCA9PT0gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWwgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRWYWwgJiYgdGhpcy5kYXRlcGF0dGVybiA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihpbnB1dFZhbCkgJiYgcGFyc2VJbnQoaW5wdXRWYWwpICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCBldmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dFZhbCAmJiBpbnB1dFZhbCAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuYnNWYWx1ZSA9IGlucHV0VmFsID8gbmV3VmFsIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcERyb3Bkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVEYXRlcGlja2VyRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBkYXRlIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EYXRlQ2hhbmdlKG5ld1ZhbCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogIE5neC1ib290c3RyYXAgdXBncmFkZSA6IFRvIGF2b2lkIHRoZSBwYWdlIGxvYWQgZGF0ZWNoYW5nZSBldmVudDtcbiAgICAgICAgICogIFRPRE86XG4gICAgICAgICAqICBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvNjAxNlxuICAgICAgICAgKiAgRm9yIGFib3ZlIGlzc3VlLCBvbmNlIHdlIGdldCB0aGUgc29sdXRpb24gZnJvbSBOZ3gtQm9vdHN0cmFwIHRlYW0sICByZW1vdmUgdGhlIF9ic0RlZmF1bHRMb2FkQ2hlY2sgY2hlY2sgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5fYnNEZWZhdWx0TG9hZENoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShuZXdWYWwpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdzaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXInKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciA9IG52O1xuICAgICAgICAgICAgdGhpcy5pbWFzaz8uZGVzdHJveU1hc2soKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dkYXRlZm9ybWF0YXNwbGFjZWhvbGRlciAmJiB0aGlzLmRhdGVwYXR0ZXJuICE9PSAndGltZXN0YW1wJykge1xuICAgICAgICAgICAgICAgIHRoaXMubWFzayA9IHZhbGlkYXRlVGhlTWFza2VkRGF0ZSh0aGlzLmRhdGVwYXR0ZXJuLCB0aGlzLnNlbGVjdGVkTG9jYWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQgPSB0aGlzLmRhdGVJbnB1dEZvcm1hdDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQgPSAodGhpcy5kYXRlSW5wdXRGb3JtYXQuc3BsaXQoJ2QnKS5sZW5ndGggLSAxKSA9PT0gMSA/IHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdC5yZXBsYWNlKCdkJywgJ2RkJykgOiB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gKHRoaXMuZGF0ZUlucHV0Rm9ybWF0LnNwbGl0KCdNJykubGVuZ3RoIC0gMSkgPT09IDEgPyB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQucmVwbGFjZSgnTScsICdNTScpIDogdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0O1xuICAgICAgICAgICAgICAgIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdFBsYWNlaG9sZGVyID0gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0LnRvVXBwZXJDYXNlKCkucmVwbGFjZSgnRUVFRScsICdFRUVFRUUnKS5yZXBsYWNlKCdNTU1NJywgJ01NTScpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGFwcC10ZXh0Ym94IGFwcC1kYXRlaW5wdXQgZGlzcGxheS1pbnB1dFwiXG4gIGZvY3VzLXRhcmdldFxuICB0eXBlPVwidGV4dFwiXG4gIFtuYW1lXT1cIm5hbWVcIlxuICAjZGF0ZUlucHV0XG4gIFtpbWFza109XCJtYXNrXCJcbiAgW3VubWFza109XCJ0cnVlXCJcbiAgW3RhYmluZGV4XT1cImxvYWROYXRpdmVEYXRlSW5wdXQgPyAnLTEnIDogdGFiaW5kZXhcIlxuICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgKGNsaWNrKT1cInRvZ2dsZURwRHJvcGRvd24oJGV2ZW50LCB0cnVlKVwiXG4gIChmb2N1cyk9XCJvbkRhdGVUaW1lSW5wdXRGb2N1cygpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7IHVwZGF0ZUlNYXNrKClcIlxuICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWxcIlxuICAoY2hhbmdlKT1cIm9uRGlzcGxheURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gIChrZXlkb3duKT1cInRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7IG9uRGlzcGxheUtleWRvd24oJGV2ZW50KTtcIj5cblxuPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tdGltZVwiXG4gICAgW3RhYmluZGV4XT1cImxvYWROYXRpdmVEYXRlSW5wdXQgPyAnLTEnIDogdGFiaW5kZXhcIlxuICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiEhbG9hZE5hdGl2ZURhdGVJbnB1dFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRpc3BsYXlWYWx1ZSA/ICdDaGFuZ2UgRGF0ZSAnICsgZGlzcGxheVZhbHVlIDogJ0Nob29zZSBkYXRlIGJ5IHByZXNzaW5nIGVudGVyJ1wiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIGZhbHNlKVwiPlxuICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJhcHAtaWNvbiB3bS1zbC1sIHNsLWNhbGVuZGFyXCI+PC9pPlxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbjxkaXYgc3R5bGU9XCJ3aWR0aDogMDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+XG4gIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgYXJpYS1sYWJlbD1cImRhdGVwaWNrZXIgZHJvcGRvd25tZW51XCJcbiAgICBhcmlhLWNvbnRyb2xzPVwiZGF0ZVwiXG4gICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyVGFyZ2V0IHx8ICcud20tYXBwJ1wiXG4gICAgW2JzQ29uZmlnXT1cIl9kYXRlT3B0aW9uc1wiXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgICNkYXRlcGlja2VyPVwiYnNEYXRlcGlja2VyXCJcbiAgICBic0RhdGVwaWNrZXJcbiAgICBbZGF5c0Rpc2FibGVkXT1cImV4Y2x1ZGVkRGF5c1RvRGlzYWJsZVwiXG4gICAgW2RhdGVzRGlzYWJsZWRdPVwiZXhjbHVkZWREYXRlc1RvRGlzYWJsZVwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCJcbiAgICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgW2JzVmFsdWVdPVwiYnNEYXRhVmFsdWVcIlxuICAgIChvblNob3duKT1cIm9uRGF0ZVBpY2tlck9wZW4oKVwiXG4gICAgKG9uSGlkZGVuKT1cImhpZGVEYXRlcGlja2VyRHJvcGRvd24oKVwiXG4gICAgKGJzVmFsdWVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG5AaWYgKGxvYWROYXRpdmVEYXRlSW5wdXQpIHtcbiAgPHdtLWRhdGV0aW1lcGlja2VyXG4gICAgZGF0ZVRpbWVQaWNrZXJcbiAgICBtb2RlPVwiREFURVwiXG4gICAgW2NvbmZpZ109XCJfZGF0ZU9wdGlvbnNcIlxuICAgIFtwbGFjZW1lbnRdPVwibW9kYWxcIlxuICAgIFtleGNsdWRlZERheXNUb0Rpc2FibGVdPVwiZXhjbHVkZWREYXlzVG9EaXNhYmxlXCJcbiAgICBbZXhjbHVkZWREYXRlc1RvRGlzYWJsZV09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICBbZGlzcGxheUZvcm1hdF09XCJkYXRlSW5wdXRGb3JtYXRcIlxuICAgIFt2YWx1ZV09XCJic0RhdGFWYWx1ZVwiXG4gICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3dtLWRhdGV0aW1lcGlja2VyPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLWlucHV0IG1vYmlsZS1kYXRlcGlja2VyLWNvbnRhaW5lclwiXG4gICAgW3RhYmluZGV4XT1cInRhYmluZGV4IHx8IDBcIlxuICAgIChjbGljayk9XCIhKGRpc2FibGVkIHx8IHJlYWRvbmx5KSAmJiBzaG93RGF0ZVBpY2tlck1vZGFsKGJzRGF0YVZhbHVlKVwiXG4gICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKHRydWUpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7XCJcbiAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRpc3BsYXlWYWx1ZSA/ICdDaGFuZ2UgRGF0ZSAnICsgZGlzcGxheVZhbHVlIDogYXJpYWxhYmVsIHx8ICdDaG9vc2UgRGF0ZSdcIlxuICAgIHJvbGU9XCJidXR0b25cIj5cbiAgPC9kaXY+XG59XG4iXX0=
|