@datarailsshared/datarailsshared 1.6.412 → 1.6.414

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.
@@ -1,7 +1,7 @@
1
1
  import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Input, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { DrInputsModule, GMT_OFFSETS, LOCAL_TIME_ZONE_OFFSET, TimePickerComponent } from '../dr-inputs';
4
- import { ALLOWED_PERIODS, CronEditor, CronEditorDefaultConfigByPeriod, CronEditorPeriod, CronTimePeriod, DAY_OF_MONTH_ARRAY, DAY_OF_WEEK_ARRAY, getCronTypeAsPeriodLabel, HOURS_DIVISIBLE_INTO_DAY, MONTH_OF_QUARTER_ARRAY, MONTH_OF_YEAR_ARRAY, } from './dr-cron-field.editor';
4
+ import { ALLOWED_PERIODS, CronEditor, CronEditorDefaultConfigByPeriod, CronEditorPeriod, CronTimePeriod, DAY_OF_MONTH_ARRAY, DAY_OF_WEEK_ARRAY, getCronTypeAsPeriodLabel, HOURS_DIVISIBLE_INTO_DAY, LAST_DAY_OF_MONTH, MONTH_OF_QUARTER_ARRAY, MONTH_OF_YEAR_ARRAY, } from './dr-cron-field.editor';
5
5
  import { capitalize } from 'lodash';
6
6
  import { DrTooltipModule } from '../dr-tooltip/dr-tooltip.module';
7
7
  import { DrPopoverModule } from '../dr-popover/dr-popover.module';
@@ -24,7 +24,7 @@ function DrCronFieldComponent_dr_input_0_Template(rf, ctx) { if (rf & 1) {
24
24
  } if (rf & 2) {
25
25
  const ctx_r0 = i0.ɵɵnextContext();
26
26
  const _r1 = i0.ɵɵreference(2);
27
- i0.ɵɵproperty("id", ctx_r0.id)("ngModel", ctx_r0.visibleString)("drPopover", !ctx_r0.disabled ? _r1 : null)("drPopoverPosition", ctx_r0.popoverPosition)("disabled", ctx_r0.disabled)("readonly", true);
27
+ i0.ɵɵproperty("id", ctx_r0.id)("ngModel", ctx_r0.visibleString)("drPopover", _r1)("drPopoverDisabled", ctx_r0.disabled)("drPopoverPosition", ctx_r0.popoverPosition)("disabled", ctx_r0.disabled)("readonly", true);
28
28
  } }
29
29
  function DrCronFieldComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
30
30
  const _r10 = i0.ɵɵgetCurrentView();
@@ -97,7 +97,7 @@ function DrCronFieldComponent_ng_template_3_ng_template_6_Template(rf, ctx) { if
97
97
  i0.ɵɵelementEnd();
98
98
  } if (rf & 2) {
99
99
  const ctx_r19 = i0.ɵɵnextContext(2);
100
- i0.ɵɵproperty("ngModel", ctx_r19.cronModel.dayOfMonth)("items", ctx_r19.DAY_OF_MONTH_ARRAY)("searchable", true);
100
+ i0.ɵɵproperty("ngModel", ctx_r19.cronModel.dayOfMonth)("items", ctx_r19.daysOfMonth)("searchable", true);
101
101
  } }
102
102
  function DrCronFieldComponent_ng_template_3_ng_template_8_Template(rf, ctx) { if (rf & 1) {
103
103
  const _r38 = i0.ɵɵgetCurrentView();
@@ -441,9 +441,6 @@ function DrCronFieldComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
441
441
  i0.ɵɵproperty("ngIf", !ctx_r4.isAdvancedMode);
442
442
  } }
443
443
  export class DrCronFieldComponent {
444
- get DAY_OF_MONTH_ARRAY() {
445
- return this.allowLastDayOfMonth ? DAY_OF_MONTH_ARRAY : DAY_OF_MONTH_ARRAY.slice(0, -1);
446
- }
447
444
  set value(value) {
448
445
  if (!value) {
449
446
  this.visibleString = '';
@@ -483,6 +480,7 @@ export class DrCronFieldComponent {
483
480
  this.isAdvancedMode = false;
484
481
  this.advancedCron = '';
485
482
  this.advancedError = null;
483
+ this.daysOfMonth = DAY_OF_MONTH_ARRAY;
486
484
  this.onChange = () => { };
487
485
  this.onTouched = () => { };
488
486
  }
@@ -497,6 +495,9 @@ export class DrCronFieldComponent {
497
495
  if (this.allowAdvanced) {
498
496
  this.cronEditorPeriodArray.push({ value: 'advanced', label: 'Advanced' });
499
497
  }
498
+ if (this.allowLastDayOfMonth) {
499
+ this.daysOfMonth = [...DAY_OF_MONTH_ARRAY, LAST_DAY_OF_MONTH];
500
+ }
500
501
  }
501
502
  registerOnChange(fn) {
502
503
  this.onChange = fn;
@@ -581,14 +582,14 @@ export class DrCronFieldComponent {
581
582
  useExisting: forwardRef((() => DrCronFieldComponent)),
582
583
  multi: true,
583
584
  },
584
- ]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange", 4, "ngIf", "ngIfElse"], ["recurrencePopover", ""], ["cronConfiguration", ""], ["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange"], ["prefixIcon", "", 1, "dr-icon-date"], ["suffixIcon", "", 1, "dr-icon-arrow-down"], [1, "recurrence-popup"], [1, "recurrence-popup__body"], [3, "ngTemplateOutlet"], [1, "recurrence-popup__footer"], ["data-analytics", "dr-cron-field_button-cancel", "theme", "secondary", 3, "click"], ["data-analytics", "dr-cron-field_button-save", 3, "click"], ["quarterConfig", ""], ["hourConfig", ""], ["weekConfig", ""], ["dayOfMonthSelector", ""], ["yearMonthSelector", ""], [1, "cron-configuration"], ["data-analytics", "dr-cron-field_radio-group-period", "class", "cron-configuration__every", "name", "every", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["class", "cron-configuration__advanced", 4, "ngIf"], [4, "ngIf"], ["data-analytics", "dr-cron-field_select-quarter-month", "aria-label", "Quarter month", "bindLabel", "label", "bindValue", "value", 1, "month-of-quarter", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-every-x-hours", "aria-label", "Hour interval", "bindLabel", "label", "bindValue", "value", 1, "hour-of-day", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-week", "aria-label", "Day of week", "bindLabel", "label", "bindValue", "value", 1, "day-of-week", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-month", "aria-label", "Day of month", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "searchable", "ngModelChange"], ["data-analytics", "dr-cron-field_select-month", "aria-label", "Month", "bindLabel", "label", "bindValue", "value", 1, "month-of-year", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-group-period", "name", "every", 1, "cron-configuration__every", 3, "ngModel", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value", 4, "ngFor", "ngForOf"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value"], [1, "cron-configuration__advanced"], [1, "cron-configuration__advanced-note"], [1, "cron-configuration__advanced-label"], ["data-analytics", "dr-cron-field_input-advanced", 3, "ngModel", "ngModelChange"], ["class", "cron-configuration__advanced-error", 4, "ngIf"], [1, "cron-configuration__advanced-error"], [4, "ngIf", "ngIfElse"], ["singleRowMode", ""], [1, "cron-configuration__section", "cron-configuration__row"], [3, "ngTemplateOutlet", 4, "ngIf"], ["class", "cron-configuration__section cron-configuration__row", 4, "ngIf"], [1, "cron-configuration__section", "cron-configuration__row", "cron-configuration__row--time"], [1, "time-prefix"], [3, "ngModel", "ngModelChange"], ["class", "cron-configuration__section", 4, "ngIf"], [1, "cron-configuration__section"], ["data-analytics", "dr-cron-field_input-hour", "aria-label", "Hour", "type", "number", 1, "hours-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], [1, "time-dots"], ["data-analytics", "dr-cron-field_input-minute", "aria-label", "Minute", "type", "number", 1, "minutes-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], ["data-analytics", "dr-cron-field_select-time-period", "aria-label", "Time period", 1, "time-period-selector", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-timezone", "aria-label", "Time zone", "bindLabel", "label", "bindValue", "value", 1, "gmt-offsets", 3, "ngModel", "items", "textView", "ngModelChange"], ["labelTemplate", ""]], template: function DrCronFieldComponent_Template(rf, ctx) { if (rf & 1) {
585
- i0.ɵɵtemplate(0, DrCronFieldComponent_dr_input_0_Template, 3, 6, "dr-input", 0);
585
+ ]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverDisabled", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange", 4, "ngIf", "ngIfElse"], ["recurrencePopover", ""], ["cronConfiguration", ""], ["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverDisabled", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange"], ["prefixIcon", "", 1, "dr-icon-date"], ["suffixIcon", "", 1, "dr-icon-arrow-down"], [1, "recurrence-popup"], [1, "recurrence-popup__body"], [3, "ngTemplateOutlet"], [1, "recurrence-popup__footer"], ["data-analytics", "dr-cron-field_button-cancel", "theme", "secondary", 3, "click"], ["data-analytics", "dr-cron-field_button-save", 3, "click"], ["quarterConfig", ""], ["hourConfig", ""], ["weekConfig", ""], ["dayOfMonthSelector", ""], ["yearMonthSelector", ""], [1, "cron-configuration"], ["data-analytics", "dr-cron-field_radio-group-period", "class", "cron-configuration__every", "name", "every", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["class", "cron-configuration__advanced", 4, "ngIf"], [4, "ngIf"], ["data-analytics", "dr-cron-field_select-quarter-month", "aria-label", "Quarter month", "bindLabel", "label", "bindValue", "value", 1, "month-of-quarter", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-every-x-hours", "aria-label", "Hour interval", "bindLabel", "label", "bindValue", "value", 1, "hour-of-day", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-week", "aria-label", "Day of week", "bindLabel", "label", "bindValue", "value", 1, "day-of-week", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-month", "aria-label", "Day of month", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "searchable", "ngModelChange"], ["data-analytics", "dr-cron-field_select-month", "aria-label", "Month", "bindLabel", "label", "bindValue", "value", 1, "month-of-year", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-group-period", "name", "every", 1, "cron-configuration__every", 3, "ngModel", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value", 4, "ngFor", "ngForOf"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value"], [1, "cron-configuration__advanced"], [1, "cron-configuration__advanced-note"], [1, "cron-configuration__advanced-label"], ["data-analytics", "dr-cron-field_input-advanced", 3, "ngModel", "ngModelChange"], ["class", "cron-configuration__advanced-error", 4, "ngIf"], [1, "cron-configuration__advanced-error"], [4, "ngIf", "ngIfElse"], ["singleRowMode", ""], [1, "cron-configuration__section", "cron-configuration__row"], [3, "ngTemplateOutlet", 4, "ngIf"], ["class", "cron-configuration__section cron-configuration__row", 4, "ngIf"], [1, "cron-configuration__section", "cron-configuration__row", "cron-configuration__row--time"], [1, "time-prefix"], [3, "ngModel", "ngModelChange"], ["class", "cron-configuration__section", 4, "ngIf"], [1, "cron-configuration__section"], ["data-analytics", "dr-cron-field_input-hour", "aria-label", "Hour", "type", "number", 1, "hours-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], [1, "time-dots"], ["data-analytics", "dr-cron-field_input-minute", "aria-label", "Minute", "type", "number", 1, "minutes-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], ["data-analytics", "dr-cron-field_select-time-period", "aria-label", "Time period", 1, "time-period-selector", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-timezone", "aria-label", "Time zone", "bindLabel", "label", "bindValue", "value", 1, "gmt-offsets", 3, "ngModel", "items", "textView", "ngModelChange"], ["labelTemplate", ""]], template: function DrCronFieldComponent_Template(rf, ctx) { if (rf & 1) {
586
+ i0.ɵɵtemplate(0, DrCronFieldComponent_dr_input_0_Template, 3, 7, "dr-input", 0);
586
587
  i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_1_Template, 8, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
587
588
  i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_Template, 14, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
588
589
  } if (rf & 2) {
589
590
  const _r3 = i0.ɵɵreference(4);
590
591
  i0.ɵɵproperty("ngIf", !ctx.flatMode)("ngIfElse", _r3);
591
- } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, FormsModule, i2.NgControlStatus, i2.NgModel, DrTooltipModule, DrInputsModule, i3.DrButtonComponent, i4.RadioButtonComponent, i5.RadioGroupComponent, i6.DrInputComponent, i7.DrSelectComponent, DrPopoverModule, i8.DrPopoverDirective, TimePickerComponent], styles: ["[_nghost-%COMP%] dr-input[_ngcontent-%COMP%] , [_nghost-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer[_ngcontent-%COMP%] dr-button[_ngcontent-%COMP%]{margin-left:12px}.cron-configuration[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .hour-of-day[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-quarter[_ngcontent-%COMP%]{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-week[_ngcontent-%COMP%]{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-year[_ngcontent-%COMP%]{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-month[_ngcontent-%COMP%]{width:92px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .hours-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .minutes-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .time-period-selector[_ngcontent-%COMP%]{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:4px}.cron-configuration[_ngcontent-%COMP%] .time-dots[_ngcontent-%COMP%]{margin:0 4px}.cron-configuration[_ngcontent-%COMP%] .gmt-offsets[_ngcontent-%COMP%]{margin-left:16px}.cron-configuration__advanced[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced[_ngcontent-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:text}.cron-configuration__advanced-error[_ngcontent-%COMP%]{color:#bf1d30}.cron-configuration--multi-row[_ngcontent-%COMP%]{width:auto}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row--time[_ngcontent-%COMP%]{margin-top:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:0}"], changeDetection: 0 }); }
592
+ } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, FormsModule, i2.NgControlStatus, i2.NgModel, DrTooltipModule, DrInputsModule, i3.DrButtonComponent, i4.RadioButtonComponent, i5.RadioGroupComponent, i6.DrInputComponent, i7.DrSelectComponent, DrPopoverModule, i8.DrPopoverDirective, TimePickerComponent], styles: ["[_nghost-%COMP%] dr-input[_ngcontent-%COMP%] , [_nghost-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer[_ngcontent-%COMP%] dr-button[_ngcontent-%COMP%]{margin-left:12px}.cron-configuration[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .hour-of-day[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-quarter[_ngcontent-%COMP%]{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-week[_ngcontent-%COMP%]{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-year[_ngcontent-%COMP%]{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-month[_ngcontent-%COMP%]{width:97px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .hours-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .minutes-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .time-period-selector[_ngcontent-%COMP%]{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:4px}.cron-configuration[_ngcontent-%COMP%] .time-dots[_ngcontent-%COMP%]{margin:0 4px}.cron-configuration[_ngcontent-%COMP%] .gmt-offsets[_ngcontent-%COMP%]{margin-left:16px}.cron-configuration__advanced[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced[_ngcontent-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:text}.cron-configuration__advanced-error[_ngcontent-%COMP%]{color:#bf1d30}.cron-configuration--multi-row[_ngcontent-%COMP%]{width:auto}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row--time[_ngcontent-%COMP%]{margin-top:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:0}"], changeDetection: 0 }); }
592
593
  }
593
594
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrCronFieldComponent, [{
594
595
  type: Component,
@@ -598,7 +599,7 @@ export class DrCronFieldComponent {
598
599
  useExisting: forwardRef((() => DrCronFieldComponent)),
599
600
  multi: true,
600
601
  },
601
- ], imports: [CommonModule, FormsModule, DrTooltipModule, DrInputsModule, DrPopoverModule, TimePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-input\n [id]=\"id\"\n data-analytics=\"dr-cron-field_input-main\"\n aria-label=\"Schedule\"\n *ngIf=\"!flatMode; else cronConfiguration\"\n placeholder=\"Select...\"\n (click)=\"!disabled ? openPopover() : null\"\n [(ngModel)]=\"visibleString\"\n [drPopover]=\"!disabled ? recurrencePopover : null\"\n [drPopoverPosition]=\"popoverPosition\"\n [disabled]=\"disabled\"\n [readonly]=\"true\">\n <i class=\"dr-icon-date\" prefixIcon></i>\n <i class=\"dr-icon-arrow-down\" suffixIcon></i>\n</dr-input>\n\n<ng-template #recurrencePopover let-closePopover=\"closePopover\">\n <div class=\"recurrence-popup\">\n <div class=\"recurrence-popup__body\">\n <ng-container [ngTemplateOutlet]=\"cronConfiguration\"></ng-container>\n </div>\n <div class=\"recurrence-popup__footer\">\n <dr-button data-analytics=\"dr-cron-field_button-cancel\" theme=\"secondary\" (click)=\"closePopover()\">Cancel</dr-button>\n <dr-button data-analytics=\"dr-cron-field_button-save\" (click)=\"update(); closePopover()\">Save</dr-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cronConfiguration>\n <ng-template #quarterConfig>\n <span>Repeat every quarter on</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-quarter-month\"\n aria-label=\"Quarter month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_QUARTER_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-quarter\"></dr-select>\n <span>month of the quarter</span>\n </ng-template>\n\n <ng-template #hourConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-every-x-hours\"\n aria-label=\"Hour interval\"\n [(ngModel)]=\"cronModel.everyXHours\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"HOURS_DIVISIBLE_INTO_DAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"hour-of-day\">\n </dr-select>\n <span>hour(s)</span>\n </ng-template>\n\n <ng-template #weekConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-week\"\n aria-label=\"Day of week\"\n [(ngModel)]=\"cronModel.dayOfWeek\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_WEEK_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-week\">\n </dr-select>\n </ng-template>\n\n <ng-template #dayOfMonthSelector>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-month\"\n aria-label=\"Day of month\"\n [(ngModel)]=\"cronModel.dayOfMonth\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_MONTH_ARRAY\"\n [searchable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n </ng-template>\n\n <ng-template #yearMonthSelector>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-month\"\n aria-label=\"Month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_YEAR_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-year\">\n </dr-select>\n </ng-template>\n\n <div class=\"cron-configuration\" [class.cron-configuration--multi-row]=\"multiRowMode\">\n <dr-radio-group\n data-analytics=\"dr-cron-field_radio-group-period\"\n *ngIf=\"!hidePeriodSelector\"\n class=\"cron-configuration__every\"\n [ngModel]=\"isAdvancedMode ? 'advanced' : cronModel.every\"\n (ngModelChange)=\"onEveryChange($event)\"\n name=\"every\">\n <dr-radio-button\n data-analytics=\"dr-cron-field_radio-button-0\"\n *ngFor=\"let option of cronEditorPeriodArray\"\n [value]=\"option.value\"\n [attr.data-analytics]=\"'dr-cron-field_radio-button-' + option.value\">\n {{ option.label }}\n </dr-radio-button>\n </dr-radio-group>\n <div *ngIf=\"isAdvancedMode\" class=\"cron-configuration__advanced\">\n <div class=\"cron-configuration__advanced-note\">\n Use crontab to set custom time intervals for sync frequency, such as every two weeks at 10:05.\n </div>\n <div class=\"cron-configuration__advanced-label\">Enter your cron expression:</div>\n <dr-input\n data-analytics=\"dr-cron-field_input-advanced\"\n [(ngModel)]=\"advancedCron\"\n (ngModelChange)=\"onAdvancedChange()\">\n </dr-input>\n <div *ngIf=\"advancedError\" class=\"cron-configuration__advanced-error\">{{ advancedError }}</div>\n </div>\n\n <ng-container *ngIf=\"!isAdvancedMode\">\n <ng-container *ngIf=\"multiRowMode; else singleRowMode\">\n <div class=\"cron-configuration__section cron-configuration__row\">\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\"\n [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\">Repeat every day</span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\">\n <ng-container [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">\n <span>Repeat on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of every month</span>\n </ng-container>\n </div>\n\n <div\n class=\"cron-configuration__section cron-configuration__row\"\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">\n <span>on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of the month</span>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row cron-configuration__row--time\">\n <span class=\"time-prefix\">at</span>\n <dr-time-picker [ngModel]=\"cronModel\" (ngModelChange)=\"onTimePickerChange($event)\"> </dr-time-picker>\n </div>\n </ng-container>\n\n <ng-template #singleRowMode>\n <div *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\" class=\"cron-configuration__section\">\n <ng-container [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n </div>\n <div class=\"cron-configuration__section\">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\"> Repeat every day </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n\n <ng-container\n *ngIf=\"\n cronModel.every !== cronEditorPeriod.WEEK &&\n cronModel.every !== cronEditorPeriod.HOUR &&\n cronModel.every !== cronEditorPeriod.DAY\n \">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">Repeat on </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">on </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\"\n [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">day of every month </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">day of the month </span>\n </ng-container>\n <span class=\"time-prefix\">at</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-hour\"\n aria-label=\"Hour\"\n [(ngModel)]=\"cronModel.hour\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"12\"\n type=\"number\"\n class=\"hours-input\">\n </dr-input>\n <span class=\"time-dots\">:</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-minute\"\n aria-label=\"Minute\"\n [(ngModel)]=\"cronModel.minute\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"59\"\n type=\"number\"\n class=\"minutes-input\">\n </dr-input>\n <dr-select\n data-analytics=\"dr-cron-field_select-time-period\"\n aria-label=\"Time period\"\n [(ngModel)]=\"cronModel.timePeriod\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"CRON_TIME_PERIOD_ARRAY\"\n class=\"time-period-selector\"></dr-select>\n <dr-select\n data-analytics=\"dr-cron-field_select-timezone\"\n aria-label=\"Time zone\"\n [(ngModel)]=\"cronModel.timeZone\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"GMT_OFFSETS\"\n [textView]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"gmt-offsets\">\n <ng-template #labelTemplate let-item=\"item\">\n {{ LOCAL_TIME_ZONE_OFFSET !== cronModel.timeZone ? item.label : 'Local Time' }}\n </ng-template>\n </dr-select>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host dr-input::ng-deep,:host dr-input::ng-deep input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer dr-button{margin-left:12px}.cron-configuration{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section span{flex-shrink:0}.cron-configuration .hour-of-day{width:62px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-quarter{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration .day-of-week{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-year{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration .day-of-month{width:92px;flex-shrink:0;margin:0 8px}.cron-configuration .hours-input{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration .minutes-input{width:62px;flex-shrink:0}.cron-configuration .time-period-selector{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration .time-prefix{margin-left:4px}.cron-configuration .time-dots{margin:0 4px}.cron-configuration .gmt-offsets{margin-left:16px}.cron-configuration__advanced{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced dr-input::ng-deep input{cursor:text}.cron-configuration__advanced-error{color:#bf1d30}.cron-configuration--multi-row{width:auto}.cron-configuration--multi-row .cron-configuration__row{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row .cron-configuration__row--time{margin-top:8px}.cron-configuration--multi-row .time-prefix{margin-left:0}\n"] }]
602
+ ], imports: [CommonModule, FormsModule, DrTooltipModule, DrInputsModule, DrPopoverModule, TimePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-input\n [id]=\"id\"\n data-analytics=\"dr-cron-field_input-main\"\n aria-label=\"Schedule\"\n *ngIf=\"!flatMode; else cronConfiguration\"\n placeholder=\"Select...\"\n (click)=\"!disabled ? openPopover() : null\"\n [(ngModel)]=\"visibleString\"\n [drPopover]=\"recurrencePopover\"\n [drPopoverDisabled]=\"disabled\"\n [drPopoverPosition]=\"popoverPosition\"\n [disabled]=\"disabled\"\n [readonly]=\"true\">\n <i class=\"dr-icon-date\" prefixIcon></i>\n <i class=\"dr-icon-arrow-down\" suffixIcon></i>\n</dr-input>\n\n<ng-template #recurrencePopover let-closePopover=\"closePopover\">\n <div class=\"recurrence-popup\">\n <div class=\"recurrence-popup__body\">\n <ng-container [ngTemplateOutlet]=\"cronConfiguration\"></ng-container>\n </div>\n <div class=\"recurrence-popup__footer\">\n <dr-button data-analytics=\"dr-cron-field_button-cancel\" theme=\"secondary\" (click)=\"closePopover()\">Cancel</dr-button>\n <dr-button data-analytics=\"dr-cron-field_button-save\" (click)=\"update(); closePopover()\">Save</dr-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cronConfiguration>\n <ng-template #quarterConfig>\n <span>Repeat every quarter on</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-quarter-month\"\n aria-label=\"Quarter month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_QUARTER_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-quarter\"></dr-select>\n <span>month of the quarter</span>\n </ng-template>\n\n <ng-template #hourConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-every-x-hours\"\n aria-label=\"Hour interval\"\n [(ngModel)]=\"cronModel.everyXHours\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"HOURS_DIVISIBLE_INTO_DAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"hour-of-day\">\n </dr-select>\n <span>hour(s)</span>\n </ng-template>\n\n <ng-template #weekConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-week\"\n aria-label=\"Day of week\"\n [(ngModel)]=\"cronModel.dayOfWeek\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_WEEK_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-week\">\n </dr-select>\n </ng-template>\n\n <ng-template #dayOfMonthSelector>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-month\"\n aria-label=\"Day of month\"\n [(ngModel)]=\"cronModel.dayOfMonth\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"daysOfMonth\"\n [searchable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n </ng-template>\n\n <ng-template #yearMonthSelector>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-month\"\n aria-label=\"Month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_YEAR_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-year\">\n </dr-select>\n </ng-template>\n\n <div class=\"cron-configuration\" [class.cron-configuration--multi-row]=\"multiRowMode\">\n <dr-radio-group\n data-analytics=\"dr-cron-field_radio-group-period\"\n *ngIf=\"!hidePeriodSelector\"\n class=\"cron-configuration__every\"\n [ngModel]=\"isAdvancedMode ? 'advanced' : cronModel.every\"\n (ngModelChange)=\"onEveryChange($event)\"\n name=\"every\">\n <dr-radio-button\n data-analytics=\"dr-cron-field_radio-button-0\"\n *ngFor=\"let option of cronEditorPeriodArray\"\n [value]=\"option.value\"\n [attr.data-analytics]=\"'dr-cron-field_radio-button-' + option.value\">\n {{ option.label }}\n </dr-radio-button>\n </dr-radio-group>\n <div *ngIf=\"isAdvancedMode\" class=\"cron-configuration__advanced\">\n <div class=\"cron-configuration__advanced-note\">\n Use crontab to set custom time intervals for sync frequency, such as every two weeks at 10:05.\n </div>\n <div class=\"cron-configuration__advanced-label\">Enter your cron expression:</div>\n <dr-input\n data-analytics=\"dr-cron-field_input-advanced\"\n [(ngModel)]=\"advancedCron\"\n (ngModelChange)=\"onAdvancedChange()\">\n </dr-input>\n <div *ngIf=\"advancedError\" class=\"cron-configuration__advanced-error\">{{ advancedError }}</div>\n </div>\n\n <ng-container *ngIf=\"!isAdvancedMode\">\n <ng-container *ngIf=\"multiRowMode; else singleRowMode\">\n <div class=\"cron-configuration__section cron-configuration__row\">\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\"\n [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\">Repeat every day</span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\">\n <ng-container [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">\n <span>Repeat on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of every month</span>\n </ng-container>\n </div>\n\n <div\n class=\"cron-configuration__section cron-configuration__row\"\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">\n <span>on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of the month</span>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row cron-configuration__row--time\">\n <span class=\"time-prefix\">at</span>\n <dr-time-picker [ngModel]=\"cronModel\" (ngModelChange)=\"onTimePickerChange($event)\"> </dr-time-picker>\n </div>\n </ng-container>\n\n <ng-template #singleRowMode>\n <div *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\" class=\"cron-configuration__section\">\n <ng-container [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n </div>\n <div class=\"cron-configuration__section\">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\"> Repeat every day </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n\n <ng-container\n *ngIf=\"\n cronModel.every !== cronEditorPeriod.WEEK &&\n cronModel.every !== cronEditorPeriod.HOUR &&\n cronModel.every !== cronEditorPeriod.DAY\n \">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">Repeat on </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">on </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\"\n [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">day of every month </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">day of the month </span>\n </ng-container>\n <span class=\"time-prefix\">at</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-hour\"\n aria-label=\"Hour\"\n [(ngModel)]=\"cronModel.hour\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"12\"\n type=\"number\"\n class=\"hours-input\">\n </dr-input>\n <span class=\"time-dots\">:</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-minute\"\n aria-label=\"Minute\"\n [(ngModel)]=\"cronModel.minute\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"59\"\n type=\"number\"\n class=\"minutes-input\">\n </dr-input>\n <dr-select\n data-analytics=\"dr-cron-field_select-time-period\"\n aria-label=\"Time period\"\n [(ngModel)]=\"cronModel.timePeriod\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"CRON_TIME_PERIOD_ARRAY\"\n class=\"time-period-selector\"></dr-select>\n <dr-select\n data-analytics=\"dr-cron-field_select-timezone\"\n aria-label=\"Time zone\"\n [(ngModel)]=\"cronModel.timeZone\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"GMT_OFFSETS\"\n [textView]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"gmt-offsets\">\n <ng-template #labelTemplate let-item=\"item\">\n {{ LOCAL_TIME_ZONE_OFFSET !== cronModel.timeZone ? item.label : 'Local Time' }}\n </ng-template>\n </dr-select>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host dr-input::ng-deep,:host dr-input::ng-deep input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer dr-button{margin-left:12px}.cron-configuration{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section span{flex-shrink:0}.cron-configuration .hour-of-day{width:62px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-quarter{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration .day-of-week{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-year{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration .day-of-month{width:97px;flex-shrink:0;margin:0 8px}.cron-configuration .hours-input{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration .minutes-input{width:62px;flex-shrink:0}.cron-configuration .time-period-selector{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration .time-prefix{margin-left:4px}.cron-configuration .time-dots{margin:0 4px}.cron-configuration .gmt-offsets{margin-left:16px}.cron-configuration__advanced{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced dr-input::ng-deep input{cursor:text}.cron-configuration__advanced-error{color:#bf1d30}.cron-configuration--multi-row{width:auto}.cron-configuration--multi-row .cron-configuration__row{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row .cron-configuration__row--time{margin-top:8px}.cron-configuration--multi-row .time-prefix{margin-left:0}\n"] }]
602
603
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { id: [{
603
604
  type: Input
604
605
  }], hostId: [{
@@ -633,4 +634,4 @@ export class DrCronFieldComponent {
633
634
  }], validateCron: [{
634
635
  type: Input
635
636
  }] }); })();
636
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY3Jvbi1maWVsZC9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEdBRVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN6SCxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDViwrQkFBK0IsRUFDL0IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFFeEIsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7SUM5QnRGLG1DQVdzQjtJQUxsQix3S0FBUyxr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QUUsSUFBSTtxQkFDZDtpQkFDSixXQUNRLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDMUYsdUJBQXVCLENBQUMsTUFBTTtvRUFLdEMsRUFBRTtrQkFBVixLQUFLO1lBQ2tCLE1BQU07a0JBQTdCLFdBQVc7bUJBQUMsU0FBUztZQUlmLFFBQVE7a0JBRmQsS0FBSzs7a0JBQ0wsV0FBVzttQkFBQyxnQkFBZ0I7WUFHcEIsY0FBYztrQkFBdEIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ2tDLGtCQUFrQjtrQkFBekQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLFFBQVE7a0JBQS9DLEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFDRSxZQUFZO2tCQUFuRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBQ0UsYUFBYTtrQkFBcEQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLG1CQUFtQjtrQkFBMUQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUM3QixZQUFZO2tCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRHJJbnB1dHNNb2R1bGUsIEdNVF9PRkZTRVRTLCBMT0NBTF9USU1FX1pPTkVfT0ZGU0VULCBUaW1lUGlja2VyQ29tcG9uZW50LCBUaW1lcGlja2VyTW9kZWwgfSBmcm9tICcuLi9kci1pbnB1dHMnO1xuaW1wb3J0IHtcbiAgICBBTExPV0VEX1BFUklPRFMsXG4gICAgQ3JvbkVkaXRvcixcbiAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kLFxuICAgIENyb25FZGl0b3JQZXJpb2QsXG4gICAgQ3JvblRpbWVQZXJpb2QsXG4gICAgREFZX09GX01PTlRIX0FSUkFZLFxuICAgIERBWV9PRl9XRUVLX0FSUkFZLFxuICAgIGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCxcbiAgICBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVksXG4gICAgSUNyb25FZGl0b3IsXG4gICAgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSxcbiAgICBNT05USF9PRl9ZRUFSX0FSUkFZLFxufSBmcm9tICcuL2RyLWNyb24tZmllbGQuZWRpdG9yJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bvc2l0aW9uJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vZHItdG9vbHRpcC9kci10b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBEclBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY3Jvbi1maWVsZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEckNyb25GaWVsZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEclRvb2x0aXBNb2R1bGUsIERySW5wdXRzTW9kdWxlLCBEclBvcG92ZXJNb2R1bGUsIFRpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyQ3JvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaG9zdElkID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhbGxvd2VkUGVyaW9kczogQ3JvbkVkaXRvclBlcmlvZFtdID0gQUxMT1dFRF9QRVJJT0RTO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKSBwb3BvdmVyUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbS1sZWZ0JztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGlkZVBlcmlvZFNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZsYXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG11bHRpUm93TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbGxvd0FkdmFuY2VkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93TGFzdERheU9mTW9udGggPSBmYWxzZTtcbiAgICBASW5wdXQoKSB2YWxpZGF0ZUNyb24/OiAoY3Jvbjogc3RyaW5nKSA9PiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcl9tZXNzYWdlPzogc3RyaW5nIH07XG5cbiAgICBwdWJsaWMgZ2V0IERBWV9PRl9NT05USF9BUlJBWSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsb3dMYXN0RGF5T2ZNb250aCA/IERBWV9PRl9NT05USF9BUlJBWSA6IERBWV9PRl9NT05USF9BUlJBWS5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIHB1YmxpYyByZWFkb25seSBNT05USF9PRl9RVUFSVEVSX0FSUkFZID0gTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTU9OVEhfT0ZfWUVBUl9BUlJBWSA9IE1PTlRIX09GX1lFQVJfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IERBWV9PRl9XRUVLX0FSUkFZID0gREFZX09GX1dFRUtfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IEhPVVJTX0RJVklTSUJMRV9JTlRPX0RBWSA9IEhPVVJTX0RJVklTSUJMRV9JTlRPX0RBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgQ1JPTl9USU1FX1BFUklPRF9BUlJBWSA9IFtDcm9uVGltZVBlcmlvZC5BTSwgQ3JvblRpbWVQZXJpb2QuUE1dO1xuICAgIHB1YmxpYyByZWFkb25seSBMT0NBTF9USU1FX1pPTkVfT0ZGU0VUID0gTE9DQUxfVElNRV9aT05FX09GRlNFVDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgR01UX09GRlNFVFMgPSBHTVRfT0ZGU0VUUztcbiAgICBwdWJsaWMgcmVhZG9ubHkgY3JvbkVkaXRvclBlcmlvZCA9IENyb25FZGl0b3JQZXJpb2Q7XG5cbiAgICBwdWJsaWMgY3JvbkVkaXRvclBlcmlvZEFycmF5OiB7IHZhbHVlOiBDcm9uRWRpdG9yUGVyaW9kIHwgJ2FkdmFuY2VkJzsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgcHVibGljIHZpc2libGVTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgdmFsdWVPYmplY3Q6IENyb25FZGl0b3I7XG4gICAgcHVibGljIGNyb25Nb2RlbDogSUNyb25FZGl0b3I7XG4gICAgcHVibGljIGlzQWR2YW5jZWRNb2RlID0gZmFsc2U7XG4gICAgcHVibGljIGFkdmFuY2VkQ3JvbiA9ICcnO1xuICAgIHB1YmxpYyBhZHZhbmNlZEVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSB0aGlzLnZhbHVlT2JqZWN0LmdldFJlYWRhYmxlU3RyaW5nKCk7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlICYmICF0aGlzLmNyb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9iamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdCA9IG5ldyBDcm9uRWRpdG9yKG51bGwsIHRoaXMuZmlzY2FsWWVhclN0YXJ0KTtcbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdC5ldmVyeSA9IHRoaXMuYWxsb3dlZFBlcmlvZHNbdGhpcy5hbGxvd2VkUGVyaW9kcy5sZW5ndGggLSAxXSA/PyBDcm9uRWRpdG9yUGVyaW9kLllFQVI7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgdGhpcy5jcm9uRWRpdG9yUGVyaW9kQXJyYXkgPSB0aGlzLmFsbG93ZWRQZXJpb2RzLm1hcCgocGVyaW9kKSA9PiAoe1xuICAgICAgICAgICAgdmFsdWU6IHBlcmlvZCxcbiAgICAgICAgICAgIGxhYmVsOiBjYXBpdGFsaXplKGdldENyb25UeXBlQXNQZXJpb2RMYWJlbChwZXJpb2QpKSxcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAodGhpcy5hbGxvd0FkdmFuY2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNyb25FZGl0b3JQZXJpb2RBcnJheS5wdXNoKHsgdmFsdWU6ICdhZHZhbmNlZCcsIGxhYmVsOiAnQWR2YW5jZWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuZmxhdE1vZGUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBZHZhbmNlZE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBZHZhbmNlZENyb24oKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZhbmNlZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy5hZHZhbmNlZENyb247XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFkdmFuY2VkQ3Jvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0ID0gdGhpcy5jcm9uTW9kZWw7XG4gICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZU9iamVjdC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXZlcnlDaGFuZ2UoJGV2ZW50OiBDcm9uRWRpdG9yUGVyaW9kIHwgJ2FkdmFuY2VkJykge1xuICAgICAgICBpZiAoJGV2ZW50ID09PSAnYWR2YW5jZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzQWR2YW5jZWRNb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRDcm9uID0gJyc7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkRXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlZE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZHZhbmNlZEVycm9yID0gbnVsbDtcbiAgICAgICAgY29uc3QgdGVtcFZhbHVlT2JqZWN0ID0gbmV3IENyb25FZGl0b3IoXG4gICAgICAgICAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kWyRldmVudF0odGhpcy5maXNjYWxZZWFyU3RhcnQpLFxuICAgICAgICAgICAgdGhpcy5maXNjYWxZZWFyU3RhcnQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGVtcFZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVGltZVBpY2tlckNoYW5nZSh0aW1lOiBUaW1lcGlja2VyTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwuaG91ciA9IHRpbWUuaG91cjtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwubWludXRlID0gdGltZS5taW51dGU7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLnRpbWVQZXJpb2QgPSB0aW1lLnRpbWVQZXJpb2QgYXMgQ3JvblRpbWVQZXJpb2Q7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLnRpbWVab25lID0gdGltZS50aW1lWm9uZTtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmxhdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BZHZhbmNlZENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFkdmFuY2VkQ3JvbigpO1xuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFkdmFuY2VkQ3JvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ3Jvbikge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZEVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlQ3Jvbih0aGlzLmFkdmFuY2VkQ3Jvbik7XG4gICAgICAgIHRoaXMuYWR2YW5jZWRFcnJvciA9IHZhbGlkYXRpb24udmFsaWQgPyBudWxsIDogdmFsaWRhdGlvbi5lcnJvcl9tZXNzYWdlO1xuICAgIH1cbn1cbiIsIjxkci1pbnB1dFxuICAgIFtpZF09XCJpZFwiXG4gICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2lucHV0LW1haW5cIlxuICAgIGFyaWEtbGFiZWw9XCJTY2hlZHVsZVwiXG4gICAgKm5nSWY9XCIhZmxhdE1vZGU7IGVsc2UgY3JvbkNvbmZpZ3VyYXRpb25cIlxuICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0Li4uXCJcbiAgICAoY2xpY2spPVwiIWRpc2FibGVkID8gb3BlblBvcG92ZXIoKSA6IG51bGxcIlxuICAgIFsobmdNb2RlbCldPVwidmlzaWJsZVN0cmluZ1wiXG4gICAgW2RyUG9wb3Zlcl09XCIhZGlzYWJsZWQgPyByZWN1cnJlbmNlUG9wb3ZlciA6IG51bGxcIlxuICAgIFtkclBvcG92ZXJQb3NpdGlvbl09XCJwb3BvdmVyUG9zaXRpb25cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIj5cbiAgICA8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIHByZWZpeEljb24+PC9pPlxuICAgIDxpIGNsYXNzPVwiZHItaWNvbi1hcnJvdy1kb3duXCIgc3VmZml4SWNvbj48L2k+XG48L2RyLWlucHV0PlxuXG48bmctdGVtcGxhdGUgI3JlY3VycmVuY2VQb3BvdmVyIGxldC1jbG9zZVBvcG92ZXI9XCJjbG9zZVBvcG92ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cF9fYm9keVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjcm9uQ29uZmlndXJhdGlvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY3VycmVuY2UtcG9wdXBfX2Zvb3RlclwiPlxuICAgICAgICAgICAgPGRyLWJ1dHRvbiBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfYnV0dG9uLWNhbmNlbFwiIHRoZW1lPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCI+Q2FuY2VsPC9kci1idXR0b24+XG4gICAgICAgICAgICA8ZHItYnV0dG9uIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9idXR0b24tc2F2ZVwiIChjbGljayk9XCJ1cGRhdGUoKTsgY2xvc2VQb3BvdmVyKClcIj5TYXZlPC9kci1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjcm9uQ29uZmlndXJhdGlvbj5cbiAgICA8bmctdGVtcGxhdGUgI3F1YXJ0ZXJDb25maWc+XG4gICAgICAgIDxzcGFuPlJlcGVhdCBldmVyeSBxdWFydGVyIG9uPC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LXF1YXJ0ZXItbW9udGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlF1YXJ0ZXIgbW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwubW9udGhcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW9mLXF1YXJ0ZXJcIj48L2RyLXNlbGVjdD5cbiAgICAgICAgPHNwYW4+bW9udGggb2YgdGhlIHF1YXJ0ZXI8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaG91ckNvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWV2ZXJ5LXgtaG91cnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvdXIgaW50ZXJ2YWxcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZXZlcnlYSG91cnNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiSE9VUlNfRElWSVNJQkxFX0lOVE9fREFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaG91ci1vZi1kYXlcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgICAgIDxzcGFuPmhvdXIocyk8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjd2Vla0NvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWRheS1vZi13ZWVrXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2Ygd2Vla1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5kYXlPZldlZWtcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiREFZX09GX1dFRUtfQVJSQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2Ytd2Vla1wiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkYXlPZk1vbnRoU2VsZWN0b3I+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZGF5LW9mLW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2YgbW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJEQVlfT0ZfTU9OVEhfQVJSQVlcIlxuICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImRheS1vZi1tb250aFwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN5ZWFyTW9udGhTZWxlY3Rvcj5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9ZRUFSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YteWVhclwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvblwiIFtjbGFzcy5jcm9uLWNvbmZpZ3VyYXRpb24tLW11bHRpLXJvd109XCJtdWx0aVJvd01vZGVcIj5cbiAgICAgICAgPGRyLXJhZGlvLWdyb3VwXG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfcmFkaW8tZ3JvdXAtcGVyaW9kXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVQZXJpb2RTZWxlY3RvclwiXG4gICAgICAgICAgICBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fZXZlcnlcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNBZHZhbmNlZE1vZGUgPyAnYWR2YW5jZWQnIDogY3Jvbk1vZGVsLmV2ZXJ5XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXZlcnlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBuYW1lPVwiZXZlcnlcIj5cbiAgICAgICAgICAgIDxkci1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfcmFkaW8tYnV0dG9uLTBcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3JvbkVkaXRvclBlcmlvZEFycmF5XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWFuYWx5dGljc109XCInZHItY3Jvbi1maWVsZF9yYWRpby1idXR0b24tJyArIG9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kci1yYWRpby1idXR0b24+XG4gICAgICAgIDwvZHItcmFkaW8tZ3JvdXA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0FkdmFuY2VkTW9kZVwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19hZHZhbmNlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fYWR2YW5jZWQtbm90ZVwiPlxuICAgICAgICAgICAgICAgIFVzZSBjcm9udGFiIHRvIHNldCBjdXN0b20gdGltZSBpbnRlcnZhbHMgZm9yIHN5bmMgZnJlcXVlbmN5LCBzdWNoIGFzIGV2ZXJ5IHR3byB3ZWVrcyBhdCAxMDowNS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fYWR2YW5jZWQtbGFiZWxcIj5FbnRlciB5b3VyIGNyb24gZXhwcmVzc2lvbjo8L2Rpdj5cbiAgICAgICAgICAgIDxkci1pbnB1dFxuICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZHZhbmNlZENyb25cIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWR2YW5jZWRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhZHZhbmNlZEVycm9yXCIgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2FkdmFuY2VkLWVycm9yXCI+e3sgYWR2YW5jZWRFcnJvciB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWR2YW5jZWRNb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlSb3dNb2RlOyBlbHNlIHNpbmdsZVJvd01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicXVhcnRlckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5EQVlcIj5SZXBlYXQgZXZlcnkgZGF5PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvdXJDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3ZWVrQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuWUVBUlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ5ZWFyTW9udGhTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UmVwZWF0IG9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPmRheSBvZiBldmVyeSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5vbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+ZGF5IG9mIHRoZSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb24gY3Jvbi1jb25maWd1cmF0aW9uX19yb3cgY3Jvbi1jb25maWd1cmF0aW9uX19yb3ctLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXByZWZpeFwiPmF0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZHItdGltZS1waWNrZXIgW25nTW9kZWxdPVwiY3Jvbk1vZGVsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UaW1lUGlja2VyQ2hhbmdlKCRldmVudClcIj4gPC9kci10aW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVJvd01vZGU+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCIgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJxdWFydGVyQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5EQVlcIj4gUmVwZWF0IGV2ZXJ5IGRheSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLkhPVVJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG91ckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5XRUVLXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndlZWtDb25maWdcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb25Nb2RlbC5ldmVyeSAhPT0gY3JvbkVkaXRvclBlcmlvZC5XRUVLICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvbk1vZGVsLmV2ZXJ5ICE9PSBjcm9uRWRpdG9yUGVyaW9kLkhPVVIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9uTW9kZWwuZXZlcnkgIT09IGNyb25FZGl0b3JQZXJpb2QuREFZXG4gICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLk1PTlRIXCI+UmVwZWF0IG9uIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5vbiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuWUVBUlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwieWVhck1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuTU9OVEhcIj5kYXkgb2YgZXZlcnkgbW9udGggPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiPmRheSBvZiB0aGUgbW9udGggPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXByZWZpeFwiPmF0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIb3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLmhvdXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza109XCInMDAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Vycy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2RyLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtZG90c1wiPjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkci1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2lucHV0LW1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTWludXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXNrXT1cIicwMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbnV0ZXMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC10aW1lLXBlcmlvZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiVGltZSBwZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwudGltZVBlcmlvZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJDUk9OX1RJTUVfUEVSSU9EX0FSUkFZXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGltZS1wZXJpb2Qtc2VsZWN0b3JcIj48L2RyLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC10aW1lem9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiVGltZSB6b25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLnRpbWVab25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIkdNVF9PRkZTRVRTXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Vmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ210LW9mZnNldHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBMT0NBTF9USU1FX1pPTkVfT0ZGU0VUICE9PSBjcm9uTW9kZWwudGltZVpvbmUgPyBpdGVtLmxhYmVsIDogJ0xvY2FsIFRpbWUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
637
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY3Jvbi1maWVsZC9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEdBRVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN6SCxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDViwrQkFBK0IsRUFDL0IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFFeEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDL0J0RixtQ0FZc0I7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QUFLLEVBQUUsSUFBSTtxQkFDZDtpQkFDSixXQUNRLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDMUYsdUJBQXVCLENBQUMsTUFBTTtvRUFLdEMsRUFBRTtrQkFBVixLQUFLO1lBQ2tCLE1BQU07a0JBQTdCLFdBQVc7bUJBQUMsU0FBUztZQUlmLFFBQVE7a0JBRmQsS0FBSzs7a0JBQ0wsV0FBVzttQkFBQyxnQkFBZ0I7WUFHcEIsY0FBYztrQkFBdEIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ2tDLGtCQUFrQjtrQkFBekQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLFFBQVE7a0JBQS9DLEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFDRSxZQUFZO2tCQUFuRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBQ0UsYUFBYTtrQkFBcEQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLG1CQUFtQjtrQkFBMUQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUM3QixZQUFZO2tCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRHJJbnB1dHNNb2R1bGUsIEdNVF9PRkZTRVRTLCBMT0NBTF9USU1FX1pPTkVfT0ZGU0VULCBUaW1lUGlja2VyQ29tcG9uZW50LCBUaW1lcGlja2VyTW9kZWwgfSBmcm9tICcuLi9kci1pbnB1dHMnO1xuaW1wb3J0IHtcbiAgICBBTExPV0VEX1BFUklPRFMsXG4gICAgQ3JvbkVkaXRvcixcbiAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kLFxuICAgIENyb25FZGl0b3JQZXJpb2QsXG4gICAgQ3JvblRpbWVQZXJpb2QsXG4gICAgREFZX09GX01PTlRIX0FSUkFZLFxuICAgIERBWV9PRl9XRUVLX0FSUkFZLFxuICAgIGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCxcbiAgICBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVksXG4gICAgSUNyb25FZGl0b3IsXG4gICAgTEFTVF9EQVlfT0ZfTU9OVEgsXG4gICAgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSxcbiAgICBNT05USF9PRl9ZRUFSX0FSUkFZLFxufSBmcm9tICcuL2RyLWNyb24tZmllbGQuZWRpdG9yJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bvc2l0aW9uJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vZHItdG9vbHRpcC9kci10b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBEclBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY3Jvbi1maWVsZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEckNyb25GaWVsZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEclRvb2x0aXBNb2R1bGUsIERySW5wdXRzTW9kdWxlLCBEclBvcG92ZXJNb2R1bGUsIFRpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyQ3JvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaG9zdElkID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhbGxvd2VkUGVyaW9kczogQ3JvbkVkaXRvclBlcmlvZFtdID0gQUxMT1dFRF9QRVJJT0RTO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKSBwb3BvdmVyUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbS1sZWZ0JztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGlkZVBlcmlvZFNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZsYXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG11bHRpUm93TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbGxvd0FkdmFuY2VkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93TGFzdERheU9mTW9udGggPSBmYWxzZTtcbiAgICBASW5wdXQoKSB2YWxpZGF0ZUNyb24/OiAoY3Jvbjogc3RyaW5nKSA9PiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcl9tZXNzYWdlPzogc3RyaW5nIH07XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSA9IE1PTlRIX09GX1FVQVJURVJfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IE1PTlRIX09GX1lFQVJfQVJSQVkgPSBNT05USF9PRl9ZRUFSX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBEQVlfT0ZfV0VFS19BUlJBWSA9IERBWV9PRl9XRUVLX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVkgPSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IENST05fVElNRV9QRVJJT0RfQVJSQVkgPSBbQ3JvblRpbWVQZXJpb2QuQU0sIENyb25UaW1lUGVyaW9kLlBNXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTE9DQUxfVElNRV9aT05FX09GRlNFVCA9IExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQ7XG4gICAgcHVibGljIHJlYWRvbmx5IEdNVF9PRkZTRVRTID0gR01UX09GRlNFVFM7XG4gICAgcHVibGljIHJlYWRvbmx5IGNyb25FZGl0b3JQZXJpb2QgPSBDcm9uRWRpdG9yUGVyaW9kO1xuXG4gICAgcHVibGljIGNyb25FZGl0b3JQZXJpb2RBcnJheTogeyB2YWx1ZTogQ3JvbkVkaXRvclBlcmlvZCB8ICdhZHZhbmNlZCc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICAgIHB1YmxpYyB2aXNpYmxlU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHZhbHVlT2JqZWN0OiBDcm9uRWRpdG9yO1xuICAgIHB1YmxpYyBjcm9uTW9kZWw6IElDcm9uRWRpdG9yO1xuICAgIHB1YmxpYyBpc0FkdmFuY2VkTW9kZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBhZHZhbmNlZENyb24gPSAnJztcbiAgICBwdWJsaWMgYWR2YW5jZWRFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGRheXNPZk1vbnRoOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdID0gREFZX09GX01PTlRIX0FSUkFZO1xuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gJyc7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMuZmxhdE1vZGUgJiYgIXRoaXMuY3Jvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0ID0gbmV3IENyb25FZGl0b3IobnVsbCwgdGhpcy5maXNjYWxZZWFyU3RhcnQpO1xuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LmV2ZXJ5ID0gdGhpcy5hbGxvd2VkUGVyaW9kc1t0aGlzLmFsbG93ZWRQZXJpb2RzLmxlbmd0aCAtIDFdID8/IENyb25FZGl0b3JQZXJpb2QuWUVBUjtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICB0aGlzLmNyb25FZGl0b3JQZXJpb2RBcnJheSA9IHRoaXMuYWxsb3dlZFBlcmlvZHMubWFwKChwZXJpb2QpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogcGVyaW9kLFxuICAgICAgICAgICAgbGFiZWw6IGNhcGl0YWxpemUoZ2V0Q3JvblR5cGVBc1BlcmlvZExhYmVsKHBlcmlvZCkpLFxuICAgICAgICB9KSk7XG4gICAgICAgIGlmICh0aGlzLmFsbG93QWR2YW5jZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JvbkVkaXRvclBlcmlvZEFycmF5LnB1c2goeyB2YWx1ZTogJ2FkdmFuY2VkJywgbGFiZWw6ICdBZHZhbmNlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dMYXN0RGF5T2ZNb250aCkge1xuICAgICAgICAgICAgdGhpcy5kYXlzT2ZNb250aCA9IFsuLi5EQVlfT0ZfTU9OVEhfQVJSQVksIExBU1RfREFZX09GX01PTlRIXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlICYmIHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSB0aGlzLnZhbHVlT2JqZWN0LmdldFJlYWRhYmxlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQWR2YW5jZWRNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWR2YW5jZWRDcm9uKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWR2YW5jZWRFcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMuYWR2YW5jZWRDcm9uO1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hZHZhbmNlZENyb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdCA9IHRoaXMuY3Jvbk1vZGVsO1xuICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSB0aGlzLnZhbHVlT2JqZWN0LmdldFJlYWRhYmxlU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWVPYmplY3QudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuUG9wb3ZlcigpIHtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkV2ZXJ5Q2hhbmdlKCRldmVudDogQ3JvbkVkaXRvclBlcmlvZCB8ICdhZHZhbmNlZCcpIHtcbiAgICAgICAgaWYgKCRldmVudCA9PT0gJ2FkdmFuY2VkJykge1xuICAgICAgICAgICAgdGhpcy5pc0FkdmFuY2VkTW9kZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkQ3JvbiA9ICcnO1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZEVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzQWR2YW5jZWRNb2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWR2YW5jZWRFcnJvciA9IG51bGw7XG4gICAgICAgIGNvbnN0IHRlbXBWYWx1ZU9iamVjdCA9IG5ldyBDcm9uRWRpdG9yKFxuICAgICAgICAgICAgQ3JvbkVkaXRvckRlZmF1bHRDb25maWdCeVBlcmlvZFskZXZlbnRdKHRoaXMuZmlzY2FsWWVhclN0YXJ0KSxcbiAgICAgICAgICAgIHRoaXMuZmlzY2FsWWVhclN0YXJ0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRlbXBWYWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRpbWVQaWNrZXJDaGFuZ2UodGltZTogVGltZXBpY2tlck1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLmhvdXIgPSB0aW1lLmhvdXI7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLm1pbnV0ZSA9IHRpbWUubWludXRlO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lUGVyaW9kID0gdGltZS50aW1lUGVyaW9kIGFzIENyb25UaW1lUGVyaW9kO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lWm9uZSA9IHRpbWUudGltZVpvbmU7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWR2YW5jZWRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVBZHZhbmNlZENyb24oKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBZHZhbmNlZENyb24oKSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNyb24pIHtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRFcnJvciA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZUNyb24odGhpcy5hZHZhbmNlZENyb24pO1xuICAgICAgICB0aGlzLmFkdmFuY2VkRXJyb3IgPSB2YWxpZGF0aW9uLnZhbGlkID8gbnVsbCA6IHZhbGlkYXRpb24uZXJyb3JfbWVzc2FnZTtcbiAgICB9XG59XG4iLCI8ZHItaW5wdXRcbiAgICBbaWRdPVwiaWRcIlxuICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1tYWluXCJcbiAgICBhcmlhLWxhYmVsPVwiU2NoZWR1bGVcIlxuICAgICpuZ0lmPVwiIWZsYXRNb2RlOyBlbHNlIGNyb25Db25maWd1cmF0aW9uXCJcbiAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdC4uLlwiXG4gICAgKGNsaWNrKT1cIiFkaXNhYmxlZCA/IG9wZW5Qb3BvdmVyKCkgOiBudWxsXCJcbiAgICBbKG5nTW9kZWwpXT1cInZpc2libGVTdHJpbmdcIlxuICAgIFtkclBvcG92ZXJdPVwicmVjdXJyZW5jZVBvcG92ZXJcIlxuICAgIFtkclBvcG92ZXJEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2RyUG9wb3ZlclBvc2l0aW9uXT1cInBvcG92ZXJQb3NpdGlvblwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwidHJ1ZVwiPlxuICAgIDxpIGNsYXNzPVwiZHItaWNvbi1kYXRlXCIgcHJlZml4SWNvbj48L2k+XG4gICAgPGkgY2xhc3M9XCJkci1pY29uLWFycm93LWRvd25cIiBzdWZmaXhJY29uPjwvaT5cbjwvZHItaW5wdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjcmVjdXJyZW5jZVBvcG92ZXIgbGV0LWNsb3NlUG9wb3Zlcj1cImNsb3NlUG9wb3ZlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwX19ib2R5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyb25Db25maWd1cmF0aW9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cF9fZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZHItYnV0dG9uIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9idXR0b24tY2FuY2VsXCIgdGhlbWU9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VQb3BvdmVyKClcIj5DYW5jZWw8L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkci1idXR0b24gZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2J1dHRvbi1zYXZlXCIgKGNsaWNrKT1cInVwZGF0ZSgpOyBjbG9zZVBvcG92ZXIoKVwiPlNhdmU8L2RyLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Nyb25Db25maWd1cmF0aW9uPlxuICAgIDxuZy10ZW1wbGF0ZSAjcXVhcnRlckNvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5IHF1YXJ0ZXIgb248L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtcXVhcnRlci1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUXVhcnRlciBtb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9RVUFSVEVSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YtcXVhcnRlclwiPjwvZHItc2VsZWN0PlxuICAgICAgICA8c3Bhbj5tb250aCBvZiB0aGUgcXVhcnRlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNob3VyQ29uZmlnPlxuICAgICAgICA8c3Bhbj5SZXBlYXQgZXZlcnk8L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZXZlcnkteC1ob3Vyc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91ciBpbnRlcnZhbFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ldmVyeVhIb3Vyc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJIT1VSU19ESVZJU0lCTEVfSU5UT19EQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJob3VyLW9mLWRheVwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICAgICAgPHNwYW4+aG91cihzKTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN3ZWVrQ29uZmlnPlxuICAgICAgICA8c3Bhbj5SZXBlYXQgZXZlcnk8L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZGF5LW9mLXdlZWtcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRheSBvZiB3ZWVrXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLmRheU9mV2Vla1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJEQVlfT0ZfV0VFS19BUlJBWVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImRheS1vZi13ZWVrXCI+XG4gICAgICAgIDwvZHItc2VsZWN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2RheU9mTW9udGhTZWxlY3Rvcj5cbiAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC1kYXktb2YtbW9udGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRheSBvZiBtb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5kYXlPZk1vbnRoXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImRheXNPZk1vbnRoXCJcbiAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2YtbW9udGhcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjeWVhck1vbnRoU2VsZWN0b3I+XG4gICAgICAgIDxzcGFuPlJlcGVhdCBldmVyeTwvc3Bhbj5cbiAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwubW9udGhcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiTU9OVEhfT0ZfWUVBUl9BUlJBWVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW9mLXllYXJcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25cIiBbY2xhc3MuY3Jvbi1jb25maWd1cmF0aW9uLS1tdWx0aS1yb3ddPVwibXVsdGlSb3dNb2RlXCI+XG4gICAgICAgIDxkci1yYWRpby1ncm91cFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3JhZGlvLWdyb3VwLXBlcmlvZFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFoaWRlUGVyaW9kU2VsZWN0b3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2V2ZXJ5XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzQWR2YW5jZWRNb2RlID8gJ2FkdmFuY2VkJyA6IGNyb25Nb2RlbC5ldmVyeVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkV2ZXJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgbmFtZT1cImV2ZXJ5XCI+XG4gICAgICAgICAgICA8ZHItcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3JhZGlvLWJ1dHRvbi0wXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNyb25FZGl0b3JQZXJpb2RBcnJheVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hbmFseXRpY3NdPVwiJ2RyLWNyb24tZmllbGRfcmFkaW8tYnV0dG9uLScgKyBvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZHItcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L2RyLXJhZGlvLWdyb3VwPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNBZHZhbmNlZE1vZGVcIiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fYWR2YW5jZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2FkdmFuY2VkLW5vdGVcIj5cbiAgICAgICAgICAgICAgICBVc2UgY3JvbnRhYiB0byBzZXQgY3VzdG9tIHRpbWUgaW50ZXJ2YWxzIGZvciBzeW5jIGZyZXF1ZW5jeSwgc3VjaCBhcyBldmVyeSB0d28gd2Vla3MgYXQgMTA6MDUuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2FkdmFuY2VkLWxhYmVsXCI+RW50ZXIgeW91ciBjcm9uIGV4cHJlc3Npb246PC9kaXY+XG4gICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWR2YW5jZWRDcm9uXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFkdmFuY2VkQ2hhbmdlKClcIj5cbiAgICAgICAgICAgIDwvZHItaW5wdXQ+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWR2YW5jZWRFcnJvclwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19hZHZhbmNlZC1lcnJvclwiPnt7IGFkdmFuY2VkRXJyb3IgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FkdmFuY2VkTW9kZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpUm93TW9kZTsgZWxzZSBzaW5nbGVSb3dNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fc2VjdGlvbiBjcm9uLWNvbmZpZ3VyYXRpb25fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInF1YXJ0ZXJDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuREFZXCI+UmVwZWF0IGV2ZXJ5IGRheTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuSE9VUlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3VyQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLldFRUtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2Vla0NvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwieWVhck1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuTU9OVEhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlJlcGVhdCBvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5kYXkgb2YgZXZlcnkgbW9udGg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fc2VjdGlvbiBjcm9uLWNvbmZpZ3VyYXRpb25fX3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+b248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmRheSBvZiB0aGUgbW9udGg8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93IGNyb24tY29uZmlndXJhdGlvbl9fcm93LS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1wcmVmaXhcIj5hdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRyLXRpbWUtcGlja2VyIFtuZ01vZGVsXT1cImNyb25Nb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZVBpY2tlckNoYW5nZSgkZXZlbnQpXCI+IDwvZHItdGltZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVSb3dNb2RlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicXVhcnRlckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuREFZXCI+IFJlcGVhdCBldmVyeSBkYXkgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvdXJDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3ZWVrQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9uTW9kZWwuZXZlcnkgIT09IGNyb25FZGl0b3JQZXJpb2QuV0VFSyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb25Nb2RlbC5ldmVyeSAhPT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvbk1vZGVsLmV2ZXJ5ICE9PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVxuICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPlJlcGVhdCBvbiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCI+b24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLk1PTlRIXCI+ZGF5IG9mIGV2ZXJ5IG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5kYXkgb2YgdGhlIG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1wcmVmaXhcIj5hdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtaG91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tdPVwiJzAwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG91cnMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLWRvdHNcIj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza109XCInMDAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjU5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW51dGVzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHItaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZS1wZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRpbWUgcGVyaW9kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLnRpbWVQZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiQ1JPTl9USU1FX1BFUklPRF9BUlJBWVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWUtcGVyaW9kLXNlbGVjdG9yXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRpbWUgem9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lWm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJHTVRfT0ZGU0VUU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dFZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdtdC1vZmZzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgTE9DQUxfVElNRV9aT05FX09GRlNFVCAhPT0gY3Jvbk1vZGVsLnRpbWVab25lID8gaXRlbS5sYWJlbCA6ICdMb2NhbCBUaW1lJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -131,13 +131,11 @@ export const addOrdinalSuffix = (num) => {
131
131
  const v = num % 100;
132
132
  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);
133
133
  };
134
- export const DAY_OF_MONTH_ARRAY = [
135
- ...new Array(28).fill(null).map((_, i) => ({
136
- label: addOrdinalSuffix(i + 1),
137
- value: i + 1,
138
- })),
139
- { label: 'the last', value: 'L' },
140
- ];
134
+ export const DAY_OF_MONTH_ARRAY = new Array(28).fill(null).map((v, i) => ({
135
+ label: addOrdinalSuffix(i + 1),
136
+ value: i + 1,
137
+ }));
138
+ export const LAST_DAY_OF_MONTH = { label: 'the last', value: 'L' };
141
139
  export class CronEditor {
142
140
  set value(value) {
143
141
  this.parseCronString(value);
@@ -311,4 +309,4 @@ export class CronEditor {
311
309
  return visibleString;
312
310
  }
313
311
  }
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWdCbkUsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsK0JBQVcsQ0FBQTtJQUNYLGlDQUFhLENBQUE7SUFDYixtQ0FBZSxDQUFBO0lBQ2YsdUNBQW1CLENBQUE7SUFDbkIsaUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQUlELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBYyxFQUFvQixFQUFFO0lBQ3ZFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV6QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7S0FDaEM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDO0tBQy9CO0lBRUQsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0tBQ2hDO0lBRUQsSUFBSSxXQUFX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QUksTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEcsYUFBYSxJQUFJLEtBQUssc0JBQXNCLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUMvRyxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAgYXMgX21hcCwgc29ydEJ5IGFzIF9zb3J0QnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0R01UTGFiZWwsIExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgfSBmcm9tICcuLi9kci1pbnB1dHMnO1xuXG5leHBvcnQgdHlwZSBURGF5T2ZNb250aCA9IG51bWJlciB8ICdMJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ3JvbkVkaXRvciB7XG4gICAgZXZlcnlYSG91cnM6IG51bWJlcjsgLy8gMSwyLDMsNCw2LDgsMTIgKG5vdCBpbmNsdWRpbmcgMjQgYmVjYXVzZSBldmVyeSAyNCBob3VycyBpcyBqdXN0IGRhaWx5KVxuICAgIGV2ZXJ5OiBDcm9uRWRpdG9yUGVyaW9kO1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuICAgIGhvdXI6IG51bWJlcjtcbiAgICBkYXlPZk1vbnRoOiBURGF5T2ZNb250aDsgLy8gXCIxLTI4XCIgb3IgXCJMXCIgZm9yIHRoZSBsYXN0IGRheSBvZiBtb250aFxuICAgIG1vbnRoOiBudW1iZXI7IC8vIFwiMS0xMlwiXG4gICAgZGF5T2ZXZWVrOiBudW1iZXI7IC8vIFwiMC03XCJcbiAgICB0aW1lUGVyaW9kOiBDcm9uVGltZVBlcmlvZDtcbiAgICB0aW1lWm9uZTogbnVtYmVyOyAvLyAtMTQgLSArMTJcbn1cblxuZXhwb3J0IGVudW0gQ3JvbkVkaXRvclBlcmlvZCB7XG4gICAgSE9VUiA9ICdob3VyJyxcbiAgICBEQVkgPSAnZGF5JyxcbiAgICBXRUVLID0gJ3dlZWsnLFxuICAgIE1PTlRIID0gJ21vbnRoJyxcbiAgICBRVUFSVEVSID0gJ3F1YXJ0ZXInLFxuICAgIFlFQVIgPSAneWVhcicsXG59XG5cbmV4cG9ydCB0eXBlIFRDcm9uRWRpdG9yUGVyaW9kID0gJ2hvdXInIHwgJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG5leHBvcnQgY29uc3QgZGF0ZUZvcm1hdFRvQ3JvblBlcmlvZCA9IChmb3JtYXQ6IHN0cmluZyk6IENyb25FZGl0b3JQZXJpb2QgPT4ge1xuICAgIGNvbnN0IHVwcGVyRm9ybWF0ID0gZm9ybWF0LnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodXBwZXJGb3JtYXQuaW5jbHVkZXMoJ0gnKSkge1xuICAgICAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5IT1VSO1xuICAgIH1cblxuICAgIGlmICh1cHBlckZvcm1hdC5pbmNsdWRlcygnRCcpICYmICF1cHBlckZvcm1hdC5pbmNsdWRlcygnVycpKSB7XG4gICAgICAgIHJldHVybiBDcm9uRWRpdG9yUGVyaW9kLkRBWTtcbiAgICB9XG5cbiAgICBpZiAodXBwZXJGb3JtYXQuaW5jbHVkZXMoJ1cnKSkge1xuICAgICAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5XRUVLO1xuICAgIH1cblxuICAgIGlmICh1cHBlckZvcm1hdC5pbmNsdWRlcygnTScpICYmIHVwcGVyRm9ybWF0ICE9PSAnWVlZWScpIHtcbiAgICAgICAgcmV0dXJuIENyb25FZGl0b3JQZXJpb2QuTU9OVEg7XG4gICAgfVxuXG4gICAgaWYgKHVwcGVyRm9ybWF0LmluY2x1ZGVzKCdRJykpIHtcbiAgICAgICAgcmV0dXJuIENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUjtcbiAgICB9XG5cbiAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluaXRpYWxRdWFydGVyQXJyYXkgPSAoZmlzY2FsWWVhciA9IDEsIG1vbnRoQXJyID0gWzEsIDQsIDcsIDEwXSk6IG51bWJlcltdID0+IHtcbiAgICBjb25zdCBmaXNjYWxPZmZzZXQgPSBmaXNjYWxZZWFyIC0gMTtcblxuICAgIGlmIChmaXNjYWxPZmZzZXQpIHtcbiAgICAgICAgbW9udGhBcnIgPSBfbWFwKG1vbnRoQXJyLCAobW9udGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IG1vbnRoICsgZmlzY2FsT2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHZhbCA+IDEyID8gdmFsIC0gMTIgOiB2YWw7XG4gICAgICAgIH0pO1xuICAgICAgICBtb250aEFyciA9IF9zb3J0QnkobW9udGhBcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aEFycjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdGFydE1vbnRoSW5RdWFydGVyID0gKGZpc2NhbFllYXIgPSAxLCBtb250aEFycjogbnVtYmVyW10gPSBbMSwgNCwgNywgMTBdKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBmaXNjYWxPZmZzZXQgPSBmaXNjYWxZZWFyIC0gMTtcbiAgICBsZXQgcXVhcnRlck1vbnRoID0gbW9udGhBcnJbMF0gfHwgMTtcblxuICAgIC8vIEJ5IGRlZmF1bHQgc2VsZWN0IGZpcnN0IHZhbHVlIGluIGFycmF5IHNpbmNlIGl0IGNhbiBiZSBvbmx5IDEtM1xuICAgIC8vIFZhbHVlIG11c3QgYmUgcmVjYWxjdWxhdGVkIGlmIGZpc2NhbCB5ZWFyIGRvZXNuJ3Qgc3RhcnQgZnJvbSBmaXJzdCBtb250aFxuICAgIC8vIEluIG1vbnRoW10gd2UgaGF2ZSBVVEMgdmFsdWVzLCB3ZSBuZWVkIHRvIHNob3cgZmlzY2FsIG1vbnRoIGluIHNlbGVjdGlvbi5cbiAgICAvLyBFeGFtcGxlOiBXZSB3YW50IHRvIHN0YXJ0IHRhc2sgaW4gM3JkIG1vbnRoIG9uIGVhY2ggZmlzY2FsIHF1YXJ0ZXIuXG4gICAgLy8gSWYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSAzIFRoZW4gbW9udGggc2hvdWxkIGJlIFsyLDUsOCwxMV0uXG4gICAgLy8gRmlyc3QgZmlzY2FsIHF1YXJ0ZXIgd2lsbCBiZSBmaW5pc2hlZCBpbiBtb250aCA1LCAyLTgsIDMtMTEsIDQtMihuZXh0IHllYXIpLlxuICAgIC8vIEZpc2NhbCBtb250aCA9IFsxMiwzLDYsOV0uIFByZXNlbnRlZCB2YWx1ZSBmb3IgdXNlcjogMy5cbiAgICBpZiAoZmlzY2FsT2Zmc2V0KSB7XG4gICAgICAgIG1vbnRoQXJyID0gX21hcChtb250aEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGl0ZW0gLSBmaXNjYWxPZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsIDwgMSA/IHZhbCArIDEyIDogdmFsO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9udGhBcnIgPSBfc29ydEJ5KG1vbnRoQXJyKTtcbiAgICAgICAgcXVhcnRlck1vbnRoID0gbW9udGhBcnJbMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1YXJ0ZXJNb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRRdWFydGVyU3RyaW5nQnlNb250aEluUXVhcnRlciA9IChmaXNjYWxZZWFyID0gMSwgbW9udGg6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCFtb250aCkge1xuICAgICAgICByZXR1cm4gJyonO1xuICAgIH1cblxuICAgIGxldCBtb250aEFyciA9IFttb250aCwgbW9udGggKyAzLCBtb250aCArIDYsIG1vbnRoICsgOV07XG4gICAgY29uc3QgZmlzY2FsT2Zmc2V0ID0gZmlzY2FsWWVhciAtIDE7XG5cbiAgICBpZiAoZmlzY2FsT2Zmc2V0KSB7XG4gICAgICAgIG1vbnRoQXJyID0gX21hcChtb250aEFyciwgKG1vbnRoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSBtb250aCArIGZpc2NhbE9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB2YWwgPiAxMiA/IHZhbCAtIDEyIDogdmFsO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9udGhBcnIgPSBfc29ydEJ5KG1vbnRoQXJyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9udGhBcnIuam9pbignLCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IENyb25FZGl0b3JEZWZhdWx0Q29uZmlnQnlQZXJpb2QgPSB7XG4gICAgW0Nyb25FZGl0b3JQZXJpb2QuSE9VUl06IChmWT86IG51bWJlcikgPT4gYDAgMTIvMSAqICogKiAke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVR9YCxcbiAgICBbQ3JvbkVkaXRvclBlcmlvZC5EQVldOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyICogKiAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLldFRUtdOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyICogKiAwICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLk1PTlRIXTogKGZZPzogbnVtYmVyKSA9PiBgMCAxMiAxICogKiAke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVR9YCxcbiAgICBbQ3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXTogKGZZPzogbnVtYmVyKSA9PiBgMCAxMiAxICR7Z2V0SW5pdGlhbFF1YXJ0ZXJBcnJheShmWSkuam9pbignLCcpfSAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLllFQVJdOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyIDEgMSAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCA9ICh0eXBlOiBDcm9uRWRpdG9yUGVyaW9kKTogc3RyaW5nID0+XG4gICAgdHlwZSA9PT0gQ3JvbkVkaXRvclBlcmlvZC5EQVkgPyAnRGFpbHknIDogdHlwZSArICdseSc7XG5cbmV4cG9ydCBlbnVtIENyb25UaW1lUGVyaW9kIHtcbiAgICBBTSA9ICdBTScsXG4gICAgUE0gPSAnUE0nLFxufVxuXG5leHBvcnQgY29uc3QgSE9VUlNfRElWSVNJQkxFX0lOVE9fREFZID0gW1xuICAgIHsgbGFiZWw6ICcxJywgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiAnMicsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJzMnLCB2YWx1ZTogMyB9LFxuICAgIHsgbGFiZWw6ICc0JywgdmFsdWU6IDQgfSxcbiAgICB7IGxhYmVsOiAnNicsIHZhbHVlOiA2IH0sXG4gICAgeyBsYWJlbDogJzgnLCB2YWx1ZTogOCB9LFxuICAgIHsgbGFiZWw6ICcxMicsIHZhbHVlOiAxMiB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PTlRIX09GX1lFQVJfQVJSQVkgPSBbXG4gICAgeyBsYWJlbDogJ0phbnVhcnknLCB2YWx1ZTogMSB9LFxuICAgIHsgbGFiZWw6ICdGZWJydWFyeScsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJ01hcmNoJywgdmFsdWU6IDMgfSxcbiAgICB7IGxhYmVsOiAnQXByaWwnLCB2YWx1ZTogNCB9LFxuICAgIHsgbGFiZWw6ICdNYXknLCB2YWx1ZTogNSB9LFxuICAgIHsgbGFiZWw6ICdKdW5lJywgdmFsdWU6IDYgfSxcbiAgICB7IGxhYmVsOiAnSnVseScsIHZhbHVlOiA3IH0sXG4gICAgeyBsYWJlbDogJ0F1Z3VzdCcsIHZhbHVlOiA4IH0sXG4gICAgeyBsYWJlbDogJ1NlcHRlbWJlcicsIHZhbHVlOiA5IH0sXG4gICAgeyBsYWJlbDogJ09jdG9iZXInLCB2YWx1ZTogMTAgfSxcbiAgICB7IGxhYmVsOiAnTm92ZW1iZXInLCB2YWx1ZTogMTEgfSxcbiAgICB7IGxhYmVsOiAnRGVjZW1iZXInLCB2YWx1ZTogMTIgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBEQVlfT0ZfV0VFS19BUlJBWSA9IFtcbiAgICB7IGxhYmVsOiAnU3VuZGF5JywgdmFsdWU6IDAgfSxcbiAgICB7IGxhYmVsOiAnTW9uZGF5JywgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiAnVHVlc2RheScsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJ1dlZG5lc2RheScsIHZhbHVlOiAzIH0sXG4gICAgeyBsYWJlbDogJ1RodXJzZGF5JywgdmFsdWU6IDQgfSxcbiAgICB7IGxhYmVsOiAnRnJpZGF5JywgdmFsdWU6IDUgfSxcbiAgICB7IGxhYmVsOiAnU2F0dXJkYXknLCB2YWx1ZTogNiB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PTlRIX09GX1FVQVJURVJfQVJSQVkgPSBbXG4gICAgeyBsYWJlbDogJzFzdCcsIHZhbHVlOiAxIH0sXG4gICAgeyBsYWJlbDogJzJuZCcsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJzNyZCcsIHZhbHVlOiAzIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgQUxMT1dFRF9QRVJJT0RTID0gT2JqZWN0LnZhbHVlcyhDcm9uRWRpdG9yUGVyaW9kKTtcblxuZXhwb3J0IGNvbnN0IGFkZE9yZGluYWxTdWZmaXggPSAobnVtOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHN1ZmZpeGVzID0gWyd0aCcsICdzdCcsICduZCcsICdyZCddO1xuICAgIGNvbnN0IHYgPSBudW0gJSAxMDA7XG5cbiAgICByZXR1cm4gbnVtICsgKHN1ZmZpeGVzWyh2IC0gMjApICUgMTBdIHx8IHN1ZmZpeGVzW3ZdIHx8IHN1ZmZpeGVzWzBdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBEQVlfT0ZfTU9OVEhfQVJSQVk6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IFREYXlPZk1vbnRoIH1bXSA9IFtcbiAgICAuLi5uZXcgQXJyYXkoMjgpLmZpbGwobnVsbCkubWFwKChfLCBpKSA9PiAoe1xuICAgICAgICBsYWJlbDogYWRkT3JkaW5hbFN1ZmZpeChpICsgMSksXG4gICAgICAgIHZhbHVlOiBpICsgMSxcbiAgICB9KSksXG4gICAgeyBsYWJlbDogJ3RoZSBsYXN0JywgdmFsdWU6ICdMJyB9LFxuXTtcblxuZXhwb3J0IGNsYXNzIENyb25FZGl0b3IgaW1wbGVtZW50cyBJQ3JvbkVkaXRvciB7XG4gICAgcHJpdmF0ZSBfZmlzY2FsWWVhclN0YXJ0ID0gMTtcbiAgICBwcml2YXRlIF9wZXJpb2Q6IFRDcm9uRWRpdG9yUGVyaW9kO1xuXG4gICAgZXZlcnlYSG91cnM6IG51bWJlciA9IDE7XG4gICAgZGF5T2ZNb250aDogVERheU9mTW9udGggPSAxO1xuICAgIGRheU9mV2VlazogbnVtYmVyID0gMTtcbiAgICBldmVyeTogQ3JvbkVkaXRvclBlcmlvZCA9IENyb25FZGl0b3JQZXJpb2QuWUVBUjtcbiAgICBob3VyOiBudW1iZXIgPSAxMjtcbiAgICBtaW51dGU6IG51bWJlciA9IDA7XG4gICAgbW9udGg6IG51bWJlciA9IDE7XG4gICAgdGltZVBlcmlvZDogQ3JvblRpbWVQZXJpb2QgPSBDcm9uVGltZVBlcmlvZC5QTTtcbiAgICB0aW1lWm9uZTogbnVtYmVyID0gTE9DQUxfVElNRV9aT05FX09GRlNFVDtcblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBhcnNlQ3JvblN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jcm9uRWRpdG9yT2JqZWN0VG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHZhbHVlT2JqZWN0KHZhbHVlT2JqZWN0OiBJQ3JvbkVkaXRvcikge1xuICAgICAgICBpZiAoIXZhbHVlT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV2ZXJ5ID0gdmFsdWVPYmplY3QuZXZlcnk7XG4gICAgICAgIHRoaXMubWludXRlID0gdmFsdWVPYmplY3QubWludXRlO1xuICAgICAgICB0aGlzLmhvdXIgPSB2YWx1ZU9iamVjdC5ob3VyO1xuICAgICAgICB0aGlzLmRheU9mTW9udGggPSB2YWx1ZU9iamVjdC5kYXlPZk1vbnRoO1xuICAgICAgICB0aGlzLm1vbnRoID0gdmFsdWVPYmplY3QubW9udGg7XG4gICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gdmFsdWVPYmplY3QuZGF5T2ZXZWVrO1xuICAgICAgICB0aGlzLnRpbWVQZXJpb2QgPSB2YWx1ZU9iamVjdC50aW1lUGVyaW9kO1xuICAgICAgICB0aGlzLnRpbWVab25lID0gdmFsdWVPYmplY3QudGltZVpvbmU7XG4gICAgICAgIHRoaXMuZXZlcnlYSG91cnMgPSB2YWx1ZU9iamVjdC5ldmVyeVhIb3VycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlT2JqZWN0KCk6IElDcm9uRWRpdG9yIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV2ZXJ5OiB0aGlzLmV2ZXJ5LFxuICAgICAgICAgICAgbWludXRlOiB0aGlzLm1pbnV0ZSxcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cixcbiAgICAgICAgICAgIGRheU9mTW9udGg6IHRoaXMuZGF5T2ZNb250aCxcbiAgICAgICAgICAgIG1vbnRoOiB0aGlzLm1vbnRoLFxuICAgICAgICAgICAgZGF5T2ZXZWVrOiB0aGlzLmRheU9mV2VlayxcbiAgICAgICAgICAgIHRpbWVQZXJpb2Q6IHRoaXMudGltZVBlcmlvZCxcbiAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLnRpbWVab25lLFxuICAgICAgICAgICAgZXZlcnlYSG91cnM6IHRoaXMuZXZlcnlYSG91cnMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IodmFsdWU/OiBzdHJpbmcsIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMSwgcGVyaW9kPzogVENyb25FZGl0b3JQZXJpb2QpIHtcbiAgICAgICAgdGhpcy5fZmlzY2FsWWVhclN0YXJ0ID0gZmlzY2FsWWVhclN0YXJ0O1xuICAgICAgICB0aGlzLl9wZXJpb2QgPSBwZXJpb2Q7XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlQ3JvblN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBbbWludXRlLCBob3VyLCBkYXlPZk1vbnRoLCBtb250aCwgZGF5T2ZXZWVrLCB0aW1lWm9uZV06IGFueSA9IHZhbHVlLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgbWludXRlID0gbWludXRlICE9PSAnKicgPyBOdW1iZXIobWludXRlLnNwbGl0KCcsJylbMF0pIDogMDtcbiAgICAgICAgbGV0IGV2ZXJ5WEhvdXJzO1xuICAgICAgICBpZiAodHlwZW9mIGhvdXIgPT09ICdzdHJpbmcnICYmIGhvdXIuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICAgICAgLy8gQ2FzZSAxOiBJZiBgaG91cmAgaW5jbHVkZXMgLyB0byBpbmRpY2F0ZSBzdGVwIGNoYW5nZVxuICAgICAgICAgICAgZXZlcnlYSG91cnMgPSBOdW1iZXIoaG91ci5zcGxpdCgnLycpWzFdKTtcbiAgICAgICAgICAgIGhvdXIgPSBbTnVtYmVyKGhvdXIuc3BsaXQoJy8nKVswXSldO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdXIgIT09ICcqJykge1xuICAgICAgICAgICAgLy8gQ2FzZSAyOiBJZiBgaG91cmAgaXMgYSBzaW5nbGUgbnVtYmVyIChidXQgbm90IFwiKlwiKSwgZW5zdXJlIGl0J3MgYSBudW1iZXJcbiAgICAgICAgICAgIGhvdXIgPSBbTnVtYmVyKGhvdXIuc3BsaXQoJywnKVswXSldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzZSAzOiBJZiBgaG91cmAgaXMgXCIqXCIsIHNldCBpdCB0byAwXG4gICAgICAgICAgICBob3VyID0gWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IGRheU9mTW9udGggPT09ICdMJyA/IFsnTCddIDogdGhpcy5wYXJzZUNyb25BcnJheShkYXlPZk1vbnRoKTtcbiAgICAgICAgbW9udGggPSB0aGlzLnBhcnNlQ3JvbkFycmF5KG1vbnRoKTtcbiAgICAgICAgZGF5T2ZXZWVrID0gdGhpcy5wYXJzZUNyb25BcnJheShkYXlPZldlZWspO1xuICAgICAgICB0aW1lWm9uZSA9IHRpbWVab25lID8gTnVtYmVyKHRpbWVab25lKSA6IDA7XG5cbiAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlcmlvZCkge1xuICAgICAgICAgICAgdHlwZSA9IHRoaXMuX3BlcmlvZDtcbiAgICAgICAgfSBlbHNlIGlmIChtb250aD8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdHlwZSA9IENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUjtcbiAgICAgICAgfSBlbHNlIGlmIChtb250aD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0eXBlID0gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mTW9udGg/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdHlwZSA9IENyb25FZGl0b3JQZXJpb2QuTU9OVEg7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZXZWVrPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHR5cGUgPSBDcm9uRWRpdG9yUGVyaW9kLldFRUs7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlcnlYSG91cnMpIHtcbiAgICAgICAgICAgIHR5cGUgPSBDcm9uRWRpdG9yUGVyaW9kLkhPVVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0eXBlID0gQ3JvbkVkaXRvclBlcmlvZC5EQVk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV2ZXJ5ID0gdHlwZTtcbiAgICAgICAgdGhpcy5ldmVyeVhIb3VycyA9IGV2ZXJ5WEhvdXJzID8gZXZlcnlYSG91cnMgOiAxO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZTtcbiAgICAgICAgdGhpcy5ob3VyID0gaG91clswXSAlIDEyIHx8IDEyO1xuICAgICAgICB0aGlzLmRheU9mTW9udGggPSBkYXlPZk1vbnRoPy5bMF0gfHwgbnVsbDtcbiAgICAgICAgdGhpcy5tb250aCA9XG4gICAgICAgICAgICB0eXBlID09PSBDcm9uRWRpdG9yUGVyaW9kLlFVQVJURVIgPyBnZXRTdGFydE1vbnRoSW5RdWFydGVyKHRoaXMuX2Zpc2NhbFllYXJTdGFydCwgbW9udGgpIDogbW9udGg/LlswXSB8fCBudWxsO1xuICAgICAgICB0aGlzLmRheU9mV2VlayA9IHR5cGVvZiBkYXlPZldlZWs/LlswXSA9PT0gJ251bWJlcicgPyBkYXlPZldlZWtbMF0gOiBudWxsO1xuICAgICAgICB0aGlzLnRpbWVQZXJpb2QgPSBob3VyWzBdID49IDEyID8gQ3JvblRpbWVQZXJpb2QuUE0gOiBDcm9uVGltZVBlcmlvZC5BTTtcbiAgICAgICAgdGhpcy50aW1lWm9uZSA9IHRpbWVab25lO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VDcm9uQXJyYXkoc3RyOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gc3RyICE9PSAnKicgPyBzdHIuc3BsaXQoJywnKS5tYXAoKHYpID0+IE51bWJlcih2KSkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcm9uRWRpdG9yT2JqZWN0VG9TdHJpbmcoZXhjbHVkZVRpbWV6b25lOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtaW51dGUgPSB0aGlzLm1pbnV0ZSB8fCAwO1xuICAgICAgICBsZXQgaG91ciA9IHRoaXMuaG91ciB8fCAwO1xuICAgICAgICBob3VyID0gdGhpcy5ob3Vyc1RvMjRGb3JtYXQoaG91cik7XG4gICAgICAgIGxldCBob3VyT3JIb3Vyczogc3RyaW5nIHwgbnVtYmVyID0gaG91cjtcbiAgICAgICAgY29uc3QgZGF5T2ZNb250aCA9IHRoaXMuZGF5T2ZNb250aCB8fCAnKic7XG4gICAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9PT0gQ3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSIHx8IHRoaXMuZXZlcnkgPT09IENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlxuICAgICAgICAgICAgICAgID8gZ2V0UXVhcnRlclN0cmluZ0J5TW9udGhJblF1YXJ0ZXIodGhpcy5fZmlzY2FsWWVhclN0YXJ0LCB0aGlzLm1vbnRoKVxuICAgICAgICAgICAgICAgIDogdGhpcy5tb250aCB8fCAnKic7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHR5cGVvZiB0aGlzLmRheU9mV2VlayA9PT0gJ251bWJlcicgPyB0aGlzLmRheU9mV2VlayA6ICcqJztcblxuICAgICAgICBpZiAodGhpcy5ldmVyeSA9PT0gQ3JvbkVkaXRvclBlcmlvZC5IT1VSKSB7XG4gICAgICAgICAgICBob3VyT3JIb3VycyA9IGAke2hvdXJ9LyR7dGhpcy5ldmVyeVhIb3Vyc31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHttaW51dGV9ICR7aG91ck9ySG91cnN9ICR7ZGF5T2ZNb250aH0gJHttb250aH0gJHtkYXlPZldlZWt9JHshZXhjbHVkZVRpbWV6b25lID8gYCAke3RoaXMudGltZVpvbmV9YCA6ICcnfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGhvdXJzVG8yNEZvcm1hdChob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy50aW1lUGVyaW9kID09PSBDcm9uVGltZVBlcmlvZC5QTSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50aW1lUGVyaW9kID09PSBDcm9uVGltZVBlcmlvZC5BTSAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlYWRhYmxlU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RyaW5nID0gJ0V2ZXJ5ICc7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmV2ZXJ5KSB7XG4gICAgICAgICAgICBjYXNlIENyb25FZGl0b3JQZXJpb2QuWUVBUjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoTGFiZWwgPSBNT05USF9PRl9ZRUFSX0FSUkFZW3RoaXMubW9udGggLSAxXS5sYWJlbDtcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9PT0gJ0wnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGBsYXN0IGRheSBvZiAke21vbnRoTGFiZWx9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7bW9udGhMYWJlbH0gJHtEQVlfT0ZfTU9OVEhfQVJSQVlbKHRoaXMuZGF5T2ZNb250aCBhcyBudW1iZXIpIC0gMV0/LmxhYmVsfSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLlFVQVJURVI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb250aCA9IE1PTlRIX09GX1FVQVJURVJfQVJSQVlbdGhpcy5tb250aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgICAgIHZpc2libGVTdHJpbmcgKz1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID09PSAnTCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYHF1YXJ0ZXIgb24gdGhlIGxhc3QgZGF5IG9mIHRoZSAke21vbnRofSBtb250aCBvZiB0aGUgcXVhcnRlciBgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBxdWFydGVyIG9uIHRoZSAke21vbnRofSBtb250aCBvZiB0aGUgcXVhcnRlciBvbiAke0RBWV9PRl9NT05USF9BUlJBWVsodGhpcy5kYXlPZk1vbnRoIGFzIG51bWJlcikgLSAxXT8ubGFiZWx9IGRheSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLk1PTlRIOlxuICAgICAgICAgICAgICAgIHZpc2libGVTdHJpbmcgKz0gdGhpcy5kYXlPZk1vbnRoID09PSAnTCcgPyBgbW9udGggb24gdGhlIGxhc3QgZGF5IGAgOiBgbW9udGggb24gZGF5ICR7dGhpcy5kYXlPZk1vbnRofSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLldFRUs6XG4gICAgICAgICAgICAgICAgY29uc3QgZG93ID0gdHlwZW9mIHRoaXMuZGF5T2ZXZWVrID09PSAnbnVtYmVyJyA/IHRoaXMuZGF5T2ZXZWVrIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXlJbmRleCA9IGRvdyA+PSA3ID8gMCA6IGRvdztcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGAke0RBWV9PRl9XRUVLX0FSUkFZW2RheUluZGV4XS5sYWJlbH0gYDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3JvbkVkaXRvclBlcmlvZC5EQVk6XG4gICAgICAgICAgICAgICAgdmlzaWJsZVN0cmluZyArPSBgZGF5IGA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENyb25FZGl0b3JQZXJpb2QuSE9VUjpcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGAke3RoaXMuZXZlcnlYSG91cnN9IGhvdXIke3RoaXMuZXZlcnlYSG91cnMgPiAxID8gJ3MnIDogJyd9IGA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW51dGVQcmVmaXggPSB0aGlzLm1pbnV0ZSA8IDEwID8gJzAnIDogJyc7XG4gICAgICAgIGNvbnN0IGhvdXJQcmVmaXggPSB0aGlzLmhvdXIgPCAxMCA/ICcwJyA6ICcnO1xuICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGBhdCAke2hvdXJQcmVmaXggKyB0aGlzLmhvdXJ9OiR7bWludXRlUHJlZml4ICsgdGhpcy5taW51dGV9JHt0aGlzLnRpbWVQZXJpb2R9YDtcbiAgICAgICAgdmlzaWJsZVN0cmluZyArPSBgICgke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgPT09IHRoaXMudGltZVpvbmUgPyAnTG9jYWwgVGltZScgOiBnZXRHTVRMYWJlbCgtdGhpcy50aW1lWm9uZSl9KWA7XG4gICAgICAgIHJldHVybiB2aXNpYmxlU3RyaW5nO1xuICAgIH1cbn1cbiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWdCbkUsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsK0JBQVcsQ0FBQTtJQUNYLGlDQUFhLENBQUE7SUFDYixtQ0FBZSxDQUFBO0lBQ2YsdUNBQW1CLENBQUE7SUFDbkIsaUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQUlELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBYyxFQUFvQixFQUFFO0lBQ3ZFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV6QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7S0FDaEM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDO0tBQy9CO0lBRUQsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0tBQ2hDO0lBRUQsSUFBSSxXQUFX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QztRQUM3QyxhQUFhLElBQUksTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEcsYUFBYSxJQUFJLEtBQUssc0JBQXNCLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUMvRyxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAgYXMgX21hcCwgc29ydEJ5IGFzIF9zb3J0QnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0R01UTGFiZWwsIExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgfSBmcm9tICcuLi9kci1pbnB1dHMnO1xuXG5leHBvcnQgdHlwZSBURGF5T2ZNb250aCA9IG51bWJlciB8ICdMJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ3JvbkVkaXRvciB7XG4gICAgZXZlcnlYSG91cnM6IG51bWJlcjsgLy8gMSwyLDMsNCw2LDgsMTIgKG5vdCBpbmNsdWRpbmcgMjQgYmVjYXVzZSBldmVyeSAyNCBob3VycyBpcyBqdXN0IGRhaWx5KVxuICAgIGV2ZXJ5OiBDcm9uRWRpdG9yUGVyaW9kO1xuICAgIG1pbnV0ZTogbnVtYmVyO1xuICAgIGhvdXI6IG51bWJlcjtcbiAgICBkYXlPZk1vbnRoOiBURGF5T2ZNb250aDsgLy8gXCIxLTI4XCIgb3IgXCJMXCIgZm9yIHRoZSBsYXN0IGRheSBvZiBtb250aFxuICAgIG1vbnRoOiBudW1iZXI7IC8vIFwiMS0xMlwiXG4gICAgZGF5T2ZXZWVrOiBudW1iZXI7IC8vIFwiMC03XCJcbiAgICB0aW1lUGVyaW9kOiBDcm9uVGltZVBlcmlvZDtcbiAgICB0aW1lWm9uZTogbnVtYmVyOyAvLyAtMTQgLSArMTJcbn1cblxuZXhwb3J0IGVudW0gQ3JvbkVkaXRvclBlcmlvZCB7XG4gICAgSE9VUiA9ICdob3VyJyxcbiAgICBEQVkgPSAnZGF5JyxcbiAgICBXRUVLID0gJ3dlZWsnLFxuICAgIE1PTlRIID0gJ21vbnRoJyxcbiAgICBRVUFSVEVSID0gJ3F1YXJ0ZXInLFxuICAgIFlFQVIgPSAneWVhcicsXG59XG5cbmV4cG9ydCB0eXBlIFRDcm9uRWRpdG9yUGVyaW9kID0gJ2hvdXInIHwgJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG5leHBvcnQgY29uc3QgZGF0ZUZvcm1hdFRvQ3JvblBlcmlvZCA9IChmb3JtYXQ6IHN0cmluZyk6IENyb25FZGl0b3JQZXJpb2QgPT4ge1xuICAgIGNvbnN0IHVwcGVyRm9ybWF0ID0gZm9ybWF0LnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodXBwZXJGb3JtYXQuaW5jbHVkZXMoJ0gnKSkge1xuICAgICAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5IT1VSO1xuICAgIH1cblxuICAgIGlmICh1cHBlckZvcm1hdC5pbmNsdWRlcygnRCcpICYmICF1cHBlckZvcm1hdC5pbmNsdWRlcygnVycpKSB7XG4gICAgICAgIHJldHVybiBDcm9uRWRpdG9yUGVyaW9kLkRBWTtcbiAgICB9XG5cbiAgICBpZiAodXBwZXJGb3JtYXQuaW5jbHVkZXMoJ1cnKSkge1xuICAgICAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5XRUVLO1xuICAgIH1cblxuICAgIGlmICh1cHBlckZvcm1hdC5pbmNsdWRlcygnTScpICYmIHVwcGVyRm9ybWF0ICE9PSAnWVlZWScpIHtcbiAgICAgICAgcmV0dXJuIENyb25FZGl0b3JQZXJpb2QuTU9OVEg7XG4gICAgfVxuXG4gICAgaWYgKHVwcGVyRm9ybWF0LmluY2x1ZGVzKCdRJykpIHtcbiAgICAgICAgcmV0dXJuIENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUjtcbiAgICB9XG5cbiAgICByZXR1cm4gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluaXRpYWxRdWFydGVyQXJyYXkgPSAoZmlzY2FsWWVhciA9IDEsIG1vbnRoQXJyID0gWzEsIDQsIDcsIDEwXSk6IG51bWJlcltdID0+IHtcbiAgICBjb25zdCBmaXNjYWxPZmZzZXQgPSBmaXNjYWxZZWFyIC0gMTtcblxuICAgIGlmIChmaXNjYWxPZmZzZXQpIHtcbiAgICAgICAgbW9udGhBcnIgPSBfbWFwKG1vbnRoQXJyLCAobW9udGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IG1vbnRoICsgZmlzY2FsT2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHZhbCA+IDEyID8gdmFsIC0gMTIgOiB2YWw7XG4gICAgICAgIH0pO1xuICAgICAgICBtb250aEFyciA9IF9zb3J0QnkobW9udGhBcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aEFycjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdGFydE1vbnRoSW5RdWFydGVyID0gKGZpc2NhbFllYXIgPSAxLCBtb250aEFycjogbnVtYmVyW10gPSBbMSwgNCwgNywgMTBdKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBmaXNjYWxPZmZzZXQgPSBmaXNjYWxZZWFyIC0gMTtcbiAgICBsZXQgcXVhcnRlck1vbnRoID0gbW9udGhBcnJbMF0gfHwgMTtcblxuICAgIC8vIEJ5IGRlZmF1bHQgc2VsZWN0IGZpcnN0IHZhbHVlIGluIGFycmF5IHNpbmNlIGl0IGNhbiBiZSBvbmx5IDEtM1xuICAgIC8vIFZhbHVlIG11c3QgYmUgcmVjYWxjdWxhdGVkIGlmIGZpc2NhbCB5ZWFyIGRvZXNuJ3Qgc3RhcnQgZnJvbSBmaXJzdCBtb250aFxuICAgIC8vIEluIG1vbnRoW10gd2UgaGF2ZSBVVEMgdmFsdWVzLCB3ZSBuZWVkIHRvIHNob3cgZmlzY2FsIG1vbnRoIGluIHNlbGVjdGlvbi5cbiAgICAvLyBFeGFtcGxlOiBXZSB3YW50IHRvIHN0YXJ0IHRhc2sgaW4gM3JkIG1vbnRoIG9uIGVhY2ggZmlzY2FsIHF1YXJ0ZXIuXG4gICAgLy8gSWYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSAzIFRoZW4gbW9udGggc2hvdWxkIGJlIFsyLDUsOCwxMV0uXG4gICAgLy8gRmlyc3QgZmlzY2FsIHF1YXJ0ZXIgd2lsbCBiZSBmaW5pc2hlZCBpbiBtb250aCA1LCAyLTgsIDMtMTEsIDQtMihuZXh0IHllYXIpLlxuICAgIC8vIEZpc2NhbCBtb250aCA9IFsxMiwzLDYsOV0uIFByZXNlbnRlZCB2YWx1ZSBmb3IgdXNlcjogMy5cbiAgICBpZiAoZmlzY2FsT2Zmc2V0KSB7XG4gICAgICAgIG1vbnRoQXJyID0gX21hcChtb250aEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGl0ZW0gLSBmaXNjYWxPZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsIDwgMSA/IHZhbCArIDEyIDogdmFsO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9udGhBcnIgPSBfc29ydEJ5KG1vbnRoQXJyKTtcbiAgICAgICAgcXVhcnRlck1vbnRoID0gbW9udGhBcnJbMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1YXJ0ZXJNb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRRdWFydGVyU3RyaW5nQnlNb250aEluUXVhcnRlciA9IChmaXNjYWxZZWFyID0gMSwgbW9udGg6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCFtb250aCkge1xuICAgICAgICByZXR1cm4gJyonO1xuICAgIH1cblxuICAgIGxldCBtb250aEFyciA9IFttb250aCwgbW9udGggKyAzLCBtb250aCArIDYsIG1vbnRoICsgOV07XG4gICAgY29uc3QgZmlzY2FsT2Zmc2V0ID0gZmlzY2FsWWVhciAtIDE7XG5cbiAgICBpZiAoZmlzY2FsT2Zmc2V0KSB7XG4gICAgICAgIG1vbnRoQXJyID0gX21hcChtb250aEFyciwgKG1vbnRoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSBtb250aCArIGZpc2NhbE9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB2YWwgPiAxMiA/IHZhbCAtIDEyIDogdmFsO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9udGhBcnIgPSBfc29ydEJ5KG1vbnRoQXJyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9udGhBcnIuam9pbignLCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IENyb25FZGl0b3JEZWZhdWx0Q29uZmlnQnlQZXJpb2QgPSB7XG4gICAgW0Nyb25FZGl0b3JQZXJpb2QuSE9VUl06IChmWT86IG51bWJlcikgPT4gYDAgMTIvMSAqICogKiAke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVR9YCxcbiAgICBbQ3JvbkVkaXRvclBlcmlvZC5EQVldOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyICogKiAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLldFRUtdOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyICogKiAwICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLk1PTlRIXTogKGZZPzogbnVtYmVyKSA9PiBgMCAxMiAxICogKiAke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVR9YCxcbiAgICBbQ3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXTogKGZZPzogbnVtYmVyKSA9PiBgMCAxMiAxICR7Z2V0SW5pdGlhbFF1YXJ0ZXJBcnJheShmWSkuam9pbignLCcpfSAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxuICAgIFtDcm9uRWRpdG9yUGVyaW9kLllFQVJdOiAoZlk/OiBudW1iZXIpID0+IGAwIDEyIDEgMSAqICR7TE9DQUxfVElNRV9aT05FX09GRlNFVH1gLFxufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCA9ICh0eXBlOiBDcm9uRWRpdG9yUGVyaW9kKTogc3RyaW5nID0+XG4gICAgdHlwZSA9PT0gQ3JvbkVkaXRvclBlcmlvZC5EQVkgPyAnRGFpbHknIDogdHlwZSArICdseSc7XG5cbmV4cG9ydCBlbnVtIENyb25UaW1lUGVyaW9kIHtcbiAgICBBTSA9ICdBTScsXG4gICAgUE0gPSAnUE0nLFxufVxuXG5leHBvcnQgY29uc3QgSE9VUlNfRElWSVNJQkxFX0lOVE9fREFZID0gW1xuICAgIHsgbGFiZWw6ICcxJywgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiAnMicsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJzMnLCB2YWx1ZTogMyB9LFxuICAgIHsgbGFiZWw6ICc0JywgdmFsdWU6IDQgfSxcbiAgICB7IGxhYmVsOiAnNicsIHZhbHVlOiA2IH0sXG4gICAgeyBsYWJlbDogJzgnLCB2YWx1ZTogOCB9LFxuICAgIHsgbGFiZWw6ICcxMicsIHZhbHVlOiAxMiB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PTlRIX09GX1lFQVJfQVJSQVkgPSBbXG4gICAgeyBsYWJlbDogJ0phbnVhcnknLCB2YWx1ZTogMSB9LFxuICAgIHsgbGFiZWw6ICdGZWJydWFyeScsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJ01hcmNoJywgdmFsdWU6IDMgfSxcbiAgICB7IGxhYmVsOiAnQXByaWwnLCB2YWx1ZTogNCB9LFxuICAgIHsgbGFiZWw6ICdNYXknLCB2YWx1ZTogNSB9LFxuICAgIHsgbGFiZWw6ICdKdW5lJywgdmFsdWU6IDYgfSxcbiAgICB7IGxhYmVsOiAnSnVseScsIHZhbHVlOiA3IH0sXG4gICAgeyBsYWJlbDogJ0F1Z3VzdCcsIHZhbHVlOiA4IH0sXG4gICAgeyBsYWJlbDogJ1NlcHRlbWJlcicsIHZhbHVlOiA5IH0sXG4gICAgeyBsYWJlbDogJ09jdG9iZXInLCB2YWx1ZTogMTAgfSxcbiAgICB7IGxhYmVsOiAnTm92ZW1iZXInLCB2YWx1ZTogMTEgfSxcbiAgICB7IGxhYmVsOiAnRGVjZW1iZXInLCB2YWx1ZTogMTIgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBEQVlfT0ZfV0VFS19BUlJBWSA9IFtcbiAgICB7IGxhYmVsOiAnU3VuZGF5JywgdmFsdWU6IDAgfSxcbiAgICB7IGxhYmVsOiAnTW9uZGF5JywgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiAnVHVlc2RheScsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJ1dlZG5lc2RheScsIHZhbHVlOiAzIH0sXG4gICAgeyBsYWJlbDogJ1RodXJzZGF5JywgdmFsdWU6IDQgfSxcbiAgICB7IGxhYmVsOiAnRnJpZGF5JywgdmFsdWU6IDUgfSxcbiAgICB7IGxhYmVsOiAnU2F0dXJkYXknLCB2YWx1ZTogNiB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PTlRIX09GX1FVQVJURVJfQVJSQVkgPSBbXG4gICAgeyBsYWJlbDogJzFzdCcsIHZhbHVlOiAxIH0sXG4gICAgeyBsYWJlbDogJzJuZCcsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogJzNyZCcsIHZhbHVlOiAzIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgQUxMT1dFRF9QRVJJT0RTID0gT2JqZWN0LnZhbHVlcyhDcm9uRWRpdG9yUGVyaW9kKTtcblxuZXhwb3J0IGNvbnN0IGFkZE9yZGluYWxTdWZmaXggPSAobnVtOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHN1ZmZpeGVzID0gWyd0aCcsICdzdCcsICduZCcsICdyZCddO1xuICAgIGNvbnN0IHYgPSBudW0gJSAxMDA7XG5cbiAgICByZXR1cm4gbnVtICsgKHN1ZmZpeGVzWyh2IC0gMjApICUgMTBdIHx8IHN1ZmZpeGVzW3ZdIHx8IHN1ZmZpeGVzWzBdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBEQVlfT0ZfTU9OVEhfQVJSQVkgPSBuZXcgQXJyYXkoMjgpLmZpbGwobnVsbCkubWFwKCh2LCBpKSA9PiAoe1xuICAgIGxhYmVsOiBhZGRPcmRpbmFsU3VmZml4KGkgKyAxKSxcbiAgICB2YWx1ZTogaSArIDEsXG59KSk7XG5cbmV4cG9ydCBjb25zdCBMQVNUX0RBWV9PRl9NT05USCA9IHsgbGFiZWw6ICd0aGUgbGFzdCcsIHZhbHVlOiAnTCcgfTtcblxuZXhwb3J0IGNsYXNzIENyb25FZGl0b3IgaW1wbGVtZW50cyBJQ3JvbkVkaXRvciB7XG4gICAgcHJpdmF0ZSBfZmlzY2FsWWVhclN0YXJ0ID0gMTtcbiAgICBwcml2YXRlIF9wZXJpb2Q6IFRDcm9uRWRpdG9yUGVyaW9kO1xuXG4gICAgZXZlcnlYSG91cnM6IG51bWJlciA9IDE7XG4gICAgZGF5T2ZNb250aDogVERheU9mTW9udGggPSAxO1xuICAgIGRheU9mV2VlazogbnVtYmVyID0gMTtcbiAgICBldmVyeTogQ3JvbkVkaXRvclBlcmlvZCA9IENyb25FZGl0b3JQZXJpb2QuWUVBUjtcbiAgICBob3VyOiBudW1iZXIgPSAxMjtcbiAgICBtaW51dGU6IG51bWJlciA9IDA7XG4gICAgbW9udGg6IG51bWJlciA9IDE7XG4gICAgdGltZVBlcmlvZDogQ3JvblRpbWVQZXJpb2QgPSBDcm9uVGltZVBlcmlvZC5QTTtcbiAgICB0aW1lWm9uZTogbnVtYmVyID0gTE9DQUxfVElNRV9aT05FX09GRlNFVDtcblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBhcnNlQ3JvblN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jcm9uRWRpdG9yT2JqZWN0VG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHZhbHVlT2JqZWN0KHZhbHVlT2JqZWN0OiBJQ3JvbkVkaXRvcikge1xuICAgICAgICBpZiAoIXZhbHVlT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV2ZXJ5ID0gdmFsdWVPYmplY3QuZXZlcnk7XG4gICAgICAgIHRoaXMubWludXRlID0gdmFsdWVPYmplY3QubWludXRlO1xuICAgICAgICB0aGlzLmhvdXIgPSB2YWx1ZU9iamVjdC5ob3VyO1xuICAgICAgICB0aGlzLmRheU9mTW9udGggPSB2YWx1ZU9iamVjdC5kYXlPZk1vbnRoO1xuICAgICAgICB0aGlzLm1vbnRoID0gdmFsdWVPYmplY3QubW9udGg7XG4gICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gdmFsdWVPYmplY3QuZGF5T2ZXZWVrO1xuICAgICAgICB0aGlzLnRpbWVQZXJpb2QgPSB2YWx1ZU9iamVjdC50aW1lUGVyaW9kO1xuICAgICAgICB0aGlzLnRpbWVab25lID0gdmFsdWVPYmplY3QudGltZVpvbmU7XG4gICAgICAgIHRoaXMuZXZlcnlYSG91cnMgPSB2YWx1ZU9iamVjdC5ldmVyeVhIb3VycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlT2JqZWN0KCk6IElDcm9uRWRpdG9yIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV2ZXJ5OiB0aGlzLmV2ZXJ5LFxuICAgICAgICAgICAgbWludXRlOiB0aGlzLm1pbnV0ZSxcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cixcbiAgICAgICAgICAgIGRheU9mTW9udGg6IHRoaXMuZGF5T2ZNb250aCxcbiAgICAgICAgICAgIG1vbnRoOiB0aGlzLm1vbnRoLFxuICAgICAgICAgICAgZGF5T2ZXZWVrOiB0aGlzLmRheU9mV2VlayxcbiAgICAgICAgICAgIHRpbWVQZXJpb2Q6IHRoaXMudGltZVBlcmlvZCxcbiAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLnRpbWVab25lLFxuICAgICAgICAgICAgZXZlcnlYSG91cnM6IHRoaXMuZXZlcnlYSG91cnMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IodmFsdWU/OiBzdHJpbmcsIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMSwgcGVyaW9kPzogVENyb25FZGl0b3JQZXJpb2QpIHtcbiAgICAgICAgdGhpcy5fZmlzY2FsWWVhclN0YXJ0ID0gZmlzY2FsWWVhclN0YXJ0O1xuICAgICAgICB0aGlzLl9wZXJpb2QgPSBwZXJpb2Q7XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlQ3JvblN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBbbWludXRlLCBob3VyLCBkYXlPZk1vbnRoLCBtb250aCwgZGF5T2ZXZWVrLCB0aW1lWm9uZV06IGFueSA9IHZhbHVlLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgbWludXRlID0gbWludXRlICE9PSAnKicgPyBOdW1iZXIobWludXRlLnNwbGl0KCcsJylbMF0pIDogMDtcbiAgICAgICAgbGV0IGV2ZXJ5WEhvdXJzO1xuICAgICAgICBpZiAodHlwZW9mIGhvdXIgPT09ICdzdHJpbmcnICYmIGhvdXIuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICAgICAgLy8gQ2FzZSAxOiBJZiBgaG91cmAgaW5jbHVkZXMgLyB0byBpbmRpY2F0ZSBzdGVwIGNoYW5nZVxuICAgICAgICAgICAgZXZlcnlYSG91cnMgPSBOdW1iZXIoaG91ci5zcGxpdCgnLycpWzFdKTtcbiAgICAgICAgICAgIGhvdXIgPSBbTnVtYmVyKGhvdXIuc3BsaXQoJy8nKVswXSldO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdXIgIT09ICcqJykge1xuICAgICAgICAgICAgLy8gQ2FzZSAyOiBJZiBgaG91cmAgaXMgYSBzaW5nbGUgbnVtYmVyIChidXQgbm90IFwiKlwiKSwgZW5zdXJlIGl0J3MgYSBudW1iZXJcbiAgICAgICAgICAgIGhvdXIgPSBbTnVtYmVyKGhvdXIuc3BsaXQoJywnKVswXSldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzZSAzOiBJZiBgaG91cmAgaXMgXCIqXCIsIHNldCBpdCB0byAwXG4gICAgICAgICAgICBob3VyID0gWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IGRheU9mTW9udGggPT09ICdMJyA/IFsnTCddIDogdGhpcy5wYXJzZUNyb25BcnJheShkYXlPZk1vbnRoKTtcbiAgICAgICAgbW9udGggPSB0aGlzLnBhcnNlQ3JvbkFycmF5KG1vbnRoKTtcbiAgICAgICAgZGF5T2ZXZWVrID0gdGhpcy5wYXJzZUNyb25BcnJheShkYXlPZldlZWspO1xuICAgICAgICB0aW1lWm9uZSA9IHRpbWVab25lID8gTnVtYmVyKHRpbWVab25lKSA6IDA7XG5cbiAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlcmlvZCkge1xuICAgICAgICAgICAgdHlwZSA9IHRoaXMuX3BlcmlvZDtcbiAgICAgICAgfSBlbHNlIGlmIChtb250aD8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdHlwZSA9IENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUjtcbiAgICAgICAgfSBlbHNlIGlmIChtb250aD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0eXBlID0gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mTW9udGg/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdHlwZSA9IENyb25FZGl0b3JQZXJpb2QuTU9OVEg7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZXZWVrPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHR5cGUgPSBDcm9uRWRpdG9yUGVyaW9kLldFRUs7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlcnlYSG91cnMpIHtcbiAgICAgICAgICAgIHR5cGUgPSBDcm9uRWRpdG9yUGVyaW9kLkhPVVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0eXBlID0gQ3JvbkVkaXRvclBlcmlvZC5EQVk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV2ZXJ5ID0gdHlwZTtcbiAgICAgICAgdGhpcy5ldmVyeVhIb3VycyA9IGV2ZXJ5WEhvdXJzID8gZXZlcnlYSG91cnMgOiAxO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZTtcbiAgICAgICAgdGhpcy5ob3VyID0gaG91clswXSAlIDEyIHx8IDEyO1xuICAgICAgICB0aGlzLmRheU9mTW9udGggPSBkYXlPZk1vbnRoPy5bMF0gfHwgbnVsbDtcbiAgICAgICAgdGhpcy5tb250aCA9XG4gICAgICAgICAgICB0eXBlID09PSBDcm9uRWRpdG9yUGVyaW9kLlFVQVJURVIgPyBnZXRTdGFydE1vbnRoSW5RdWFydGVyKHRoaXMuX2Zpc2NhbFllYXJTdGFydCwgbW9udGgpIDogbW9udGg/LlswXSB8fCBudWxsO1xuICAgICAgICB0aGlzLmRheU9mV2VlayA9IHR5cGVvZiBkYXlPZldlZWs/LlswXSA9PT0gJ251bWJlcicgPyBkYXlPZldlZWtbMF0gOiBudWxsO1xuICAgICAgICB0aGlzLnRpbWVQZXJpb2QgPSBob3VyWzBdID49IDEyID8gQ3JvblRpbWVQZXJpb2QuUE0gOiBDcm9uVGltZVBlcmlvZC5BTTtcbiAgICAgICAgdGhpcy50aW1lWm9uZSA9IHRpbWVab25lO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VDcm9uQXJyYXkoc3RyOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gc3RyICE9PSAnKicgPyBzdHIuc3BsaXQoJywnKS5tYXAoKHYpID0+IE51bWJlcih2KSkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcm9uRWRpdG9yT2JqZWN0VG9TdHJpbmcoZXhjbHVkZVRpbWV6b25lOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtaW51dGUgPSB0aGlzLm1pbnV0ZSB8fCAwO1xuICAgICAgICBsZXQgaG91ciA9IHRoaXMuaG91ciB8fCAwO1xuICAgICAgICBob3VyID0gdGhpcy5ob3Vyc1RvMjRGb3JtYXQoaG91cik7XG4gICAgICAgIGxldCBob3VyT3JIb3Vyczogc3RyaW5nIHwgbnVtYmVyID0gaG91cjtcbiAgICAgICAgY29uc3QgZGF5T2ZNb250aCA9IHRoaXMuZGF5T2ZNb250aCB8fCAnKic7XG4gICAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9PT0gQ3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSIHx8IHRoaXMuZXZlcnkgPT09IENyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlxuICAgICAgICAgICAgICAgID8gZ2V0UXVhcnRlclN0cmluZ0J5TW9udGhJblF1YXJ0ZXIodGhpcy5fZmlzY2FsWWVhclN0YXJ0LCB0aGlzLm1vbnRoKVxuICAgICAgICAgICAgICAgIDogdGhpcy5tb250aCB8fCAnKic7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHR5cGVvZiB0aGlzLmRheU9mV2VlayA9PT0gJ251bWJlcicgPyB0aGlzLmRheU9mV2VlayA6ICcqJztcblxuICAgICAgICBpZiAodGhpcy5ldmVyeSA9PT0gQ3JvbkVkaXRvclBlcmlvZC5IT1VSKSB7XG4gICAgICAgICAgICBob3VyT3JIb3VycyA9IGAke2hvdXJ9LyR7dGhpcy5ldmVyeVhIb3Vyc31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHttaW51dGV9ICR7aG91ck9ySG91cnN9ICR7ZGF5T2ZNb250aH0gJHttb250aH0gJHtkYXlPZldlZWt9JHshZXhjbHVkZVRpbWV6b25lID8gYCAke3RoaXMudGltZVpvbmV9YCA6ICcnfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGhvdXJzVG8yNEZvcm1hdChob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy50aW1lUGVyaW9kID09PSBDcm9uVGltZVBlcmlvZC5QTSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50aW1lUGVyaW9kID09PSBDcm9uVGltZVBlcmlvZC5BTSAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlYWRhYmxlU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RyaW5nID0gJ0V2ZXJ5ICc7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmV2ZXJ5KSB7XG4gICAgICAgICAgICBjYXNlIENyb25FZGl0b3JQZXJpb2QuWUVBUjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoTGFiZWwgPSBNT05USF9PRl9ZRUFSX0FSUkFZW3RoaXMubW9udGggLSAxXS5sYWJlbDtcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9PT0gJ0wnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGBsYXN0IGRheSBvZiAke21vbnRoTGFiZWx9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7bW9udGhMYWJlbH0gJHtEQVlfT0ZfTU9OVEhfQVJSQVlbKHRoaXMuZGF5T2ZNb250aCBhcyBudW1iZXIpIC0gMV0/LmxhYmVsfSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLlFVQVJURVI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb250aCA9IE1PTlRIX09GX1FVQVJURVJfQVJSQVlbdGhpcy5tb250aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgICAgIHZpc2libGVTdHJpbmcgKz1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID09PSAnTCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYHF1YXJ0ZXIgb24gdGhlIGxhc3QgZGF5IG9mIHRoZSAke21vbnRofSBtb250aCBvZiB0aGUgcXVhcnRlciBgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBxdWFydGVyIG9uIHRoZSAke21vbnRofSBtb250aCBvZiB0aGUgcXVhcnRlciBvbiAke0RBWV9PRl9NT05USF9BUlJBWVsodGhpcy5kYXlPZk1vbnRoIGFzIG51bWJlcikgLSAxXT8ubGFiZWx9IGRheSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLk1PTlRIOlxuICAgICAgICAgICAgICAgIHZpc2libGVTdHJpbmcgKz0gdGhpcy5kYXlPZk1vbnRoID09PSAnTCcgPyBgbW9udGggb24gdGhlIGxhc3QgZGF5IGAgOiBgbW9udGggb24gZGF5ICR7dGhpcy5kYXlPZk1vbnRofSBgO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDcm9uRWRpdG9yUGVyaW9kLldFRUs6XG4gICAgICAgICAgICAgICAgY29uc3QgZG93ID0gdHlwZW9mIHRoaXMuZGF5T2ZXZWVrID09PSAnbnVtYmVyJyA/IHRoaXMuZGF5T2ZXZWVrIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXlJbmRleCA9IGRvdyA+PSA3ID8gMCA6IGRvdztcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGAke0RBWV9PRl9XRUVLX0FSUkFZW2RheUluZGV4XS5sYWJlbH0gYDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3JvbkVkaXRvclBlcmlvZC5EQVk6XG4gICAgICAgICAgICAgICAgdmlzaWJsZVN0cmluZyArPSBgZGF5IGA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENyb25FZGl0b3JQZXJpb2QuSE9VUjpcbiAgICAgICAgICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGAke3RoaXMuZXZlcnlYSG91cnN9IGhvdXIke3RoaXMuZXZlcnlYSG91cnMgPiAxID8gJ3MnIDogJyd9IGA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW51dGVQcmVmaXggPSB0aGlzLm1pbnV0ZSA8IDEwID8gJzAnIDogJyc7XG4gICAgICAgIGNvbnN0IGhvdXJQcmVmaXggPSB0aGlzLmhvdXIgPCAxMCA/ICcwJyA6ICcnO1xuICAgICAgICB2aXNpYmxlU3RyaW5nICs9IGBhdCAke2hvdXJQcmVmaXggKyB0aGlzLmhvdXJ9OiR7bWludXRlUHJlZml4ICsgdGhpcy5taW51dGV9JHt0aGlzLnRpbWVQZXJpb2R9YDtcbiAgICAgICAgdmlzaWJsZVN0cmluZyArPSBgICgke0xPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgPT09IHRoaXMudGltZVpvbmUgPyAnTG9jYWwgVGltZScgOiBnZXRHTVRMYWJlbCgtdGhpcy50aW1lWm9uZSl9KWA7XG4gICAgICAgIHJldHVybiB2aXNpYmxlU3RyaW5nO1xuICAgIH1cbn1cbiJdfQ==