@skyux/datetime 7.4.2 → 7.6.0

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.
Files changed (44) hide show
  1. package/documentation.json +70 -70
  2. package/esm2020/lib/modules/date-pipe/date-format-utility.mjs +3 -1
  3. package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +7 -7
  4. package/esm2020/lib/modules/date-range-picker/types/date-range-calculation.mjs +1 -1
  5. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-type.mjs +2 -2
  6. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +2 -2
  7. package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +1 -1
  8. package/esm2020/lib/modules/datepicker/datepicker-calendar-change.mjs +1 -1
  9. package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +2 -2
  10. package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +2 -2
  11. package/esm2020/lib/modules/datepicker/datepicker-custom-date.mjs +1 -1
  12. package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +10 -10
  13. package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +9 -9
  14. package/esm2020/lib/modules/datepicker/datepicker.component.mjs +6 -6
  15. package/esm2020/lib/modules/datepicker/datepicker.service.mjs +2 -2
  16. package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +1 -1
  17. package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +1 -1
  18. package/esm2020/lib/modules/datepicker/fuzzy-date.mjs +1 -1
  19. package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +2 -2
  20. package/esm2020/lib/modules/timepicker/timepicker.component.mjs +10 -10
  21. package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +3 -3
  22. package/esm2020/lib/modules/timepicker/timepicker.interface.mjs +1 -1
  23. package/fesm2015/skyux-datetime.mjs +47 -45
  24. package/fesm2015/skyux-datetime.mjs.map +1 -1
  25. package/fesm2020/skyux-datetime.mjs +47 -45
  26. package/fesm2020/skyux-datetime.mjs.map +1 -1
  27. package/lib/modules/date-range-picker/date-range-picker.component.d.ts +6 -6
  28. package/lib/modules/date-range-picker/types/date-range-calculation.d.ts +1 -1
  29. package/lib/modules/date-range-picker/types/date-range-calculator-type.d.ts +1 -1
  30. package/lib/modules/date-range-picker/types/date-range-calculator.d.ts +4 -4
  31. package/lib/modules/date-range-picker/types/date-range.d.ts +2 -2
  32. package/lib/modules/datepicker/datepicker-calendar-change.d.ts +1 -1
  33. package/lib/modules/datepicker/datepicker-config.service.d.ts +4 -4
  34. package/lib/modules/datepicker/datepicker-custom-date.d.ts +2 -2
  35. package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +8 -8
  36. package/lib/modules/datepicker/datepicker-input.directive.d.ts +7 -7
  37. package/lib/modules/datepicker/datepicker.service.d.ts +1 -1
  38. package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
  39. package/lib/modules/datepicker/daypicker-cell.component.d.ts +2 -2
  40. package/lib/modules/datepicker/fuzzy-date.d.ts +3 -3
  41. package/lib/modules/timepicker/timepicker.component.d.ts +1 -1
  42. package/lib/modules/timepicker/timepicker.directive.d.ts +3 -3
  43. package/lib/modules/timepicker/timepicker.interface.d.ts +7 -7
  44. package/package.json +8 -8
@@ -1,4 +1,4 @@
1
- var _SkyTimepickerComponent_instances, _SkyTimepickerComponent_affixer, _SkyTimepickerComponent_timepickerUnsubscribe, _SkyTimepickerComponent_ngUnsubscribe, _SkyTimepickerComponent_overlay, _SkyTimepickerComponent_overlayKeydownListner, _SkyTimepickerComponent__disabled, _SkyTimepickerComponent__timepickerRef, _SkyTimepickerComponent_affixService, _SkyTimepickerComponent_changeDetector, _SkyTimepickerComponent_coreAdapter, _SkyTimepickerComponent_overlayService, _SkyTimepickerComponent_closePicker, _SkyTimepickerComponent_openPicker, _SkyTimepickerComponent_createAffixer, _SkyTimepickerComponent_destroyAffixer, _SkyTimepickerComponent_createOverlay, _SkyTimepickerComponent_destroyOverlay, _SkyTimepickerComponent_addKeydownListener, _SkyTimepickerComponent_removePickerEventListeners;
1
+ var _SkyTimepickerComponent_instances, _SkyTimepickerComponent_affixer, _SkyTimepickerComponent_timepickerUnsubscribe, _SkyTimepickerComponent_ngUnsubscribe, _SkyTimepickerComponent_overlay, _SkyTimepickerComponent_overlayKeydownListener, _SkyTimepickerComponent__disabled, _SkyTimepickerComponent__timepickerRef, _SkyTimepickerComponent_affixService, _SkyTimepickerComponent_changeDetector, _SkyTimepickerComponent_coreAdapter, _SkyTimepickerComponent_overlayService, _SkyTimepickerComponent_closePicker, _SkyTimepickerComponent_openPicker, _SkyTimepickerComponent_createAffixer, _SkyTimepickerComponent_destroyAffixer, _SkyTimepickerComponent_createOverlay, _SkyTimepickerComponent_destroyOverlay, _SkyTimepickerComponent_addKeydownListener, _SkyTimepickerComponent_removePickerEventListeners;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
4
4
  import { SkyAffixAutoFitContext, } from '@skyux/core';
@@ -39,7 +39,7 @@ export class SkyTimepickerComponent {
39
39
  _SkyTimepickerComponent_timepickerUnsubscribe.set(this, new Subject());
40
40
  _SkyTimepickerComponent_ngUnsubscribe.set(this, new Subject());
41
41
  _SkyTimepickerComponent_overlay.set(this, void 0);
42
- _SkyTimepickerComponent_overlayKeydownListner.set(this, void 0);
42
+ _SkyTimepickerComponent_overlayKeydownListener.set(this, void 0);
43
43
  _SkyTimepickerComponent__disabled.set(this, false);
44
44
  _SkyTimepickerComponent__timepickerRef.set(this, void 0);
45
45
  _SkyTimepickerComponent_affixService.set(this, void 0);
@@ -146,7 +146,7 @@ export class SkyTimepickerComponent {
146
146
  set timepickerRef(value) {
147
147
  if (value) {
148
148
  __classPrivateFieldSet(this, _SkyTimepickerComponent__timepickerRef, value, "f");
149
- // Wait for the timepicker component to render before guaging dimensions.
149
+ // Wait for the timepicker component to render before gauging dimensions.
150
150
  setTimeout(() => {
151
151
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_destroyAffixer).call(this);
152
152
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_createAffixer).call(this);
@@ -225,7 +225,7 @@ export class SkyTimepickerComponent {
225
225
  this.localeFormat = data.localeFormat;
226
226
  this.minuteMultiplier = data.minuteMultiplier;
227
227
  }
228
- onCloseButtonCick() {
228
+ onCloseButtonClick() {
229
229
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_closePicker).call(this);
230
230
  }
231
231
  setTime(event) {
@@ -250,7 +250,7 @@ export class SkyTimepickerComponent {
250
250
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_openPicker).call(this);
251
251
  }
252
252
  }
253
- _SkyTimepickerComponent_affixer = new WeakMap(), _SkyTimepickerComponent_timepickerUnsubscribe = new WeakMap(), _SkyTimepickerComponent_ngUnsubscribe = new WeakMap(), _SkyTimepickerComponent_overlay = new WeakMap(), _SkyTimepickerComponent_overlayKeydownListner = new WeakMap(), _SkyTimepickerComponent__disabled = new WeakMap(), _SkyTimepickerComponent__timepickerRef = new WeakMap(), _SkyTimepickerComponent_affixService = new WeakMap(), _SkyTimepickerComponent_changeDetector = new WeakMap(), _SkyTimepickerComponent_coreAdapter = new WeakMap(), _SkyTimepickerComponent_overlayService = new WeakMap(), _SkyTimepickerComponent_instances = new WeakSet(), _SkyTimepickerComponent_closePicker = function _SkyTimepickerComponent_closePicker() {
253
+ _SkyTimepickerComponent_affixer = new WeakMap(), _SkyTimepickerComponent_timepickerUnsubscribe = new WeakMap(), _SkyTimepickerComponent_ngUnsubscribe = new WeakMap(), _SkyTimepickerComponent_overlay = new WeakMap(), _SkyTimepickerComponent_overlayKeydownListener = new WeakMap(), _SkyTimepickerComponent__disabled = new WeakMap(), _SkyTimepickerComponent__timepickerRef = new WeakMap(), _SkyTimepickerComponent_affixService = new WeakMap(), _SkyTimepickerComponent_changeDetector = new WeakMap(), _SkyTimepickerComponent_coreAdapter = new WeakMap(), _SkyTimepickerComponent_overlayService = new WeakMap(), _SkyTimepickerComponent_instances = new WeakSet(), _SkyTimepickerComponent_closePicker = function _SkyTimepickerComponent_closePicker() {
254
254
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_destroyAffixer).call(this);
255
255
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_destroyOverlay).call(this);
256
256
  __classPrivateFieldGet(this, _SkyTimepickerComponent_instances, "m", _SkyTimepickerComponent_removePickerEventListeners).call(this);
@@ -314,7 +314,7 @@ _SkyTimepickerComponent_affixer = new WeakMap(), _SkyTimepickerComponent_timepic
314
314
  __classPrivateFieldSet(this, _SkyTimepickerComponent_overlay, undefined, "f");
315
315
  }
316
316
  }, _SkyTimepickerComponent_addKeydownListener = function _SkyTimepickerComponent_addKeydownListener() {
317
- __classPrivateFieldSet(this, _SkyTimepickerComponent_overlayKeydownListner, fromEvent(window.document, 'keydown')
317
+ __classPrivateFieldSet(this, _SkyTimepickerComponent_overlayKeydownListener, fromEvent(window.document, 'keydown')
318
318
  .pipe(takeUntil(__classPrivateFieldGet(this, _SkyTimepickerComponent_ngUnsubscribe, "f")))
319
319
  .subscribe((event) => {
320
320
  const key = event.key?.toLowerCase();
@@ -331,13 +331,13 @@ _SkyTimepickerComponent_affixer = new WeakMap(), _SkyTimepickerComponent_timepic
331
331
  __classPrivateFieldSet(this, _SkyTimepickerComponent_timepickerUnsubscribe, new Subject(), "f");
332
332
  }
333
333
  /* istanbul ignore next */
334
- __classPrivateFieldGet(this, _SkyTimepickerComponent_overlayKeydownListner, "f")?.unsubscribe();
334
+ __classPrivateFieldGet(this, _SkyTimepickerComponent_overlayKeydownListener, "f")?.unsubscribe();
335
335
  };
336
336
  SkyTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
337
- SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
337
+ SkyTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyTimepickerComponent, selector: "sky-timepicker", outputs: { selectedTimeChanged: "selectedTimeChanged" }, viewQueries: [{ propertyName: "timepickerRef", first: true, predicate: ["timepickerRef"], descendants: true, read: ElementRef }, { propertyName: "timepickerTemplateRef", first: true, predicate: ["timepickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButtonTemplateRef", first: true, predicate: ["triggerButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonClick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
338
338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTimepickerComponent, decorators: [{
339
339
  type: Component,
340
- args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonCick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"] }]
340
+ args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-timepicker\">\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-timepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? timepickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_timepicker_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"clock-o\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"clock\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #timepickerTemplateRef>\n <div\n class=\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"timepickerId\"\n [class.sky-timepicker-hidden]=\"!isVisible\"\n #timepickerRef\n >\n <div class=\"sky-timepicker-content\">\n <section\n class=\"sky-timepicker-column\"\n [ngClass]=\"{ 'sky-timepicker-24hour': is8601 }\"\n >\n <ol>\n <li *ngFor=\"let hour of hours\">\n <button\n name=\"hour\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedHour === hour }\"\n (click)=\"setTime($event)\"\n >\n {{ hour }}\n </button>\n </li>\n </ol>\n </section>\n <section class=\"sky-timepicker-column\">\n <ol>\n <li *ngFor=\"let minute of minutes\">\n <button\n name=\"minute\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMinute === minute }\"\n (click)=\"setTime($event)\"\n >\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\n </button>\n </li>\n </ol>\n </section>\n <section *ngIf=\"!is8601\" class=\"sky-timepicker-column\">\n <ol>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'AM' }\"\n (click)=\"setTime($event)\"\n >\n AM\n </button>\n </li>\n <li>\n <button\n name=\"meridie\"\n type=\"button\"\n [ngClass]=\"{ 'sky-btn-active': selectedMeridies === 'PM' }\"\n (click)=\"setTime($event)\"\n >\n PM\n </button>\n </li>\n </ol>\n </section>\n </div>\n <div class=\"sky-timepicker-footer\">\n <section class=\"sky-timepicker-column\">\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"onCloseButtonClick()\"\n >\n {{ 'skyux_timepicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-timepicker-container{position:fixed;font-size:15px;padding:5px;background-color:#eeeeef;border-radius:5px}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:1px solid #e2e3e4;flex:1}.sky-timepicker-column{margin:5px}.sky-timepicker-column ol{border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{cursor:pointer}.sky-timepicker-column ol li button:focus{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.sky-timepicker-column ol li button:hover{background-color:#eeeeef}.sky-timepicker-column ol li button:active{background-color:#e2e3e4}.sky-timepicker-column ol li button.sky-btn-active:hover{background-color:#c1e8fb}.sky-timepicker-column ol .sky-btn-active{background-color:#c1e8fb;box-shadow:inset 0 0 0 2px #00b4f1;border-radius:3px}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex}.sky-timepicker-content button{background-color:#fff;border-width:0;padding:5px 15px;width:100%;height:100%}.sky-timepicker-footer{margin:0;padding:0 5px}.sky-timepicker-footer .sky-timepicker-column{margin-left:0;margin-right:0;width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}.sky-theme-modern .sky-timepicker-container{background-color:#fff;border:solid 1px #cdcfd2;border-radius:6px;font-size:16px}.sky-theme-modern .sky-timepicker-container:focus-within{border:solid 2px #1870B8;padding:4px}.sky-theme-modern .sky-timepicker-container:last-child ol li{border-bottom:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-default{border-width:1px;border-color:transparent;padding:4px 6px;outline:none}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover:not(.sky-btn-active){background-color:transparent}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol .sky-btn-active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:hover{box-shadow:inset 0 0 0 1px #00b4f1;border-radius:6px}.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:active,.sky-theme-modern .sky-timepicker-container .sky-timepicker-column ol button:focus{outline:none;border-radius:6px;box-shadow:inset 0 0 0 2px #1870b8}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-container:not(:focus-within){border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol{border-color:#686c73}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol button{background-color:transparent;color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-timepicker-column ol .sky-btn-active{background-color:#009cd1}\n"] }]
341
341
  }], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{
342
342
  type: Optional
343
343
  }] }, { type: i3.SkyThemeService, decorators: [{
@@ -372,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
372
372
  static: true,
373
373
  }]
374
374
  }] } });
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBR1osUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsc0JBQXNCLEdBTXZCLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUkzQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyxzQkFBc0I7SUF1TWpDLFlBQ0UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsV0FBa0MsRUFDbEMsY0FBaUMsRUFDZCxtQkFBNEMsRUFDbkQsUUFBMEI7UUFEbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF5Qjs7UUEzTWpFOztXQUVHO1FBRUksd0JBQW1CLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBaUd6RyxlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU5QixVQUFLLEdBQWtCLEVBQUUsQ0FB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QUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfSBmcm9tICcuL3RpbWVwaWNrZXIuaW50ZXJmYWNlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFNLWSBVWC10aGVtZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBIVE1MIGBpbnB1dGAgZWxlbWVudCB3aXRoIGB0eXBlPVwidGltZVwiYC5cbiAqIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZVxuICogc3BlY2lmaWVkIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGBpbnB1dGBcbiAqIHdpdGggdGhlIGBza3lUaW1lcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRpbWVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB2YWx1ZSBpbiB0aGUgdGltZXBpY2tlciBpbnB1dCBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZFRpbWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4oKTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSG91cihzZXRIb3VyOiBudW1iZXIpIHtcbiAgICBsZXQgaG91ck9mZnNldCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyAmJiBzZXRIb3VyID09PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IC0xMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyAmJiBzZXRIb3VyICE9PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5pczg2MDEpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgIH1cbiAgICBjb25zdCBob3VyID0gbW9tZW50KHsgaG91cjogc2V0SG91ciB9KS5hZGQoaG91ck9mZnNldCwgJ2hvdXJzJykuaG91cigpO1xuXG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IGhvdXIsXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnbWludXRlJykgKyAwLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIb3VyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ2gnKSwgMCkgfHwgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSArIDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZE1lcmlkaWVzKG1lcmlkaWVzOiBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIGlmIChtZXJpZGllcy50cmltKCkgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5hZGQoMTIsICdob3VycycpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1lcmlkaWVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGltZSkge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWludXRlKG1pbnV0ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnaG91cicpICsgMCxcbiAgICAgIG1pbnV0ZTogbWludXRlLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRNaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCkgKyAwO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFRpbWUobmV3VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5ld1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3VGltZS5sb2NhbCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbmV3VGltZS5pc284NjAxO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVGltZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICBob3VyOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCksXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLm1pbnV0ZSgpLFxuICAgICAgbWVyaWRpZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyksXG4gICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgIGlzbzg2MDE6IHRoaXMuYWN0aXZlVGltZSxcbiAgICAgIGxvY2FsOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQodGhpcy5sb2NhbGVGb3JtYXQpLFxuICAgICAgY3VzdG9tRm9ybWF0OlxuICAgICAgICB0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgPyB0aGlzLnJldHVybkZvcm1hdFxuICAgICAgICAgIDogdGhpcy5sb2NhbGVGb3JtYXQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aW1lO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBtaW51dGVNdWx0aXBsaWVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0aW1lRm9ybWF0ID0gJ2hoJztcblxuICBwdWJsaWMgdGltZXBpY2tlcklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCB0aW1lcGlja2VyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGltZXBpY2tlclJlZiA9IHZhbHVlO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgdGltZXBpY2tlciBjb21wb25lbnQgdG8gcmVuZGVyIGJlZm9yZSBndWFnaW5nIGRpbWVuc2lvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnRpbWVwaWNrZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuI2NvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICAgICAgICAgICAgdGhpcy50aW1lcGlja2VyUmVmLFxuICAgICAgICAgICAgICAnLnNreS10aW1lcGlja2VyLWNvbnRlbnQnLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0aW1lcGlja2VyUmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHVibGljIHRpbWVwaWNrZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeGVyOiBTa3lBZmZpeGVyIHwgdW5kZWZpbmVkO1xuXG4gICN0aW1lcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlIHwgdW5kZWZpbmVkO1xuXG4gICNvdmVybGF5S2V5ZG93bkxpc3RuZXI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI190aW1lcGlja2VyUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTZXJ2aWNlPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNhZmZpeFNlcnZpY2UgPSBhZmZpeFNlcnZpY2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb3JlQWRhcHRlciA9IGNvcmVBZGFwdGVyO1xuICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlID0gb3ZlcmxheVNlcnZpY2U7XG5cbiAgICBjb25zdCB1bmlxdWVJZCA9IG5leHRJZCsrO1xuICAgIHRoaXMudGltZXBpY2tlcklkID0gYHNreS10aW1lcGlja2VyLSR7dW5pcXVlSWR9YDtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25JZCA9IGBza3ktdGltZXBpY2tlci1idXR0b24tJHt1bmlxdWVJZH1gO1xuXG4gICAgLy8gVXBkYXRlIGljb25zIHdoZW4gdGhlbWUgY2hhbmdlcy5cbiAgICB0aGVtZVN2Yz8uc2V0dGluZ3NDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgdGhpcy4jYWRkS2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgaCA9IDEyO1xuICAgIGxldCBtID0gMTI7XG4gICAgbGV0IG1pbnV0ZU11bHRpcGxpZXIgPSA1O1xuICAgIGxldCBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcbiAgICBpZiAoZm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICBoID0gMTI7XG4gICAgICBtID0gMTI7XG4gICAgICBtaW51dGVNdWx0aXBsaWVyID0gNTtcbiAgICAgIGxvY2FsZUZvcm1hdCA9ICdoOm1tIEEnO1xuICAgICAgdGhpcy5pczg2MDEgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gJ0hIJykge1xuICAgICAgaCA9IDI0O1xuICAgICAgbSA9IDQ7XG4gICAgICBtaW51dGVNdWx0aXBsaWVyID0gMTU7XG4gICAgICBsb2NhbGVGb3JtYXQgPSAnSEg6bW0nO1xuICAgICAgdGhpcy5pczg2MDEgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGE6IHtcbiAgICAgIGhvdXJzOiBudW1iZXJbXTtcbiAgICAgIG1pbnV0ZXM6IG51bWJlcltdO1xuICAgICAgbG9jYWxlRm9ybWF0OiBzdHJpbmc7XG4gICAgICBtaW51dGVNdWx0aXBsaWVyOiBudW1iZXI7XG4gICAgfSA9IHtcbiAgICAgIC8vIENyZWF0ZSBhIHNwYXJzZSBhcnJheSB3aXRoIGEgbGVuZ3RoIGVxdWFsIHRvIHRoZSBob3VyLlxuICAgICAgaG91cnM6IEFycmF5KC4uLkFycmF5KGgpKS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2hoJykge1xuICAgICAgICAgIHJldHVybiArK2k7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ0hIJykge1xuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pLFxuICAgICAgLy8gQ3JlYXRlIGEgc3BhcnNlIGFycmF5IHdpdGggYSBsZW5ndGggZXF1YWwgdG8gdGhlIG1pbnV0ZS5cbiAgICAgIG1pbnV0ZXM6IEFycmF5KC4uLkFycmF5KG0pKS5tYXAoZnVuY3Rpb24gKF8sIGkpIHtcbiAgICAgICAgcmV0dXJuIGkgKiBtaW51dGVNdWx0aXBsaWVyO1xuICAgICAgfSksXG4gICAgICBsb2NhbGVGb3JtYXQ6IGxvY2FsZUZvcm1hdCxcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXI6IG1pbnV0ZU11bHRpcGxpZXIsXG4gICAgfTtcblxuICAgIHRoaXMuaG91cnMgPSBkYXRhLmhvdXJzO1xuICAgIHRoaXMubWludXRlcyA9IGRhdGEubWludXRlcztcbiAgICB0aGlzLmxvY2FsZUZvcm1hdCA9IGRhdGEubG9jYWxlRm9ybWF0O1xuICAgIHRoaXMubWludXRlTXVsdGlwbGllciA9IGRhdGEubWludXRlTXVsdGlwbGllcjtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlQnV0dG9uQ2ljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyUmVmICYmIHRoaXMudHJpZ2dlckJ1dHRvblJlZikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMudGltZXBpY2tlclJlZik7XG5cbiAgICAgIC8vIEhpZGUgdGltZXBpY2tlciB3aGVuIHRyaWdnZXIgYnV0dG9uIGlzIHNjcm9sbGVkIG9mZiBzY3JlZW4uXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhZGRLZXlkb3duTGlzdGVuZXIoKTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMuI292ZXJsYXkgPSBvdmVybGF5O1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy4jb3ZlcmxheSk7XG4gICAgICB0aGlzLiNvdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRLZXlkb3duTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jb3ZlcmxheUtleWRvd25MaXN0bmVyID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgd2luZG93LmRvY3VtZW50LFxuICAgICAgJ2tleWRvd24nXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLiNvdmVybGF5S2V5ZG93bkxpc3RuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFNlcnZpY2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0blwiPlxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktaW5wdXQtZ3JvdXAtdGltZXBpY2tlci1idG5cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzT3BlbiA/IHRpbWVwaWNrZXJJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCInc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgID5cbiAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJjbG9jay1vXCIgc2l6ZT1cImxnXCI+PC9za3ktaWNvbj5cbiAgICAgIDxza3ktaWNvblxuICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgaWNvbj1cImNsb2NrXCJcbiAgICAgICAgc2l6ZT1cImxnXCJcbiAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICA+PC9za3ktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpbWVwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGFpbmVyIHNreS1zaGFkb3cgc2t5LWJveCBza3ktZWxldmF0aW9uLTRcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgIFthdHRyLmlkXT1cInRpbWVwaWNrZXJJZFwiXG4gICAgW2NsYXNzLnNreS10aW1lcGlja2VyLWhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjdGltZXBpY2tlclJlZlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbnRlbnRcIj5cbiAgICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LXRpbWVwaWNrZXItMjRob3VyJzogaXM4NjAxIH1cIlxuICAgICAgPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJob3VyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRIb3VyID09PSBob3VyIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW51dGVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1pbnV0ZSA9PT0gbWludXRlIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJzAwJy5zdWJzdHJpbmcoMCwgMiAtIG1pbnV0ZS50b1N0cmluZygpLmxlbmd0aCkgKyBtaW51dGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpczg2MDFcIiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtblwiPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBuYW1lPVwibWVyaWRpZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBTVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtZXJpZGllXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFBNXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbG9zZUJ1dHRvbkNpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnc2t5dXhfdGltZXBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBR1osUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsc0JBQXNCLEdBTXZCLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUkzQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyxzQkFBc0I7SUF1TWpDLFlBQ0UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsV0FBa0MsRUFDbEMsY0FBaUMsRUFDZCxtQkFBNEMsRUFDbkQsUUFBMEI7UUFEbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF5Qjs7UUEzTWpFOztXQUVHO1FBRUksd0JBQW1CLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBaUd6RyxlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU5QixVQUFLLEdBQWtCLEVBQUUsQ0FB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QUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfSBmcm9tICcuL3RpbWVwaWNrZXIuaW50ZXJmYWNlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFNLWSBVWC10aGVtZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBIVE1MIGBpbnB1dGAgZWxlbWVudCB3aXRoIGB0eXBlPVwidGltZVwiYC5cbiAqIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZVxuICogc3BlY2lmaWVkIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGBpbnB1dGBcbiAqIHdpdGggdGhlIGBza3lUaW1lcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRpbWVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB2YWx1ZSBpbiB0aGUgdGltZXBpY2tlciBpbnB1dCBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZFRpbWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4oKTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSG91cihzZXRIb3VyOiBudW1iZXIpIHtcbiAgICBsZXQgaG91ck9mZnNldCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyAmJiBzZXRIb3VyID09PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IC0xMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyAmJiBzZXRIb3VyICE9PSAxMikge1xuICAgICAgaG91ck9mZnNldCA9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5pczg2MDEpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgIH1cbiAgICBjb25zdCBob3VyID0gbW9tZW50KHsgaG91cjogc2V0SG91ciB9KS5hZGQoaG91ck9mZnNldCwgJ2hvdXJzJykuaG91cigpO1xuXG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IGhvdXIsXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnbWludXRlJykgKyAwLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIb3VyKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ2gnKSwgMCkgfHwgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSArIDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZE1lcmlkaWVzKG1lcmlkaWVzOiBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIGlmIChtZXJpZGllcy50cmltKCkgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5hZGQoMTIsICdob3VycycpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1lcmlkaWVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGltZSkge1xuICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWludXRlKG1pbnV0ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmdldCgnaG91cicpICsgMCxcbiAgICAgIG1pbnV0ZTogbWludXRlLFxuICAgIH0pLnRvRGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRNaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCkgKyAwO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFRpbWUobmV3VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5ld1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3VGltZS5sb2NhbCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbmV3VGltZS5pc284NjAxO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVGltZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICBob3VyOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCksXG4gICAgICBtaW51dGU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLm1pbnV0ZSgpLFxuICAgICAgbWVyaWRpZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyksXG4gICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgIGlzbzg2MDE6IHRoaXMuYWN0aXZlVGltZSxcbiAgICAgIGxvY2FsOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQodGhpcy5sb2NhbGVGb3JtYXQpLFxuICAgICAgY3VzdG9tRm9ybWF0OlxuICAgICAgICB0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgPyB0aGlzLnJldHVybkZvcm1hdFxuICAgICAgICAgIDogdGhpcy5sb2NhbGVGb3JtYXQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aW1lO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gIHB1YmxpYyBtaW51dGVNdWx0aXBsaWVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0aW1lRm9ybWF0ID0gJ2hoJztcblxuICBwdWJsaWMgdGltZXBpY2tlcklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCB0aW1lcGlja2VyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGltZXBpY2tlclJlZiA9IHZhbHVlO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgdGltZXBpY2tlciBjb21wb25lbnQgdG8gcmVuZGVyIGJlZm9yZSBnYXVnaW5nIGRpbWVuc2lvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnRpbWVwaWNrZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuI2NvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICAgICAgICAgICAgdGhpcy50aW1lcGlja2VyUmVmLFxuICAgICAgICAgICAgICAnLnNreS10aW1lcGlja2VyLWNvbnRlbnQnLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0aW1lcGlja2VyUmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHVibGljIHRpbWVwaWNrZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeGVyOiBTa3lBZmZpeGVyIHwgdW5kZWZpbmVkO1xuXG4gICN0aW1lcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlIHwgdW5kZWZpbmVkO1xuXG4gICNvdmVybGF5S2V5ZG93bkxpc3RlbmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfdGltZXBpY2tlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAjb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U2VydmljZT86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jYWZmaXhTZXJ2aWNlID0gYWZmaXhTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiNvdmVybGF5U2VydmljZSA9IG92ZXJsYXlTZXJ2aWNlO1xuXG4gICAgY29uc3QgdW5pcXVlSWQgPSBuZXh0SWQrKztcbiAgICB0aGlzLnRpbWVwaWNrZXJJZCA9IGBza3ktdGltZXBpY2tlci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LXRpbWVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgIHRoaXMuI2FkZEtleWRvd25MaXN0ZW5lcigpO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZSAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZS5wb3B1bGF0ZSh7XG4gICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgYnV0dG9uc1RlbXBsYXRlOiB0aGlzLnRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybWF0KGZvcm1hdDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGggPSAxMjtcbiAgICBsZXQgbSA9IDEyO1xuICAgIGxldCBtaW51dGVNdWx0aXBsaWVyID0gNTtcbiAgICBsZXQgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ2hoJykge1xuICAgICAgaCA9IDEyO1xuICAgICAgbSA9IDEyO1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgICBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcbiAgICAgIHRoaXMuaXM4NjAxID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgIGggPSAyNDtcbiAgICAgIG0gPSA0O1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDE1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ0hIOm1tJztcbiAgICAgIHRoaXMuaXM4NjAxID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhOiB7XG4gICAgICBob3VyczogbnVtYmVyW107XG4gICAgICBtaW51dGVzOiBudW1iZXJbXTtcbiAgICAgIGxvY2FsZUZvcm1hdDogc3RyaW5nO1xuICAgICAgbWludXRlTXVsdGlwbGllcjogbnVtYmVyO1xuICAgIH0gPSB7XG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgaG91ci5cbiAgICAgIGhvdXJzOiBBcnJheSguLi5BcnJheShoKSkubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgICAgICByZXR1cm4gKytpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KSxcbiAgICAgIC8vIENyZWF0ZSBhIHNwYXJzZSBhcnJheSB3aXRoIGEgbGVuZ3RoIGVxdWFsIHRvIHRoZSBtaW51dGUuXG4gICAgICBtaW51dGVzOiBBcnJheSguLi5BcnJheShtKSkubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBpICogbWludXRlTXVsdGlwbGllcjtcbiAgICAgIH0pLFxuICAgICAgbG9jYWxlRm9ybWF0OiBsb2NhbGVGb3JtYXQsXG4gICAgICBtaW51dGVNdWx0aXBsaWVyOiBtaW51dGVNdWx0aXBsaWVyLFxuICAgIH07XG5cbiAgICB0aGlzLmhvdXJzID0gZGF0YS5ob3VycztcbiAgICB0aGlzLm1pbnV0ZXMgPSBkYXRhLm1pbnV0ZXM7XG4gICAgdGhpcy5sb2NhbGVGb3JtYXQgPSBkYXRhLmxvY2FsZUZvcm1hdDtcbiAgICB0aGlzLm1pbnV0ZU11bHRpcGxpZXIgPSBkYXRhLm1pbnV0ZU11bHRpcGxpZXI7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VGltZShldmVudDogYW55KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodHlwZW9mIGV2ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT09ICdob3VyJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWludXRlJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGUgPSBwYXJzZUludChldmVudC50YXJnZXQuaW5uZXJIVE1MLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT09ICdtZXJpZGllJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZXJpZGllcyA9IGV2ZW50LnRhcmdldC5pbm5lckhUTUw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25UcmlnZ2VyQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy4jb3BlblBpY2tlcigpO1xuICB9XG5cbiAgI2Nsb3NlUGlja2VyKCkge1xuICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICAjb3BlblBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI2NyZWF0ZU92ZXJsYXkoKTtcblxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJSZWYgJiYgdGhpcy50cmlnZ2VyQnV0dG9uUmVmKSB7XG4gICAgICBjb25zdCBhZmZpeGVyID0gdGhpcy4jYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy50aW1lcGlja2VyUmVmKTtcblxuICAgICAgLy8gSGlkZSB0aW1lcGlja2VyIHdoZW4gdHJpZ2dlciBidXR0b24gaXMgc2Nyb2xsZWQgb2ZmIHNjcmVlbi5cbiAgICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdyaWdodCcsXG4gICAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgICBwbGFjZW1lbnQ6ICdiZWxvdycsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jYWZmaXhlciA9IGFmZml4ZXI7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNhZmZpeGVyKSB7XG4gICAgICB0aGlzLiNhZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuI2FmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXBpY2tlclRlbXBsYXRlUmVmKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gdGhpcy4jb3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBvdmVybGF5LmJhY2tkcm9wQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FkZEtleWRvd25MaXN0ZW5lcigpO1xuXG4gICAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMudGltZXBpY2tlclRlbXBsYXRlUmVmKTtcblxuICAgICAgdGhpcy4jb3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNvdmVybGF5KSB7XG4gICAgICB0aGlzLiNvdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZEtleWRvd25MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLiNvdmVybGF5S2V5ZG93bkxpc3RlbmVyID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgd2luZG93LmRvY3VtZW50LFxuICAgICAgJ2tleWRvd24nXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLiNvdmVybGF5S2V5ZG93bkxpc3RlbmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTZXJ2aWNlXCI+XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlUmVmPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWlucHV0LWdyb3VwLXRpbWVwaWNrZXItYnRuXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyB0aW1lcGlja2VySWQgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICBbYXR0ci5pZF09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgICAgW2F0dHIudGl0bGVdPVwiJ3NreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cIm9uVHJpZ2dlckJ1dHRvbkNsaWNrKClcIlxuICAgICAgI3RyaWdnZXJCdXR0b25SZWZcbiAgICA+XG4gICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiY2xvY2stb1wiIHNpemU9XCJsZ1wiPjwvc2t5LWljb24+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgIGljb249XCJjbG9ja1wiXG4gICAgICAgIHNpemU9XCJsZ1wiXG4gICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgPjwvc2t5LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0aW1lcGlja2VyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbnRhaW5lciBza3ktc2hhZG93IHNreS1ib3ggc2t5LWVsZXZhdGlvbi00XCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICBbYXR0ci5pZF09XCJ0aW1lcGlja2VySWRcIlxuICAgIFtjbGFzcy5za3ktdGltZXBpY2tlci1oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gICAgI3RpbWVwaWNrZXJSZWZcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb250ZW50XCI+XG4gICAgICA8c2VjdGlvblxuICAgICAgICBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS10aW1lcGlja2VyLTI0aG91cic6IGlzODYwMSB9XCJcbiAgICAgID5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBuYW1lPVwiaG91clwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkSG91ciA9PT0gaG91ciB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGhvdXIgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtblwiPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBuYW1lPVwibWludXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNaW51dGUgPT09IG1pbnV0ZSB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICcwMCcuc3Vic3RyaW5nKDAsIDIgLSBtaW51dGUudG9TdHJpbmcoKS5sZW5ndGgpICsgbWludXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhaXM4NjAxXCIgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnQU0nIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQU1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBuYW1lPVwibWVyaWRpZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWVyaWRpZXMgPT09ICdQTScgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQTVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItZm9vdGVyXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VCdXR0b25DbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdza3l1eF90aW1lcGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -57,7 +57,7 @@ export class SkyTimepickerInputDirective {
57
57
  }
58
58
  // TODO: In a future breaking change - make this more specific than "string"
59
59
  /**
60
- * Specifies the 12-hour `hh` or 24-hour `HH` time format for the input.
60
+ * The 12-hour `hh` or 24-hour `HH` time format for the input.
61
61
  * @default "hh"
62
62
  */
63
63
  set timeFormat(value) {
@@ -67,7 +67,7 @@ export class SkyTimepickerInputDirective {
67
67
  return __classPrivateFieldGet(this, _SkyTimepickerInputDirective__timeFormat, "f");
68
68
  }
69
69
  /**
70
- * Indicates whether to disable the timepicker.
70
+ * Whether to disable the timepicker.
71
71
  * @default false
72
72
  */
73
73
  get disabled() {
@@ -232,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
232
232
  type: HostListener,
233
233
  args: ['blur']
234
234
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBS0wsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFNNUIsTUFBTSw2QkFBNkIsR0FBRztJQUNwQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7SUFDMUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQU1GLE1BQU0sT0FBTywyQkFBMkI7SUE0RnRDLFlBQ0UsUUFBbUIsRUFDbkIsS0FBaUIsRUFDakIsZ0JBQXdDLEVBQ3hDLGNBQWlDOztRQXRGbkMsbURBQWUsSUFBSSxFQUFDO1FBdUVwQix1REFBc0M7UUFFdEMsaURBQWEsS0FBSyxFQUFDO1FBQ25CLDJEQUFrRDtRQUNsRCxtRUFBeUQ7UUFFekQsd0RBQXFCO1FBQ3JCLHFEQUFtQjtRQUNuQixnRUFBMEM7UUFDMUMsOERBQW1DO1FBeUtuQywwQkFBMEI7UUFDMUIsdUlBQXVJO1FBQ3ZJLGlEQUFhLENBQUMsQ0FBTSxFQUFRLEVBQUUsR0FBRSxDQUFDLEVBQUM7UUFDbEMsMEJBQTBCO1FBQzFCLGdFQUFnRTtRQUNoRSxrREFBYyxHQUFTLEVBQUUsR0FBRSxDQUFDLEVBQUM7UUFDN0IsMEJBQTBCO1FBQzFCLGdFQUFnRTtRQUNoRSx3REFBb0IsR0FBUyxFQUFFLEdBQUUsQ0FBQyxFQUFDO1FBektqQyx1QkFBQSxJQUFJLHlDQUFhLFFBQVEsTUFBQSxDQUFDO1FBQzFCLHVCQUFBLElBQUksc0NBQVUsS0FBSyxNQUFBLENBQUM7UUFDcEIsdUJBQUEsSUFBSSxpREFBcUIsZ0JBQWdCLE1BQUEsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLCtDQUFtQixjQUFjLE1BQUEsQ0FBQztJQUN4QyxDQUFDO0lBMUZELHFIQUFxSDtJQUNySDs7Ozs7T0FLRztJQUNILElBQ1csa0JBQWtCO1FBQzNCLE9BQU8sdUJBQUEsSUFBSSx3REFBcUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0IsQ0FBQyxLQUF5QztRQUNyRSx1QkFBQSxJQUFJLG9EQUF3QixLQUFLLE1BQUEsQ0FBQztRQUNsQyx1QkFBQSxJQUFJLGtHQUF1QixNQUEzQixJQUFJLENBQXlCLENBQUM7SUFDaEMsQ0FBQztJQUVELDRFQUE0RTtJQUM1RTs7O09BR0c7SUFDSCxJQUNXLFVBQVUsQ0FBQyxLQUF5QjtRQUM3Qyx1QkFBQSxJQUFJLDRDQUFnQixLQUFLLElBQUksSUFBSSxNQUFBLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLHVCQUFBLElBQUksZ0RBQWEsQ0FBQztJQUMzQixDQUFDO0lBU0Q7OztPQUdHO0lBQ0gsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sdUJBQUEsSUFBSSw4Q0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxLQUEwQjtRQUM1Qyx1QkFBQSxJQUFJLDBDQUFjLEtBQUssSUFBSSxLQUFLLE1BQUEsQ0FBQztRQUVqQyx1QkFBQSxJQUFJLGtHQUF1QixNQUEzQixJQUFJLENBQXlCLENBQUM7UUFFOUIsdUJBQUEsSUFBSSw2Q0FBVSxDQUFDLFdBQVcsQ0FBQyx1QkFBQSxJQUFJLDBDQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBdUNNLFFBQVE7UUFDYix1QkFBQSxJQUFJLDZDQUFVLENBQUMsUUFBUSxDQUFDLHVCQUFBLElBQUksMENBQU8sQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMseUJBQXlCO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQ3BELENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pCLHVCQUFBLElBQUksK0NBQVksTUFBaEIsSUFBSSxDQUFjLENBQUM7WUFDckIsQ0FBQyxDQUNGLENBQUM7UUFFSiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLHVCQUFBLElBQUksMENBQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pELHVCQUFBLElBQUkscURBQWtCO2lCQUNuQixTQUFTLENBQUMsc0NBQXNDLENBQUM7aUJBQ2pELFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUMzQix1QkFBQSxJQUFJLDZDQUFVLENBQUMsWUFBWSxDQUN6Qix1QkFBQSxJQUFJLDBDQUFPLENBQUMsYUFBYSxFQUN6QixZQUFZLEVBQ1osS0FBSyxDQUNOLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QiwwRUFBMEU7UUFDMUUsMEJBQTBCO1FBQzFCLElBQUksdUJBQUEsSUFBSSw0Q0FBUyxJQUFJLHVCQUFBLElBQUksNENBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDekMsdUJBQUEsSUFBSSw0Q0FBUyxDQUFDLFFBQVEsQ0FBQyx1QkFBQSxJQUFJLDJGQUFZLEVBQUU7Z0JBQ3ZDLFNBQVMsRUFBRSxLQUFLO2FBQ2pCLENBQUMsQ0FBQztZQUNILHVCQUFBLElBQUksbURBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7WUFDbEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUdNLFFBQVEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsMEJBQTBCO0lBRW5CLE1BQU07UUFDWCx1QkFBQSxJQUFJLCtDQUFZLE1BQWhCLElBQUksQ0FBYyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUF1QjtRQUM3Qyx1QkFBQSxJQUFJLDBDQUFjLEVBQUUsTUFBQSxDQUFDO0lBQ3ZCLENBQUM7SUFDTSxpQkFBaUIsQ0FBQyxFQUFhO1FBQ3BDLHVCQUFBLElBQUksMkNBQWUsRUFBRSxNQUFBLENBQUM7SUFDeEIsQ0FBQztJQUNNLHlCQUF5QixDQUFDLEVBQWM7UUFDN0MsdUJBQUEsSUFBSSxpREFBcUIsRUFBRSxNQUFBLENBQUM7SUFDOUIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBVTtRQUMxQix1QkFBQSxJQUFJLDBDQUFlLHVCQUFBLElBQUksc0ZBQVcsTUFBZixJQUFJLEVBQVksS0FBSyxDQUFDLG1EQUFBLENBQUM7SUFDNUMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLENBQUMsdUJBQUEsSUFBSSw0Q0FBUyxFQUFFO1lBQ2xCLHVCQUFBLElBQUksd0NBQVksT0FBTyxNQUFBLENBQUM7U0FDekI7UUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxjQUFjLEVBQUU7WUFDbEMsT0FBTztnQkFDTCxPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2lCQUN2QjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O0lBdElDLE9BQU8sdUJBQUEsSUFBSSxnREFBYSxDQUFDO0FBQzNCLENBQUMscUdBRWUsS0FBMEM7SUFDeEQsSUFBSSxLQUFLLEtBQUssdUJBQUEsSUFBSSxnREFBYSxFQUFFO1FBQy9CLHVCQUFBLElBQUksNENBQWdCLEtBQUssTUFBQSxDQUFDO1FBQzFCLHVCQUFBLElBQUksa0dBQXVCLE1BQTNCLElBQUksQ0FBeUIsQ0FBQztRQUM5Qix1QkFBQSxJQUFJLDBGQUFlLE1BQW5CLElBQUksRUFBZ0IsS0FBSyxDQUFDLENBQUM7UUFDM0IsdUJBQUEsSUFBSSxxREFBa0IsTUFBdEIsSUFBSSxDQUFvQixDQUFDO1FBQ3pCLHVCQUFBLElBQUksOENBQVcsTUFBZixJQUFJLEVBQVksS0FBSyxDQUFDLENBQUM7S0FDeEI7QUFDSCxDQUFDLG1HQTZIYyxLQUEwQztJQUN2RCxJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDeEIsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCwwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEtBQUssY0FBYyxFQUFFO1lBQzdCLGNBQWMsR0FBRyxNQUFNLENBQUM7U0FDekI7S0FDRjtJQUVELHVCQUFBLElBQUksNkNBQVUsQ0FBQyxXQUFXLENBQ3hCLHVCQUFBLElBQUksMENBQU8sQ0FBQyxhQUFhLEVBQ3pCLE9BQU8sRUFDUCxjQUFjLENBQ2YsQ0FBQztBQUNKLENBQUMsMkZBRVUsSUFBUztJQUNsQixJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtRQUN2RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5FLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztTQUNuQztRQUVELE1BQU0sVUFBVSxHQUE0QjtZQUMxQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDeEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzVDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDaEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzdDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQztLQUNuQjtBQUNILENBQUM7SUFHQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFakQsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksS0FBSyx1QkFBQSxJQUFJLDJGQUFZLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyx1QkFBQSxJQUFJLDJGQUFZLENBQUM7U0FDekQ7S0FDRjtBQUNILENBQUM7eUhBalFVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLDhQQUYzQixDQUFDLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDOzRGQUV6RCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsd0JBQXdCLENBQUM7aUJBQ3JFOzhMQXFCWSxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBZ0JLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBY0MsWUFBWTtzQkFEbEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQW9HQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU8zQixNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfSBmcm9tICcuL3RpbWVwaWNrZXIuaW50ZXJmYWNlJztcblxuY29uc3QgU0tZX1RJTUVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5VGltZXBpY2tlcklucHV0XScsXG4gIHByb3ZpZGVyczogW1NLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SLCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBBZnRlckNvbnRlbnRJbml0XG57XG4gIHB1YmxpYyBwaWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNfdGltZUZvcm1hdCA9ICdoaCc7XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gZ3JhYiB0aGUgcGFyZW50IGNvbXBvbmVudCB0aHJvdWdoIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGFuZCByZW1vdmUgdGhpcyBzZXR0ZXIuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSB0aW1lcGlja2VyIGlucHV0IGZpZWxkIGFuZCBwaWNrZXIuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIGFuIGBpbnB1dGAgZWxlbWVudCxcbiAgICogYW5kIHdyYXAgdGhlIGlucHV0IGluIGEgYHNreS10aW1lcGlja2VyYCBjb21wb25lbnQuXG4gICAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBpbnN0YW5jZSBvZiB0aGUgYHNreS10aW1lcGlja2VyYC5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNreVRpbWVwaWNrZXJJbnB1dCgpOiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NreVRpbWVwaWNrZXJJbnB1dDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2t5VGltZXBpY2tlcklucHV0KHZhbHVlOiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3NreVRpbWVwaWNrZXJJbnB1dCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpO1xuICB9XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gbWFrZSB0aGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBcInN0cmluZ1wiXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIDEyLWhvdXIgYGhoYCBvciAyNC1ob3VyIGBISGAgdGltZSBmb3JtYXQgZm9yIHRoZSBpbnB1dC5cbiAgICogQGRlZmF1bHQgXCJoaFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRpbWVGb3JtYXQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190aW1lRm9ybWF0ID0gdmFsdWUgfHwgJ2hoJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGltZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdGltZUZvcm1hdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBjdXN0b20gdGltZSBmb3JtYXQuIEZvciBleGFtcGxlcyxcbiAgICogc2VlIHRoZSBbbW9tZW50LmpzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvKSBkb2NzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSB0aW1lcGlja2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlIHx8IGZhbHNlO1xuXG4gICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgI21vZGVsVmFsdWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbW9kZWxWYWx1ZTtcbiAgfVxuXG4gIHNldCAjbW9kZWxWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19tb2RlbFZhbHVlKSB7XG4gICAgICB0aGlzLiNfbW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG4gICAgICB0aGlzLiNzZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI19vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgI2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfbW9kZWxWYWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQ7XG4gICNfc2t5VGltZXBpY2tlcklucHV0OiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG4gICNyZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiNlbFJlZiA9IGVsUmVmO1xuICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UgPSByZXNvdXJjZXNTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCwgJ3NreS1mb3JtLWNvbnRyb2wnKTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWRTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQ/LnNlbGVjdGVkVGltZUNoYW5nZWQuc3Vic2NyaWJlKFxuICAgICAgICAobmV3VGltZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1RpbWUpO1xuICAgICAgICAgIHRoaXMuI19vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpKSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X3RpbWVwaWNrZXJfaW5wdXRfZGVmYXVsdF9sYWJlbCcpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIFdhdGNoIGZvciB0aGUgY29udHJvbCB0byBiZSBhZGRlZCBhbmQgaW5pdGlhbGl6ZSB0aGUgdmFsdWUgaW1tZWRpYXRlbHkuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jY29udHJvbCAmJiB0aGlzLiNjb250cm9sLnBhcmVudCkge1xuICAgICAgdGhpcy4jY29udHJvbC5zZXRWYWx1ZSh0aGlzLiNtb2RlbFZhbHVlLCB7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnBpY2tlckNoYW5nZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQpIHtcbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNldEZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQucmV0dXJuRm9ybWF0ID0gdGhpcy5yZXR1cm5Gb3JtYXQ7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25CbHVyKCkge1xuICAgIHRoaXMuI19vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy4jX29uQ2hhbmdlID0gZm47XG4gIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25Ub3VjaGVkID0gZm47XG4gIH1cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfdmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy4jbW9kZWxWYWx1ZSA9IHRoaXMuI2Zvcm1hdHRlcih2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29udHJvbCkge1xuICAgICAgdGhpcy4jY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHZhbHVlLmxvY2FsID09PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2t5VGltZToge1xuICAgICAgICAgIGludmFsaWQ6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgI3NldElucHV0VmFsdWUodmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBtb21lbnQodmFsdWUpLmZvcm1hdCh2YWx1ZS5jdXN0b21Gb3JtYXQpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChvdXRwdXQgIT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIGZvcm1hdHRlZFZhbHVlID0gb3V0cHV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZVxuICAgICk7XG4gIH1cblxuICAjZm9ybWF0dGVyKHRpbWU6IGFueSkge1xuICAgIGlmICh0aW1lICYmIHR5cGVvZiB0aW1lICE9PSAnc3RyaW5nJyAmJiAnbG9jYWwnIGluIHRpbWUpIHtcbiAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodGltZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudEZvcm1hdCA9IHRoaXMudGltZUZvcm1hdCA9PT0gJ0hIJyA/ICdIOm1tJyA6ICdoOm1tIEEnO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucmV0dXJuRm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aGlzLnJldHVybkZvcm1hdCA9IGN1cnJlbnRGb3JtYXQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFRpbWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0ID0ge1xuICAgICAgICBob3VyOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuaG91cigpLFxuICAgICAgICBtaW51dGU6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5taW51dGUoKSxcbiAgICAgICAgbWVyaWRpZTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdCgnQScpLFxuICAgICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdCgnWicpLCAxMCksXG4gICAgICAgIGlzbzg2MDE6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS50b0RhdGUoKSxcbiAgICAgICAgbG9jYWw6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoY3VycmVudEZvcm1hdCksXG4gICAgICAgIGN1c3RvbUZvcm1hdDogdGhpcy5yZXR1cm5Gb3JtYXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZvcm1hdFRpbWU7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQpIHtcbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5zZWxlY3RlZFRpbWUgIT09IHRoaXMuI21vZGVsVmFsdWUpIHtcbiAgICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lID0gdGhpcy4jbW9kZWxWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgI19vbkNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNfb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI192YWxpZGF0b3JDaGFuZ2UgPSAoKTogdm9pZCA9PiB7fTtcbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBS0wsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFNNUIsTUFBTSw2QkFBNkIsR0FBRztJQUNwQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7SUFDMUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQU1GLE1BQU0sT0FBTywyQkFBMkI7SUE0RnRDLFlBQ0UsUUFBbUIsRUFDbkIsS0FBaUIsRUFDakIsZ0JBQXdDLEVBQ3hDLGNBQWlDOztRQXRGbkMsbURBQWUsSUFBSSxFQUFDO1FBdUVwQix1REFBc0M7UUFFdEMsaURBQWEsS0FBSyxFQUFDO1FBQ25CLDJEQUFrRDtRQUNsRCxtRUFBeUQ7UUFFekQsd0RBQXFCO1FBQ3JCLHFEQUFtQjtRQUNuQixnRUFBMEM7UUFDMUMsOERBQW1DO1FBeUtuQywwQkFBMEI7UUFDMUIsdUlBQXVJO1FBQ3ZJLGlEQUFhLENBQUMsQ0FBTSxFQUFRLEVBQUUsR0FBRSxDQUFD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QUFFO1lBQzdDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQztLQUNuQjtBQUNILENBQUM7SUFHQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFakQsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksS0FBSyx1QkFBQSxJQUFJLDJGQUFZLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyx1QkFBQSxJQUFJLDJGQUFZLENBQUM7U0FDekQ7S0FDRjtBQUNILENBQUM7eUhBalFVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLDhQQUYzQixDQUFDLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDOzRGQUV6RCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsd0JBQXdCLENBQUM7aUJBQ3JFOzhMQXFCWSxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBZ0JLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBY0MsWUFBWTtzQkFEbEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQW9HQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU8zQixNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfSBmcm9tICcuL3RpbWVwaWNrZXIuaW50ZXJmYWNlJztcblxuY29uc3QgU0tZX1RJTUVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5VGltZXBpY2tlcklucHV0XScsXG4gIHByb3ZpZGVyczogW1NLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SLCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VySW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBBZnRlckNvbnRlbnRJbml0XG57XG4gIHB1YmxpYyBwaWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNfdGltZUZvcm1hdCA9ICdoaCc7XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gZ3JhYiB0aGUgcGFyZW50IGNvbXBvbmVudCB0aHJvdWdoIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGFuZCByZW1vdmUgdGhpcyBzZXR0ZXIuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSB0aW1lcGlja2VyIGlucHV0IGZpZWxkIGFuZCBwaWNrZXIuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIGFuIGBpbnB1dGAgZWxlbWVudCxcbiAgICogYW5kIHdyYXAgdGhlIGlucHV0IGluIGEgYHNreS10aW1lcGlja2VyYCBjb21wb25lbnQuXG4gICAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBpbnN0YW5jZSBvZiB0aGUgYHNreS10aW1lcGlja2VyYC5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNreVRpbWVwaWNrZXJJbnB1dCgpOiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NreVRpbWVwaWNrZXJJbnB1dDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2t5VGltZXBpY2tlcklucHV0KHZhbHVlOiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3NreVRpbWVwaWNrZXJJbnB1dCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpO1xuICB9XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gbWFrZSB0aGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBcInN0cmluZ1wiXG4gIC8qKlxuICAgKiBUaGUgMTItaG91ciBgaGhgIG9yIDI0LWhvdXIgYEhIYCB0aW1lIGZvcm1hdCBmb3IgdGhlIGlucHV0LlxuICAgKiBAZGVmYXVsdCBcImhoXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGltZUZvcm1hdCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RpbWVGb3JtYXQgPSB2YWx1ZSB8fCAnaGgnO1xuICB9XG5cbiAgcHVibGljIGdldCB0aW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI190aW1lRm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdGltZSBmb3JtYXQuIEZvciBleGFtcGxlcyxcbiAgICogc2VlIHRoZSBbbW9tZW50LmpzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvKSBkb2NzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRpbWVwaWNrZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWUgfHwgZmFsc2U7XG5cbiAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCAjbW9kZWxWYWx1ZSgpOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19tb2RlbFZhbHVlO1xuICB9XG5cbiAgc2V0ICNtb2RlbFZhbHVlKHZhbHVlOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX21vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMuI19tb2RlbFZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgICAgIHRoaXMuI3NldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy4jX3ZhbGlkYXRvckNoYW5nZSgpO1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAjY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19tb2RlbFZhbHVlOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZDtcbiAgI19za3lUaW1lcGlja2VySW5wdXQ6IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG4gICNlbFJlZjogRWxlbWVudFJlZjtcbiAgI3Jlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICByZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZSA9IHJlc291cmNlc1NlcnZpY2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dD8uc2VsZWN0ZWRUaW1lQ2hhbmdlZC5zdWJzY3JpYmUoXG4gICAgICAgIChuZXdUaW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VGltZSk7XG4gICAgICAgICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2VcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdGltZXBpY2tlcl9pbnB1dF9kZWZhdWx0X2xhYmVsJylcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gV2F0Y2ggZm9yIHRoZSBjb250cm9sIHRvIGJlIGFkZGVkIGFuZCBpbml0aWFsaXplIHRoZSB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNjb250cm9sICYmIHRoaXMuI2NvbnRyb2wucGFyZW50KSB7XG4gICAgICB0aGlzLiNjb250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsVmFsdWUsIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5yZXR1cm5Gb3JtYXQgPSB0aGlzLnJldHVybkZvcm1hdDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI19vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLiNtb2RlbFZhbHVlID0gdGhpcy4jZm9ybWF0dGVyKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodmFsdWUubG9jYWwgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lUaW1lOiB7XG4gICAgICAgICAgaW52YWxpZDogY29udHJvbC52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAjc2V0SW5wdXRWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KHZhbHVlLmN1c3RvbUZvcm1hdCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG91dHB1dCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBvdXRwdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ3ZhbHVlJyxcbiAgICAgIGZvcm1hdHRlZFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gICNmb3JtYXR0ZXIodGltZTogYW55KSB7XG4gICAgaWYgKHRpbWUgJiYgdHlwZW9mIHRpbWUgIT09ICdzdHJpbmcnICYmICdsb2NhbCcgaW4gdGltZSkge1xuICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0aW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50Rm9ybWF0ID0gdGhpcy50aW1lRm9ybWF0ID09PSAnSEgnID8gJ0g6bW0nIDogJ2g6bW0gQSc7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMucmV0dXJuRm9ybWF0ID0gY3VycmVudEZvcm1hdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0VGltZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgPSB7XG4gICAgICAgIGhvdXI6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5ob3VyKCksXG4gICAgICAgIG1pbnV0ZTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLm1pbnV0ZSgpLFxuICAgICAgICBtZXJpZGllOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KCdBJyksXG4gICAgICAgIHRpbWV6b25lOiBwYXJzZUludChtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KCdaJyksIDEwKSxcbiAgICAgICAgaXNvODYwMTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLnRvRGF0ZSgpLFxuICAgICAgICBsb2NhbDogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdChjdXJyZW50Rm9ybWF0KSxcbiAgICAgICAgY3VzdG9tRm9ybWF0OiB0aGlzLnJldHVybkZvcm1hdCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gZm9ybWF0VGltZTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlVGltZXBpY2tlcklucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZSAhPT0gdGhpcy4jbW9kZWxWYWx1ZSkge1xuICAgICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5zZWxlY3RlZFRpbWUgPSB0aGlzLiNtb2RlbFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAjX29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjX3ZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBob3VyLlxuICAgKi9cbiAgaG91cjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1pbnV0ZS5cbiAgICovXG4gIG1pbnV0ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1lcmlkaWFuIChgQU1gIG9yIGBQTWApLlxuICAgKi9cbiAgbWVyaWRpZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRpbWUgem9uZS5cbiAgICovXG4gIHRpbWV6b25lOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGF0ZSBpbiBbaXNvODYwMSBmb3JtYXRdKGh0dHBzOi8vd3d3Lmlzby5vcmcvaXNvLTg2MDEtZGF0ZS1hbmQtdGltZS1mb3JtYXQuaHRtbCkuXG4gICAqL1xuICBpc284NjAxOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRhdGUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgdGltZSBmb3JtYXQuXG4gICAqL1xuICBsb2NhbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRpbWUgZm9ybWF0IHN0cmluZy5cbiAgICovXG4gIGN1c3RvbUZvcm1hdDogc3RyaW5nO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQge1xuICAvKipcbiAgICogVGhlIGhvdXIuXG4gICAqL1xuICBob3VyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW51dGUuXG4gICAqL1xuICBtaW51dGU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1lcmlkaWFuIChgQU1gIG9yIGBQTWApLlxuICAgKi9cbiAgbWVyaWRpZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSB6b25lLlxuICAgKi9cbiAgdGltZXpvbmU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGRhdGUgaW4gW2lzbzg2MDEgZm9ybWF0XShodHRwczovL3d3dy5pc28ub3JnL2lzby04NjAxLWRhdGUtYW5kLXRpbWUtZm9ybWF0Lmh0bWwpLlxuICAgKi9cbiAgaXNvODYwMTogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIGRhdGUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgdGltZSBmb3JtYXQuXG4gICAqL1xuICBsb2NhbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBmb3JtYXQgc3RyaW5nLlxuICAgKi9cbiAgY3VzdG9tRm9ybWF0OiBzdHJpbmc7XG59XG4iXX0=