ngx-sumax-erp-components 1.8.0 → 1.8.1

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.
@@ -138,14 +138,6 @@ export class DateTimePickerComponent {
138
138
  // }
139
139
  //console.log(evt);
140
140
  // }
141
- focusOut(event) {
142
- if (event.target.ariaLabel == 'Minutes') {
143
- this.ngbDatepicker.close();
144
- if (this.goNextWhenSelect) {
145
- this.goNext();
146
- }
147
- }
148
- }
149
141
  onModelDateChange(evt) {
150
142
  this.input = new DateTimeModel(Object.assign(this.date, this.time));
151
143
  const emitValue = this.datePipe.transform(this.input, 'yyyy-MM-ddTHH:mm');
@@ -280,7 +272,7 @@ export class DateTimePickerComponent {
280
272
  I18n,
281
273
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
282
274
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
283
- ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: ["d"], descendants: true }, { propertyName: "timePicker", first: true, predicate: ["tp"], descendants: true }, { propertyName: "btnOpen", first: true, predicate: ["btnOpen"], descendants: true }, { propertyName: "btnClean", first: true, predicate: ["btnClean"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n class=\"position-relative\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\n <!-- tooltip-message es el icono de error -->\n\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n <div class=\"input-group mr-2\">\n <input name=\"input\" type=\"text\" class=\"form-control form-control-sm\" [disabled]=\"true\" [ngModel]=\"input | date: inputDatetimeFormat\" />\n <input\n class=\"form-control form-control-sm\"\n container=\"body\"\n [readonly]=\"true\"\n placeholder=\"dd/mm/yyyy\"\n name=\"dp\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onModelDateChange($event)\"\n [autoClose]=\"'outside'\"\n ngbDatepicker\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d=\"ngbDatepicker\" />\n <!-- (dateSelect)=\"onDateSelect($event)\" -->\n <div class=\"input-group-append\">\n <button\n #btnOpen\n class=\"btn btn-info p-0 rounded-0 h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"open(d)\"\n (keyup.ArrowLeft)=\"goBack()\"\n (keyup.ArrowRight)=\"btnClean.focus()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n class=\"btn btn-danger p-0 rounded-0 limpiar h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"limpiar()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #footerTemplate>\n <hr class=\"my-0\" />\n <ngb-timepicker #tp [(ngModel)]=\"time\" name=\"timepicker\" (ngModelChange)=\"onModelDateChange($event)\" (focusout)=\"focusOut($event)\">\n </ngb-timepicker>\n</ng-template>\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n", styles: [".sumax-label{color:#646c9a!important}button[disabled]{pointer-events:none}.input-group i{color:#212529}.input-group input:nth-child(1){position:absolute;width:100%}.input-group input:nth-child(2){position:relative;visibility:hidden}.input-group .input-group-append{background-color:#fff;z-index:1;border-left:1px solid #e2e5ec}.form-control[readonly]{background-color:#f7f8fa;opacity:1}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:55px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
275
+ ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: ["d"], descendants: true }, { propertyName: "timePicker", first: true, predicate: ["tp"], descendants: true }, { propertyName: "btnOpen", first: true, predicate: ["btnOpen"], descendants: true }, { propertyName: "btnClean", first: true, predicate: ["btnClean"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n class=\"position-relative\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\n <!-- tooltip-message es el icono de error -->\n\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n <div class=\"input-group mr-2\">\n <input name=\"input\" type=\"text\" class=\"form-control form-control-sm\" [disabled]=\"true\" [ngModel]=\"input | date: inputDatetimeFormat\" />\n <input\n class=\"form-control form-control-sm\"\n container=\"body\"\n [readonly]=\"true\"\n placeholder=\"dd/mm/yyyy\"\n name=\"dp\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onModelDateChange($event)\"\n [autoClose]=\"'outside'\"\n ngbDatepicker\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d=\"ngbDatepicker\" />\n <!-- (dateSelect)=\"onDateSelect($event)\" -->\n <div class=\"input-group-append\">\n <button\n #btnOpen\n class=\"btn btn-info p-0 rounded-0 h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"open(d)\"\n (keyup.ArrowLeft)=\"goBack()\"\n (keyup.ArrowRight)=\"btnClean.focus()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n class=\"btn btn-danger p-0 rounded-0 limpiar h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"limpiar()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #footerTemplate>\n <hr class=\"my-0\" />\n <ngb-timepicker #tp [(ngModel)]=\"time\" name=\"timepicker\" (ngModelChange)=\"onModelDateChange($event)\"></ngb-timepicker>\n</ng-template>\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n", styles: [".sumax-label{color:#646c9a!important}button[disabled]{pointer-events:none}.input-group i{color:#212529}.input-group input:nth-child(1){position:absolute;width:100%}.input-group input:nth-child(2){position:relative;visibility:hidden}.input-group .input-group-append{background-color:#fff;z-index:1;border-left:1px solid #e2e5ec}.form-control[readonly]{background-color:#f7f8fa;opacity:1}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:55px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
284
276
  }
285
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateTimePickerComponent, decorators: [{
286
278
  type: Component,
@@ -298,7 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
298
290
  I18n,
299
291
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
300
292
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
301
- ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n class=\"position-relative\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\n <!-- tooltip-message es el icono de error -->\n\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n <div class=\"input-group mr-2\">\n <input name=\"input\" type=\"text\" class=\"form-control form-control-sm\" [disabled]=\"true\" [ngModel]=\"input | date: inputDatetimeFormat\" />\n <input\n class=\"form-control form-control-sm\"\n container=\"body\"\n [readonly]=\"true\"\n placeholder=\"dd/mm/yyyy\"\n name=\"dp\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onModelDateChange($event)\"\n [autoClose]=\"'outside'\"\n ngbDatepicker\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d=\"ngbDatepicker\" />\n <!-- (dateSelect)=\"onDateSelect($event)\" -->\n <div class=\"input-group-append\">\n <button\n #btnOpen\n class=\"btn btn-info p-0 rounded-0 h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"open(d)\"\n (keyup.ArrowLeft)=\"goBack()\"\n (keyup.ArrowRight)=\"btnClean.focus()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n class=\"btn btn-danger p-0 rounded-0 limpiar h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"limpiar()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #footerTemplate>\n <hr class=\"my-0\" />\n <ngb-timepicker #tp [(ngModel)]=\"time\" name=\"timepicker\" (ngModelChange)=\"onModelDateChange($event)\" (focusout)=\"focusOut($event)\">\n </ngb-timepicker>\n</ng-template>\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n", styles: [".sumax-label{color:#646c9a!important}button[disabled]{pointer-events:none}.input-group i{color:#212529}.input-group input:nth-child(1){position:absolute;width:100%}.input-group input:nth-child(2){position:relative;visibility:hidden}.input-group .input-group-append{background-color:#fff;z-index:1;border-left:1px solid #e2e5ec}.form-control[readonly]{background-color:#f7f8fa;opacity:1}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:55px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
293
+ ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n class=\"position-relative\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\n <!-- tooltip-message es el icono de error -->\n\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n <div class=\"input-group mr-2\">\n <input name=\"input\" type=\"text\" class=\"form-control form-control-sm\" [disabled]=\"true\" [ngModel]=\"input | date: inputDatetimeFormat\" />\n <input\n class=\"form-control form-control-sm\"\n container=\"body\"\n [readonly]=\"true\"\n placeholder=\"dd/mm/yyyy\"\n name=\"dp\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onModelDateChange($event)\"\n [autoClose]=\"'outside'\"\n ngbDatepicker\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d=\"ngbDatepicker\" />\n <!-- (dateSelect)=\"onDateSelect($event)\" -->\n <div class=\"input-group-append\">\n <button\n #btnOpen\n class=\"btn btn-info p-0 rounded-0 h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"open(d)\"\n (keyup.ArrowLeft)=\"goBack()\"\n (keyup.ArrowRight)=\"btnClean.focus()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n class=\"btn btn-danger p-0 rounded-0 limpiar h-100\"\n [disabled]=\"isDisabled || readonly\"\n (click)=\"limpiar()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #footerTemplate>\n <hr class=\"my-0\" />\n <ngb-timepicker #tp [(ngModel)]=\"time\" name=\"timepicker\" (ngModelChange)=\"onModelDateChange($event)\"></ngb-timepicker>\n</ng-template>\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n", styles: [".sumax-label{color:#646c9a!important}button[disabled]{pointer-events:none}.input-group i{color:#212529}.input-group input:nth-child(1){position:absolute;width:100%}.input-group input:nth-child(2){position:relative;visibility:hidden}.input-group .input-group-append{background-color:#fff;z-index:1;border-left:1px solid #e2e5ec}.form-control[readonly]{background-color:#f7f8fa;opacity:1}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:55px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
302
294
  }], ctorParameters: () => [{ type: i1.NgbCalendar }, { type: i2.DatePipe }, { type: i3.DateTimePickerService }, { type: i0.Renderer2 }], propDecorators: { inputDatetimeFormat: [{
303
295
  type: Input
304
296
  }], label: [{
@@ -348,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
348
340
  type: ViewChild,
349
341
  args: ['btnClean']
350
342
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVMLHNCQUFzQixFQUV0QixpQkFBaUIsRUFJbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUF1QnZELE1BQU0sT0FBTyx1QkFBdUI7SUF5SWxDLFlBQ1UsUUFBcUIsRUFDckIsUUFBa0IsRUFDbEIscUJBQTRDLEVBQzVDLE9BQWtCO1FBSGxCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUExSTVCOzs7OztVQUtFO1FBQ08sd0JBQW1C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c0JBQWYsTUFBTTtnQkFFUyxhQUFhO3NCQUE1QixTQUFTO3VCQUFDLEdBQUc7Z0JBQ0csVUFBVTtzQkFBMUIsU0FBUzt1QkFBQyxJQUFJO2dCQUNPLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTmdiQ2FsZW5kYXIsXG4gIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsXG4gIE5nYkRhdGVTdHJ1Y3QsXG4gIE5nYkRhdGVwaWNrZXJJMThuLFxuICBOZ2JJbnB1dERhdGVwaWNrZXIsXG4gIE5nYlRpbWVTdHJ1Y3QsXG4gIE5nYlRpbWVwaWNrZXJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tICcuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VySTE4bic7XG5pbXBvcnQgeyBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdCc7XG5pbXBvcnQgeyBEYXRlVGltZU1vZGVsIH0gZnJvbSAnLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGUtdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBJMThuLFxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LFxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgbGEgZmVjaGE6XG4gICogJ2RkL01NL3l5eXkgSEg6bW0nIC0gJ2RkL01NL3l5eXkgSEg6bW06c3MnIC0gJ00vZC95eXl5IEg6bW06c3MnXG4gICogQGRlZmF1bHQgJ2RkL01NL3l5eXkgSEg6bW0nXG4gICogQHR5cGUge3N0cmluZ31cbiAgKi9cbiAgQElucHV0KCkgaW5wdXREYXRldGltZUZvcm1hdDogc3RyaW5nID0gJ2RkL01NL3l5eXkgSEg6bW0nO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFRleHRvIGEgbW9zdHJhciBjb21vIGV0aXF1ZXRhIGRlbCBjYW1wb1xuICAqIEBkZWZhdWx0ICcnXG4gICogQHR5cGUgc3RyaW5nXG4gICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3IgKGxhYmVsKVxuICAqIEBkZWZhdWx0IHRydWVcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcbiAgKiBAZGVmYXVsdCBmYWxzZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBJbmRpY2Egc2kgZWwgY2FtcG8gZXMgb2JsaWdhdG9yaW9cbiAgKiBAZGVmYXVsdCBmYWxzZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIHZhbGlkYWNpw7NuXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIGF5dWRhIGNvbW8gdG9vbHRpcHNcbiAgKiBAZGVmYXVsdCB0cnVlXG4gICogQHR5cGUgYm9vbGVhblxuICAqL1xuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcbiAgKiBAZGVmYXVsdCB0cnVlXG4gICogQHR5cGUgYm9vbGVhblxuICAqL1xuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgc2lndWllbnRlIGNvbnRyb2wgcGFyYSBuYXZlZ2FjacOzblxuICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAqIEB0eXBlIGFueVxuICAqL1xuICBASW5wdXQoKSBuZXh0OiBhbnk7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBzaWd1aWVudGUgZXN0w6EgZGVzaGFiaWxpdGFkb1xuICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAqIEB0eXBlIGFueVxuICAqL1xuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFudGVyaW9yIHBhcmEgbmF2ZWdhY2nDs25cbiAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKiBAdHlwZSBhbnlcbiAgKi9cbiAgQElucHV0KCkgYmFjazogYW55O1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgYW50ZXJpb3IgZXN0w6EgZGVzaGFiaWxpdGFkb1xuICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAqIEB0eXBlIGFueVxuICAqL1xuICBASW5wdXQoKSBiYWNrSXNEaXNhYmxlOiBhbnk7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIGV0aXF1ZXRhXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFRleHRvIGluZm9ybWF0aXZvIGFkaWNpb25hbCBwYXJhIGxhIGV0aXF1ZXRhXG4gICogQGRlZmF1bHQgJydcbiAgKiBAdHlwZSBzdHJpbmdcbiAgKi9cbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gJyc7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gQWJyZSBlbCBzZWxlY3RvciBhbCByZWNpYmlyIGVsIGZvY29cbiAgKiBAZGVmYXVsdCBmYWxzZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgb3BlbldoZW5Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIE5hdmVnYSBhbCBzaWd1aWVudGUgY29udHJvbCBhbCBzZWxlY2Npb25hciB1bmEgZmVjaGFcbiAgKiBAZGVmYXVsdCBmYWxzZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgZ29OZXh0V2hlblNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnZCcpIG5nYkRhdGVwaWNrZXIhOiBOZ2JJbnB1dERhdGVwaWNrZXI7XG4gIEBWaWV3Q2hpbGQoJ3RwJykgdGltZVBpY2tlciE6IE5nYlRpbWVwaWNrZXI7XG4gIEBWaWV3Q2hpbGQoJ2J0bk9wZW4nKSBidG5PcGVuITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYnRuQ2xlYW4nKSBidG5DbGVhbiE6IEVsZW1lbnRSZWY7XG5cbiAgY29udHJvbHM/OiBBYnN0cmFjdENvbnRyb2w7XG4gIHRvZGF5ID0gdGhpcy5jYWxlbmRhci5nZXRUb2RheSgpO1xuICBkYXRlOiBOZ2JEYXRlU3RydWN0IHwgYW55ID0gdGhpcy50b2RheTtcbiAgdGltZTogTmdiVGltZVN0cnVjdCA9IHtcbiAgICBob3VyOiBuZXcgRGF0ZSgpLmdldEhvdXJzKCksXG4gICAgbWludXRlOiBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSxcbiAgICBzZWNvbmQ6IG5ldyBEYXRlKCkuZ2V0U2Vjb25kcygpLFxuICB9O1xuICBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGUsIHRoaXMudGltZSkpO1xuICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgX3RlbXBWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIF9pbml0VmFsdWUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNhbGVuZGFyOiBOZ2JDYWxlbmRhcixcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGRhdGVUaW1lUGlja2VyU2VydmljZTogRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHRoaXMuaW5wdXREYXRldGltZUZvcm1hdCA9XG4gICAgICB0aGlzLmRhdGVUaW1lUGlja2VyU2VydmljZS5nZXRJbnB1dERhdGV0aW1lRm9ybWF0KCk7XG4gICAgdGhpcy5zaG93TGFiZWwgPSB0aGlzLmRhdGVUaW1lUGlja2VyU2VydmljZS5nZXRTaG93TGFiZWwoKTtcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLmRhdGVUaW1lUGlja2VyU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XG4gICAgdGhpcy5nb05leHRXaGVuU2VsZWN0ID0gdGhpcy5kYXRlVGltZVBpY2tlclNlcnZpY2UuZ2V0R29OZXh0V2hlblNlbGVjdCgpO1xuICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuZGF0ZVRpbWVQaWNrZXJTZXJ2aWNlLmdldFZhbGlkYXRvck1lc3NhZ2UoKTtcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5kYXRlVGltZVBpY2tlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRoaXMuZGF0ZVRpbWVQaWNrZXJTZXJ2aWNlLmdldFN1Ym1pdHRlZCgpO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25WYWxpZGF0aW9uQ2hhbmdlID0gKCkgPT4ge307XG4gIG9uVG91Y2ggPSAoKSA9PiB7fTtcbiAgZm9jdXMgPSAoKSA9PiB7XG4gICAgdGhpcy5idG5PcGVuLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgdGhpcy5vcGVuV2hlbkZvY3VzKSB7XG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXIub3BlbigpO1xuICAgIH1cbiAgfTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3N1Ym1pdHRlZCddKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9scyAhPT0gdW5kZWZpbmVkICYmIGNoYW5nZXNbJ3N1Ym1pdHRlZCddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge31cblxuICAvLyBvbkRhdGVTZWxlY3QoZXZ0OiBhbnkpIHtcbiAgLy90aGlzLm5nYkRhdGVwaWNrZXIuY2xvc2UoKTtcbiAgLy8gaWYgKHRoaXMuZ29OZXh0V2hlblNlbGVjdCkge1xuICAvLyBcdHRoaXMuZ29OZXh0KCk7XG4gIC8vIH1cbiAgLy9jb25zb2xlLmxvZyhldnQpO1xuICAvLyB9XG5cbiAgZm9jdXNPdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudC50YXJnZXQuYXJpYUxhYmVsID09ICdNaW51dGVzJykge1xuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyLmNsb3NlKCk7XG4gICAgICBpZiAodGhpcy5nb05leHRXaGVuU2VsZWN0KSB7XG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Nb2RlbERhdGVDaGFuZ2UoZXZ0OiBOZ2JEYXRlU3RydWN0IHwgTmdiVGltZVN0cnVjdCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXQgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZSwgdGhpcy50aW1lKSk7XG4gICAgY29uc3QgZW1pdFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5pbnB1dCwgJ3l5eXktTU0tZGRUSEg6bW0nKTtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGVtaXRWYWx1ZSk7XG4gIH1cblxuICBsaW1waWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZSA9IG51bGw7XG4gICAgdGhpcy50aW1lID0geyBtaW51dGU6IDAsIGhvdXI6IDAsIHNlY29uZDogMCB9O1xuICAgIHRoaXMuaW5wdXQgPSBudWxsO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG5ld01vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmlucHV0ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGUsIHRoaXMudGltZSkpO1xuICAgIGlmIChuZXdNb2RlbCkge1xuICAgICAgLy8gdGhpcy5pbnB1dCA9IE9iamVjdC5hc3NpZ24oIXRoaXMuaW5wdXQsIERhdGVUaW1lTW9kZWwuZnJvbUxvY2FsU3RyaW5nKG5ld01vZGVsKSk7XG4gICAgICBpZiAoIXRoaXMuaW5wdXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IERhdGVUaW1lTW9kZWwuZnJvbUxvY2FsU3RyaW5nKG5ld01vZGVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHRoaXMuaW5wdXQsXG4gICAgICAgICAgRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcobmV3TW9kZWwpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuaW5wdXQ7XG4gICAgICB0aGlzLnRpbWUgPSB7XG4gICAgICAgIGhvdXI6IHRoaXMuaW5wdXQuaG91cixcbiAgICAgICAgbWludXRlOiB0aGlzLmlucHV0Lm1pbnV0ZSxcbiAgICAgICAgc2Vjb25kOiB0aGlzLmlucHV0LnNlY29uZCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX3RlbXBWYWx1ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuaW5wdXQsICd5eXl5LU1NLWRkVEhIOm1tJyk7XG4gICAgICAvLyB0aGlzLm9uVG91Y2goKTtcblxuICAgICAgaWYgKHRoaXMuY29udHJvbHMpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIHRoaXMuX3RlbXBWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFncmVndWUgZWwgbGltcGlhciBwYXJhIHF1ZSBjYXJndWUgdmFjaW8gc2kgc2UgbGUgc2V0ZWEgdmFjaW8gbyBudWxsXG4gICAgICB0aGlzLmxpbXBpYXIoKTtcbiAgICAgIC8vIHRoaXMuaW5wdXQgPSBuZXcgRGF0ZVRpbWVNb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2w7XG5cbiAgICBpZiAoIXRoaXMuX2luaXRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSkge1xuICAgICAgICB0aGlzLl9yZW5kZXIuc2V0UHJvcGVydHkoY29udHJvbCwgJ3ZhbHVlJywgdGhpcy5fdGVtcFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2luaXRWYWx1ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgb3BlbihkOiBOZ2JJbnB1dERhdGVwaWNrZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5kYXRlID0gdGhpcy50b2RheTtcbiAgICAgIHRoaXMudGltZSA9IHtcbiAgICAgICAgaG91cjogbmV3IERhdGUoKS5nZXRIb3VycygpLFxuICAgICAgICBtaW51dGU6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpLFxuICAgICAgICBzZWNvbmQ6IG5ldyBEYXRlKCkuZ2V0U2Vjb25kcygpLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5wdXQgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZSwgdGhpcy50aW1lKSk7XG4gICAgICBjb25zdCBlbWl0VmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmlucHV0LCAneXl5eS1NTS1kZFRISDptbScpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKGVtaXRWYWx1ZSk7XG4gICAgfVxuICAgIC8vYWJyaXIgZWwgZGF0ZXRpbWVcbiAgICBkLm9wZW4oKTtcbiAgfVxuXG4gIGdvTmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZXh0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXh0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbk5leHQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdvQmFjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iYWNrICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcbiAgICAgICAgaWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5iYWNrLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkJhY2suZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPSAnJyAmJiBzaG93TGFiZWxcIiBjbGFzcz1cImQtZmxleCBzdW1heC1sYWJlbCBtYi0wIHAtMFwiXG4gID48c3BhbiBbdGl0bGVdPVwibGFiZWxcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cIm1zLTFcIiBbY2xhc3MudGV4dC1kYW5nZXJdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsXCI+ICo8L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwibGFiZWxJbmZvXCI+XG4gICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUgdGV4dC1pbmZvIG1zLTJcIiBbbWF0VG9vbHRpcF09XCJ0ZXh0TGFiZWxJbmZvXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctaW5mb1wiPjwvaT5cbiAgPC9zcGFuPlxuPC9sYWJlbD5cbjxkaXZcbiAgW2NsYXNzLmlucHV0LWljb25dPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXG4gIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIlxuICBbY2xhc3MucmlnaHRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiPlxuICA8IS0tIHRvb2x0aXAtbWVzc2FnZSBlcyBlbCBpY29ubyBkZSBlcnJvciAtLT5cblxuICA8dG9vbHRpcC1tZXNzYWdlXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxuICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxuICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiXG4gICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1yLTJcIj5cbiAgICA8aW5wdXQgbmFtZT1cImlucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtuZ01vZGVsXT1cImlucHV0IHwgZGF0ZTogaW5wdXREYXRldGltZUZvcm1hdFwiIC8+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIlxuICAgICAgbmFtZT1cImRwXCJcbiAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXG4gICAgICBbbWluRGF0ZV09XCJ7IHllYXI6IDE5NjAsIG1vbnRoOiAxLCBkYXk6IDEgfVwiXG4gICAgICAjZD1cIm5nYkRhdGVwaWNrZXJcIiAvPlxuICAgIDwhLS0gKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0KCRldmVudClcIiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICNidG5PcGVuXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKGQpXCJcbiAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJnb0JhY2soKVwiXG4gICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImJ0bkNsZWFuLmZvY3VzKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0NhbGVuZGFyaW8nXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctaW5mb1wiPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgdGV4dC1saWdodCBweC0xXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICNidG5DbGVhblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHAtMCByb3VuZGVkLTAgbGltcGlhciBoLTEwMFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgKGNsaWNrKT1cImxpbXBpYXIoKVwiXG4gICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiYnRuT3Blbi5mb2N1cygpXCJcbiAgICAgICAgKGtleXVwLkFycm93UmlnaHQpPVwiZ29OZXh0KClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0xpbXBpYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctZGFuZ2VyXCI+Y2xvc2U8L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS10aW1lcyBweC0xIHRleHQtbGlnaHRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGhyIGNsYXNzPVwibXktMFwiIC8+XG4gIDxuZ2ItdGltZXBpY2tlciAjdHAgWyhuZ01vZGVsKV09XCJ0aW1lXCIgbmFtZT1cInRpbWVwaWNrZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsRGF0ZUNoYW5nZSgkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0KCRldmVudClcIj5cbiAgPC9uZ2ItdGltZXBpY2tlcj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIGVycm9yLW1lc3NhZ2UgZXMgZWwgbWFuc2FqZSBxdWUgYXBhcmVjZSBhYmFqbyBkZWwgY29tcG9uZW50ZSAtLT5cbjxlcnJvci1tZXNzYWdlXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtjb250cm9sc109XCJjb250cm9sc1wiXG4gIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxuICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxuICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvZXJyb3ItbWVzc2FnZT5cbiJdfQ==
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVMLHNCQUFzQixFQUV0QixpQkFBaUIsRUFJbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUF1QnZELE1BQU0sT0FBTyx1QkFBdUI7SUF5SWxDLFlBQ1UsUUFBcUIsRUFDckIsUUFBa0IsRUFDbEIscUJBQTRDLEVBQzVDLE9BQWtCO1FBSGxCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUExSTVCOzs7OztVQUtFO1FBQ08sd0JBQW1C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IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE5nYkNhbGVuZGFyLFxuICBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLFxuICBOZ2JEYXRlU3RydWN0LFxuICBOZ2JEYXRlcGlja2VySTE4bixcbiAgTmdiSW5wdXREYXRlcGlja2VyLFxuICBOZ2JUaW1lU3RydWN0LFxuICBOZ2JUaW1lcGlja2VyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyU2VydmljZSB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJJMThuLCBJMThuIH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckkxOG4nO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gJy4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJGb3JtYXQnO1xuaW1wb3J0IHsgRGF0ZVRpbWVNb2RlbCB9IGZyb20gJy4uL3V0aWxzL0RhdGVUaW1lTW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRlLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgSTE4bixcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckkxOG4gfSxcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBGb3JtYXRvIGRlIGxhIGZlY2hhOlxuICAqICdkZC9NTS95eXl5IEhIOm1tJyAtICdkZC9NTS95eXl5IEhIOm1tOnNzJyAtICdNL2QveXl5eSBIOm1tOnNzJ1xuICAqIEBkZWZhdWx0ICdkZC9NTS95eXl5IEhIOm1tJ1xuICAqIEB0eXBlIHtzdHJpbmd9XG4gICovXG4gIEBJbnB1dCgpIGlucHV0RGF0ZXRpbWVGb3JtYXQ6IHN0cmluZyA9ICdkZC9NTS95eXl5IEhIOm1tJztcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhIG1vc3RyYXIgY29tbyBldGlxdWV0YSBkZWwgY2FtcG9cbiAgKiBAZGVmYXVsdCAnJ1xuICAqIEB0eXBlIHN0cmluZ1xuICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgbGEgdmlzdWFsaXphY2nDs24gZGVsIHRleHRvIHN1cGVyaW9yIChsYWJlbClcbiAgKiBAZGVmYXVsdCB0cnVlXG4gICogQHR5cGUgYm9vbGVhblxuICAqL1xuICBASW5wdXQoKSBzaG93TGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIEVzdGFibGVjZSBlbCBjb250cm9sIGNvbW8gc29sbyBsZWN0dXJhXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGNhbXBvIGVzIG9ibGlnYXRvcmlvXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxuICAqIEBkZWZhdWx0IGZhbHNlXG4gICogQHR5cGUgYm9vbGVhblxuICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSBheXVkYSBjb21vIHRvb2x0aXBzXG4gICogQGRlZmF1bHQgdHJ1ZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIEluZGljYSBzaSBlbCBmb3JtdWxhcmlvIGhhIHNpZG8gZW52aWFkbyBwYXJhIG1vc3RyYXIgdmFsaWRhY2lvbmVzXG4gICogQGRlZmF1bHQgdHJ1ZVxuICAqIEB0eXBlIGJvb2xlYW5cbiAgKi9cbiAgQElucHV0KCkgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIHNpZ3VpZW50ZSBjb250cm9sIHBhcmEgbmF2ZWdhY2nDs25cbiAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKiBAdHlwZSBhbnlcbiAgKi9cbiAgQElucHV0KCkgbmV4dDogYW55O1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgc2lndWllbnRlIGVzdMOhIGRlc2hhYmlsaXRhZG9cbiAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKiBAdHlwZSBhbnlcbiAgKi9cbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbnRlcmlvciBwYXJhIG5hdmVnYWNpw7NuXG4gICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICogQHR5cGUgYW55XG4gICovXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYWx0ZXJuYXRpdm8gY3VhbmRvIGVsIGFudGVyaW9yIGVzdMOhIGRlc2hhYmlsaXRhZG9cbiAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKiBAdHlwZSBhbnlcbiAgKi9cbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGluZm9ybWFjacOzbiBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxuICAqIEBkZWZhdWx0IGZhbHNlXG4gICogQHR5cGUgYm9vbGVhblxuICAqL1xuICBASW5wdXQoKSBsYWJlbEluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxuICAqIEBkZWZhdWx0ICcnXG4gICogQHR5cGUgc3RyaW5nXG4gICovXG4gIEBJbnB1dCgpIHRleHRMYWJlbEluZm86IHN0cmluZyA9ICcnO1xuICBcbiAgLyoqXG4gICogQGRlc2NyaXB0aW9uIEFicmUgZWwgc2VsZWN0b3IgYWwgcmVjaWJpciBlbCBmb2NvXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvbiBOYXZlZ2EgYWwgc2lndWllbnRlIGNvbnRyb2wgYWwgc2VsZWNjaW9uYXIgdW5hIGZlY2hhXG4gICogQGRlZmF1bHQgZmFsc2VcbiAgKiBAdHlwZSBib29sZWFuXG4gICovXG4gIEBJbnB1dCgpIGdvTmV4dFdoZW5TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2QnKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xuICBAVmlld0NoaWxkKCd0cCcpIHRpbWVQaWNrZXIhOiBOZ2JUaW1lcGlja2VyO1xuICBAVmlld0NoaWxkKCdidG5PcGVuJykgYnRuT3BlbiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2J0bkNsZWFuJykgYnRuQ2xlYW4hOiBFbGVtZW50UmVmO1xuXG4gIGNvbnRyb2xzPzogQWJzdHJhY3RDb250cm9sO1xuICB0b2RheSA9IHRoaXMuY2FsZW5kYXIuZ2V0VG9kYXkoKTtcbiAgZGF0ZTogTmdiRGF0ZVN0cnVjdCB8IGFueSA9IHRoaXMudG9kYXk7XG4gIHRpbWU6IE5nYlRpbWVTdHJ1Y3QgPSB7XG4gICAgaG91cjogbmV3IERhdGUoKS5nZXRIb3VycygpLFxuICAgIG1pbnV0ZTogbmV3IERhdGUoKS5nZXRNaW51dGVzKCksXG4gICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcbiAgfTtcbiAgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlLCB0aGlzLnRpbWUpKTtcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIF90ZW1wVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBfaW5pdFZhbHVlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBkYXRlVGltZVBpY2tlclNlcnZpY2U6IERhdGVUaW1lUGlja2VyU2VydmljZSxcbiAgICBwcml2YXRlIF9yZW5kZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICB0aGlzLmlucHV0RGF0ZXRpbWVGb3JtYXQgPVxuICAgICAgdGhpcy5kYXRlVGltZVBpY2tlclNlcnZpY2UuZ2V0SW5wdXREYXRldGltZUZvcm1hdCgpO1xuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5kYXRlVGltZVBpY2tlclNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XG4gICAgdGhpcy5vcGVuV2hlbkZvY3VzID0gdGhpcy5kYXRlVGltZVBpY2tlclNlcnZpY2UuZ2V0T3BlbldoZW5Gb2N1cygpO1xuICAgIHRoaXMuZ29OZXh0V2hlblNlbGVjdCA9IHRoaXMuZGF0ZVRpbWVQaWNrZXJTZXJ2aWNlLmdldEdvTmV4dFdoZW5TZWxlY3QoKTtcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmRhdGVUaW1lUGlja2VyU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuZGF0ZVRpbWVQaWNrZXJTZXJ2aWNlLmdldFRvb2x0aXBNZXNzYWdlKCk7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0aGlzLmRhdGVUaW1lUGlja2VyU2VydmljZS5nZXRTdWJtaXR0ZWQoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHt9O1xuICBvblRvdWNoID0gKCkgPT4ge307XG4gIGZvY3VzID0gKCkgPT4ge1xuICAgIHRoaXMuYnRuT3Blbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmIHRoaXMub3BlbldoZW5Gb2N1cykge1xuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyLm9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzdWJtaXR0ZWQnXSkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydzdWJtaXR0ZWQnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgLy8gb25EYXRlU2VsZWN0KGV2dDogYW55KSB7XG4gIC8vdGhpcy5uZ2JEYXRlcGlja2VyLmNsb3NlKCk7XG4gIC8vIGlmICh0aGlzLmdvTmV4dFdoZW5TZWxlY3QpIHtcbiAgLy8gXHR0aGlzLmdvTmV4dCgpO1xuICAvLyB9XG4gIC8vY29uc29sZS5sb2coZXZ0KTtcbiAgLy8gfVxuXG4gIG9uTW9kZWxEYXRlQ2hhbmdlKGV2dDogTmdiRGF0ZVN0cnVjdCB8IE5nYlRpbWVTdHJ1Y3QpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGUsIHRoaXMudGltZSkpO1xuICAgIGNvbnN0IGVtaXRWYWx1ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuaW5wdXQsICd5eXl5LU1NLWRkVEhIOm1tJyk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5vbkNoYW5nZShlbWl0VmFsdWUpO1xuICB9XG5cbiAgbGltcGlhcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGUgPSBudWxsO1xuICAgIHRoaXMudGltZSA9IHsgbWludXRlOiAwLCBob3VyOiAwLCBzZWNvbmQ6IDAgfTtcbiAgICB0aGlzLmlucHV0ID0gbnVsbDtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShuZXdNb2RlbDogYW55KTogdm9pZCB7XG4gICAgLy8gdGhpcy5pbnB1dCA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlLCB0aGlzLnRpbWUpKTtcbiAgICBpZiAobmV3TW9kZWwpIHtcbiAgICAgIC8vIHRoaXMuaW5wdXQgPSBPYmplY3QuYXNzaWduKCF0aGlzLmlucHV0LCBEYXRlVGltZU1vZGVsLmZyb21Mb2NhbFN0cmluZyhuZXdNb2RlbCkpO1xuICAgICAgaWYgKCF0aGlzLmlucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBEYXRlVGltZU1vZGVsLmZyb21Mb2NhbFN0cmluZyhuZXdNb2RlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0ID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB0aGlzLmlucHV0LFxuICAgICAgICAgIERhdGVUaW1lTW9kZWwuZnJvbUxvY2FsU3RyaW5nKG5ld01vZGVsKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGUgPSB0aGlzLmlucHV0O1xuICAgICAgdGhpcy50aW1lID0ge1xuICAgICAgICBob3VyOiB0aGlzLmlucHV0LmhvdXIsXG4gICAgICAgIG1pbnV0ZTogdGhpcy5pbnB1dC5taW51dGUsXG4gICAgICAgIHNlY29uZDogdGhpcy5pbnB1dC5zZWNvbmQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl90ZW1wVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmlucHV0LCAneXl5eS1NTS1kZFRISDptbScpO1xuICAgICAgLy8gdGhpcy5vblRvdWNoKCk7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eSh0aGlzLmNvbnRyb2xzLCAndmFsdWUnLCB0aGlzLl90ZW1wVmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZ3JlZ3VlIGVsIGxpbXBpYXIgcGFyYSBxdWUgY2FyZ3VlIHZhY2lvIHNpIHNlIGxlIHNldGVhIHZhY2lvIG8gbnVsbFxuICAgICAgdGhpcy5saW1waWFyKCk7XG4gICAgICAvLyB0aGlzLmlucHV0ID0gbmV3IERhdGVUaW1lTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xuXG4gICAgaWYgKCF0aGlzLl9pbml0VmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl90ZW1wVmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KGNvbnRyb2wsICd2YWx1ZScsIHRoaXMuX3RlbXBWYWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbml0VmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIG9wZW4oZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IHRoaXMudG9kYXk7XG4gICAgICB0aGlzLnRpbWUgPSB7XG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcbiAgICAgICAgbWludXRlOiBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcbiAgICAgIH07XG4gICAgICB0aGlzLmlucHV0ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGUsIHRoaXMudGltZSkpO1xuICAgICAgY29uc3QgZW1pdFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5pbnB1dCwgJ3l5eXktTU0tZGRUSEg6bW0nKTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZShlbWl0VmFsdWUpO1xuICAgIH1cbiAgICAvL2FicmlyIGVsIGRhdGV0aW1lXG4gICAgZC5vcGVuKCk7XG4gIH1cblxuICBnb05leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XG4gICAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnb0JhY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsICE9IG51bGwgJiYgbGFiZWwgIT0gJycgJiYgc2hvd0xhYmVsXCIgY2xhc3M9XCJkLWZsZXggc3VtYXgtbGFiZWwgbWItMCBwLTBcIlxuICA+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImxhYmVsSW5mb1wiPlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XG4gIDwvc3Bhbj5cbjwvbGFiZWw+XG48ZGl2XG4gIFtjbGFzcy5pbnB1dC1pY29uXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxuICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgW2NsYXNzLnJpZ2h0XT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIj5cbiAgPCEtLSB0b29sdGlwLW1lc3NhZ2UgZXMgZWwgaWNvbm8gZGUgZXJyb3IgLS0+XG5cbiAgPHRvb2x0aXAtbWVzc2FnZVxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcbiAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcbiAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxuICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC90b29sdGlwLW1lc3NhZ2U+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtci0yXCI+XG4gICAgPGlucHV0IG5hbWU9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgW2Rpc2FibGVkXT1cInRydWVcIiBbbmdNb2RlbF09XCJpbnB1dCB8IGRhdGU6IGlucHV0RGF0ZXRpbWVGb3JtYXRcIiAvPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCJcbiAgICAgIG5hbWU9XCJkcFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImRhdGVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICBuZ2JEYXRlcGlja2VyXG4gICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgW21pbkRhdGVdPVwieyB5ZWFyOiAxOTYwLCBtb250aDogMSwgZGF5OiAxIH1cIlxuICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICA8IS0tIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdCgkZXZlbnQpXCIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAjYnRuT3BlblxuICAgICAgICBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIGgtMTAwXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICAoY2xpY2spPVwib3BlbihkKVwiXG4gICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiZ29CYWNrKClcIlxuICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJidG5DbGVhbi5mb2N1cygpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidDYWxlbmRhcmlvJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj5jYWxlbmRhcl90b2RheTwvbWF0LWljb24+IC0tPlxuICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLWNhbGVuZGFyIHRleHQtbGlnaHQgcHgtMVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAjYnRuQ2xlYW5cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcm91bmRlZC0wIGxpbXBpYXIgaC0xMDBcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIChjbGljayk9XCJsaW1waWFyKClcIlxuICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImJ0bk9wZW4uZm9jdXMoKVwiXG4gICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidMaW1waWFyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWRhbmdlclwiPmNsb3NlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gIDxociBjbGFzcz1cIm15LTBcIiAvPlxuICA8bmdiLXRpbWVwaWNrZXIgI3RwIFsobmdNb2RlbCldPVwidGltZVwiIG5hbWU9XCJ0aW1lcGlja2VyXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbERhdGVDaGFuZ2UoJGV2ZW50KVwiPjwvbmdiLXRpbWVwaWNrZXI+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBlcnJvci1tZXNzYWdlIGVzIGVsIG1hbnNhamUgcXVlIGFwYXJlY2UgYWJham8gZGVsIGNvbXBvbmVudGUgLS0+XG48ZXJyb3ItbWVzc2FnZVxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxuICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcbiAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcbiAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2Vycm9yLW1lc3NhZ2U+XG4iXX0=