myrta-ui 1.0.21 → 1.0.22

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.
@@ -37,7 +37,8 @@ export class InputDatepickerComponent {
37
37
  this.customClasses = '';
38
38
  this.dateLabel = '';
39
39
  this.timeLabel = '';
40
- this.datePlaceholder = 'дд.мм.гггг';
40
+ this.datePlaceholder = 'дд.мм.гггг'; // deprecated
41
+ this.placeholder = 'дд.мм.гггг';
41
42
  this.disabled = false;
42
43
  this.readonly = false;
43
44
  this.required = false;
@@ -284,14 +285,14 @@ export class InputDatepickerComponent {
284
285
  }
285
286
  }
286
287
  InputDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
287
- InputDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputDatepickerComponent, selector: "mrx-input-datepicker", inputs: { fields: "fields", size: "size", format: "format", locale: "locale", customClasses: "customClasses", dateLabel: "dateLabel", timeLabel: "timeLabel", datePlaceholder: "datePlaceholder", disabled: "disabled", readonly: "readonly", required: "required", timepicker: "timepicker", minDate: "minDate", maxDate: "maxDate", inline: "inline", closable: "closable", leadZeroDateTime: "leadZeroDateTime", mask: "mask", container: "container", validationType: "validationType", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", isShowMessages: "isShowMessages" }, outputs: { changed: "changed", modelChange: "modelChange" }, providers: [
288
+ InputDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputDatepickerComponent, selector: "mrx-input-datepicker", inputs: { fields: "fields", size: "size", format: "format", locale: "locale", customClasses: "customClasses", dateLabel: "dateLabel", timeLabel: "timeLabel", datePlaceholder: "datePlaceholder", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", timepicker: "timepicker", minDate: "minDate", maxDate: "maxDate", inline: "inline", closable: "closable", leadZeroDateTime: "leadZeroDateTime", mask: "mask", container: "container", validationType: "validationType", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", isShowMessages: "isShowMessages" }, outputs: { changed: "changed", modelChange: "modelChange" }, providers: [
288
289
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputDatepickerComponent), multi: true }
289
- ], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"mrx-input-date\"\r\n [class.mrx-input-error]=\"invalid || innerInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"\">\r\n <mrx-label *ngIf=\"timeLabel || dateLabel\">{{ dateLabel }}</mrx-label>\r\n <div class=\"mrx-input-date__wrapper\">\r\n <input\r\n #dateInput\r\n type=\"text\"\r\n autocomplete=\"nope\"\r\n class=\"mrx-input-date__input mrx-input-date__date\"\r\n [placeholder]=\"datePlaceholder\"\r\n [ngModel]=\"getDateValue\"\r\n [mask]=\"mask\"\r\n [leadZeroDateTime]=\"leadZeroDateTime\"\r\n [validation]=\"false\"\r\n [disabled]=\"disabled || readonly\"\r\n (input)=\"updateDateValue(dateInput)\"\r\n (click)=\"clickToInput(dateInput)\"\r\n />\r\n\r\n <div *ngIf=\"!disabled\" class=\"mrx-input-date__icons\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n *ngIf=\"isViewCleanIcon && !(disabled || readonly)\"\r\n (click)=\"clickToIconClear()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n <span\r\n class=\"mrx-icon icon-calendar\"\r\n (click)=\"clickToIconCalendar()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid; else innerInvalidTemplate\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <ng-template #innerInvalidTemplate>\r\n <mrx-error-message\r\n *ngIf=\"innerInvalid\"\r\n [invalidMessage]=\"innerInvalidMessage\"\r\n ></mrx-error-message>\r\n </ng-template>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n\r\n\r\n\r\n", styles: [".mrx-input-date.mrx-input-date{width:100%;position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__wrapper{position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;transition:outline-width .2s,border .2s}.mrx-input-date.mrx-input-date .mrx-input-date__input:focus,.mrx-input-date.mrx-input-date .mrx-input-date__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-date.mrx-input-date .mrx-input-date__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-input-date__input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-4) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-input-date__input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-3) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-input-date__input{padding:calc(var(--spacing-2) - var(--border-width-default)) calc(var(--spacing-2) - var(--border-width-default));font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-date.mrx-input-date.mrx-input-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important;background-color:var(--system-bg-negative-secondary)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-success .mrx-input-date__input{background-color:var(--system-bg-positive-secondary)!important;border-color:var(--system-bg-controls-positive-default)!important}.mrx-input-date.mrx-input-date .mrx-input-date__icons{position:absolute;top:0;right:0;display:flex;align-items:center}.mrx-input-date.mrx-input-date .mrx-input-date__icons-item,.mrx-input-date.mrx-input-date .mrx-input-date__icons .mrx-icon{cursor:pointer}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-icon{margin-top:calc(var(--spacing-3) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-2)}.mrx-input-date.mrx-input-date.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-date.mrx-input-date.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"], components: [{ type: i1.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "disabled", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "isSwitch", "switchLabel", "switchValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeCheckboxValue", "clickedLink"] }, { type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }, { type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "triggerOnMaskChange"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
290
+ ], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"mrx-input-date\"\r\n [class.mrx-input-error]=\"invalid || innerInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"\">\r\n <mrx-label *ngIf=\"timeLabel || dateLabel\">{{ dateLabel }}</mrx-label>\r\n <div class=\"mrx-input-date__wrapper\">\r\n <input\r\n #dateInput\r\n type=\"text\"\r\n autocomplete=\"nope\"\r\n class=\"mrx-input-date__input mrx-input-date__date\"\r\n [placeholder]=\"placeholder\"\r\n [ngModel]=\"getDateValue\"\r\n [mask]=\"mask\"\r\n [leadZeroDateTime]=\"leadZeroDateTime\"\r\n [validation]=\"false\"\r\n [disabled]=\"disabled || readonly\"\r\n (input)=\"updateDateValue(dateInput)\"\r\n (click)=\"clickToInput(dateInput)\"\r\n />\r\n\r\n <div *ngIf=\"!disabled\" class=\"mrx-input-date__icons\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n *ngIf=\"isViewCleanIcon && !(disabled || readonly)\"\r\n (click)=\"clickToIconClear()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n <span\r\n class=\"mrx-icon icon-calendar\"\r\n (click)=\"clickToIconCalendar()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid; else innerInvalidTemplate\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <ng-template #innerInvalidTemplate>\r\n <mrx-error-message\r\n *ngIf=\"innerInvalid\"\r\n [invalidMessage]=\"innerInvalidMessage\"\r\n ></mrx-error-message>\r\n </ng-template>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n\r\n\r\n\r\n", styles: [".mrx-input-date.mrx-input-date{width:100%;position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__wrapper{position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;transition:outline-width .2s,border .2s}.mrx-input-date.mrx-input-date .mrx-input-date__input:focus,.mrx-input-date.mrx-input-date .mrx-input-date__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-date.mrx-input-date .mrx-input-date__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-input-date__input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-4) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-input-date__input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-3) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-input-date__input{padding:calc(var(--spacing-2) - var(--border-width-default)) calc(var(--spacing-2) - var(--border-width-default));font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-date.mrx-input-date.mrx-input-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important;background-color:var(--system-bg-negative-secondary)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-success .mrx-input-date__input{background-color:var(--system-bg-positive-secondary)!important;border-color:var(--system-bg-controls-positive-default)!important}.mrx-input-date.mrx-input-date .mrx-input-date__icons{position:absolute;top:0;right:0;display:flex;align-items:center}.mrx-input-date.mrx-input-date .mrx-input-date__icons-item,.mrx-input-date.mrx-input-date .mrx-input-date__icons .mrx-icon{cursor:pointer}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-icon{margin-top:calc(var(--spacing-3) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-2)}.mrx-input-date.mrx-input-date.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-date.mrx-input-date.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"], components: [{ type: i1.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "disabled", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "isSwitch", "switchLabel", "switchValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeCheckboxValue", "clickedLink"] }, { type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }, { type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "triggerOnMaskChange"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
290
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputDatepickerComponent, decorators: [{
291
292
  type: Component,
292
293
  args: [{ selector: 'mrx-input-datepicker', providers: [
293
294
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputDatepickerComponent), multi: true }
294
- ], template: "<div\r\n class=\"mrx-input-date\"\r\n [class.mrx-input-error]=\"invalid || innerInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"\">\r\n <mrx-label *ngIf=\"timeLabel || dateLabel\">{{ dateLabel }}</mrx-label>\r\n <div class=\"mrx-input-date__wrapper\">\r\n <input\r\n #dateInput\r\n type=\"text\"\r\n autocomplete=\"nope\"\r\n class=\"mrx-input-date__input mrx-input-date__date\"\r\n [placeholder]=\"datePlaceholder\"\r\n [ngModel]=\"getDateValue\"\r\n [mask]=\"mask\"\r\n [leadZeroDateTime]=\"leadZeroDateTime\"\r\n [validation]=\"false\"\r\n [disabled]=\"disabled || readonly\"\r\n (input)=\"updateDateValue(dateInput)\"\r\n (click)=\"clickToInput(dateInput)\"\r\n />\r\n\r\n <div *ngIf=\"!disabled\" class=\"mrx-input-date__icons\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n *ngIf=\"isViewCleanIcon && !(disabled || readonly)\"\r\n (click)=\"clickToIconClear()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n <span\r\n class=\"mrx-icon icon-calendar\"\r\n (click)=\"clickToIconCalendar()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid; else innerInvalidTemplate\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <ng-template #innerInvalidTemplate>\r\n <mrx-error-message\r\n *ngIf=\"innerInvalid\"\r\n [invalidMessage]=\"innerInvalidMessage\"\r\n ></mrx-error-message>\r\n </ng-template>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n\r\n\r\n\r\n", styles: [".mrx-input-date.mrx-input-date{width:100%;position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__wrapper{position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;transition:outline-width .2s,border .2s}.mrx-input-date.mrx-input-date .mrx-input-date__input:focus,.mrx-input-date.mrx-input-date .mrx-input-date__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-date.mrx-input-date .mrx-input-date__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-input-date__input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-4) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-input-date__input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-3) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-input-date__input{padding:calc(var(--spacing-2) - var(--border-width-default)) calc(var(--spacing-2) - var(--border-width-default));font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-date.mrx-input-date.mrx-input-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important;background-color:var(--system-bg-negative-secondary)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-success .mrx-input-date__input{background-color:var(--system-bg-positive-secondary)!important;border-color:var(--system-bg-controls-positive-default)!important}.mrx-input-date.mrx-input-date .mrx-input-date__icons{position:absolute;top:0;right:0;display:flex;align-items:center}.mrx-input-date.mrx-input-date .mrx-input-date__icons-item,.mrx-input-date.mrx-input-date .mrx-input-date__icons .mrx-icon{cursor:pointer}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-icon{margin-top:calc(var(--spacing-3) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-2)}.mrx-input-date.mrx-input-date.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-date.mrx-input-date.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"] }]
295
+ ], template: "<div\r\n class=\"mrx-input-date\"\r\n [class.mrx-input-error]=\"invalid || innerInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"\">\r\n <mrx-label *ngIf=\"timeLabel || dateLabel\">{{ dateLabel }}</mrx-label>\r\n <div class=\"mrx-input-date__wrapper\">\r\n <input\r\n #dateInput\r\n type=\"text\"\r\n autocomplete=\"nope\"\r\n class=\"mrx-input-date__input mrx-input-date__date\"\r\n [placeholder]=\"placeholder\"\r\n [ngModel]=\"getDateValue\"\r\n [mask]=\"mask\"\r\n [leadZeroDateTime]=\"leadZeroDateTime\"\r\n [validation]=\"false\"\r\n [disabled]=\"disabled || readonly\"\r\n (input)=\"updateDateValue(dateInput)\"\r\n (click)=\"clickToInput(dateInput)\"\r\n />\r\n\r\n <div *ngIf=\"!disabled\" class=\"mrx-input-date__icons\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n *ngIf=\"isViewCleanIcon && !(disabled || readonly)\"\r\n (click)=\"clickToIconClear()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n <span\r\n class=\"mrx-icon icon-calendar\"\r\n (click)=\"clickToIconCalendar()\"\r\n [class.icon-font-16]=\"size === 'small'\"\r\n [class.icon-font-24]=\"size === 'medium' || size === 'large'\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid; else innerInvalidTemplate\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <ng-template #innerInvalidTemplate>\r\n <mrx-error-message\r\n *ngIf=\"innerInvalid\"\r\n [invalidMessage]=\"innerInvalidMessage\"\r\n ></mrx-error-message>\r\n </ng-template>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n\r\n\r\n\r\n", styles: [".mrx-input-date.mrx-input-date{width:100%;position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__wrapper{position:relative}.mrx-input-date.mrx-input-date .mrx-input-date__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;transition:outline-width .2s,border .2s}.mrx-input-date.mrx-input-date .mrx-input-date__input:focus,.mrx-input-date.mrx-input-date .mrx-input-date__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-date.mrx-input-date .mrx-input-date__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-input-date__input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-4) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-input-date__input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-3) - var(--border-width-default));font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-input-date__input{padding:calc(var(--spacing-2) - var(--border-width-default)) calc(var(--spacing-2) - var(--border-width-default));font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-date.mrx-input-date.mrx-input-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-error .mrx-input-date__input{border-color:var(--system-bg-controls-negative-default)!important;background-color:var(--system-bg-negative-secondary)!important}.mrx-input-date.mrx-input-date.mrx-input-checked-success .mrx-input-date__input{background-color:var(--system-bg-positive-secondary)!important;border-color:var(--system-bg-controls-positive-default)!important}.mrx-input-date.mrx-input-date .mrx-input-date__icons{position:absolute;top:0;right:0;display:flex;align-items:center}.mrx-input-date.mrx-input-date .mrx-input-date__icons-item,.mrx-input-date.mrx-input-date .mrx-input-date__icons .mrx-icon{cursor:pointer}.mrx-input-date.mrx-input-date.mrx-input-date-lg .mrx-icon{margin-top:calc(var(--spacing-3) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-md .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-3)}.mrx-input-date.mrx-input-date.mrx-input-date-sm .mrx-icon{margin-top:calc(var(--spacing-2) - var(--border-width-default));margin-right:var(--spacing-2)}.mrx-input-date.mrx-input-date.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-date.mrx-input-date.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"] }]
295
296
  }], ctorParameters: function () { return []; }, propDecorators: { fields: [{
296
297
  type: Input
297
298
  }], size: [{
@@ -308,6 +309,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
308
309
  type: Input
309
310
  }], datePlaceholder: [{
310
311
  type: Input
312
+ }], placeholder: [{
313
+ type: Input
311
314
  }], disabled: [{
312
315
  type: Input
313
316
  }], readonly: [{
@@ -348,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
348
351
  }], modelChange: [{
349
352
  type: Output
350
353
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlcGlja2VyL2lucHV0LWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZGF0ZXBpY2tlci9pbnB1dC1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUluQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxJ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QUFJLEVBQUU7S0FDckcsdUpDeENILHErREE0REE7MkZEbEJhLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNyRzswRUFhZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBRVUsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFVSxjQUFjO3NCQUE3QixLQUFLO2dCQUVrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRUwsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgQWlyRGF0ZXBpY2tlciBmcm9tICdhaXItZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXREYXRlU2l6ZXNFbnVtLFxyXG4gIElucHV0RGF0ZVNpemVzVHlwZXMsIElucHV0RGF0ZVRpbWVWYWxpZGF0aW9uLFxyXG4gIElucHV0RGF0ZVRpbWVWYWx1ZVR5cGVzLFxyXG4gIElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vaW5wdXQtZGF0ZXBpY2tlci5lbnVtJztcclxuaW1wb3J0IHsgRGF0ZU1vZGVsLCBUaW1lTW9kZWwsIHZhbGlkYXRlRGF0ZU1vZGVsLCB2YWxpZGF0ZVRpbWVNb2RlbCB9IGZyb20gJy4vaGVscGVycy92YWxpZGF0ZS12YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBkYXRlTW9kZWxDb25zdGFudCwgdGltZU1vZGVsQ29uc3RhbnQgfSBmcm9tICcuL2NvbnN0YW50cy92YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBkYXRlTW9kZWxWYWx1ZVBhcnNlLCB0aW1lTW9kZWxWYWx1ZVBhcnNlIH0gZnJvbSAnLi9oZWxwZXJzL3ZhbHVlLXBhcnNlcic7XHJcbmltcG9ydCB7IG1hcmtQb3NpdGlvbiB9IGZyb20gJy4vaGVscGVycy9jdXJzb3ItcG9zaXRpb24nO1xyXG5pbXBvcnQgeyBjbGVhbkRhdGUgfSBmcm9tICcuL2hlbHBlcnMvY2xlYW4tZGF0ZSc7XHJcbmltcG9ydCB7IGdldERhdGVEYXlqc09iamVjdCB9IGZyb20gJy4vaGVscGVycy9nZXQtZGF0ZS1kYXlqcy1vYmplY3QnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xyXG5pbXBvcnQgbG9jYWxlRW4gZnJvbSAnYWlyLWRhdGVwaWNrZXIvbG9jYWxlL2VuJztcclxuaW1wb3J0IGxvY2FsZVJ1IGZyb20gJ2Fpci1kYXRlcGlja2VyL2xvY2FsZS9ydSc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZXREYXRlT2JqZWN0IH0gZnJvbSAnLi9oZWxwZXJzL2dldC1kYXRlLW9iamVjdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJ2lucHV0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydpbnB1dC1kYXRlcGlja2VyLmNvbXBvbmVudHMubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXREYXRlcGlja2VyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIHB1YmxpYyBkdDogYW55O1xyXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGVNb2RlbDogRGF0ZU1vZGVsID0gZGF0ZU1vZGVsQ29uc3RhbnQ7XHJcbiAgcHVibGljIHRpbWVNb2RlbDogVGltZU1vZGVsID0gdGltZU1vZGVsQ29uc3RhbnQ7XHJcblxyXG4gIHB1YmxpYyBpbm5lckludmFsaWQgPSBmYWxzZTtcclxuICBwdWJsaWMgaW5uZXJJbnZhbGlkTWVzc2FnZSA9ICcnO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0RGF0ZVNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXQgPSAnWVlZWS1NTS1ERCBISDptbSc7XHJcbiAgQElucHV0KCkgcHVibGljIGxvY2FsZTogJ3J1JyB8ICdlbicgPSAncnUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGRhdGVMYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0aW1lTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0ZVBsYWNlaG9sZGVyID0gJ9C00LQu0LzQvC7Qs9Cz0LPQsyc7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHRpbWVwaWNrZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWluRGF0ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhEYXRlID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGlubGluZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsZWFkWmVyb0RhdGVUaW1lID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1hc2sgPSAnMDAuMDAuMDAwMCAwMDptMCc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb250YWluZXIgPSAnZGl2LnBhZ2Utd3JhcHBlcic7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9uVHlwZTogSW5wdXREYXRlVGltZVZhbGlkYXRpb24gPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc1Nob3dNZXNzYWdlcyA9IHRydWU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmR0ID0gbmV3IEFpckRhdGVwaWNrZXIodGhpcy5kYXRlSW5wdXQubmF0aXZlRWxlbWVudCwge1xyXG4gICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyLFxyXG4gICAgICBsb2NhbGU6IHRoaXMuZ2V0TG9jYWxlLFxyXG4gICAgICBhdXRvQ2xvc2U6IHRydWUsXHJcbiAgICAgIG11bHRpcGxlRGF0ZXNTZXBhcmF0b3I6ICcgLSAnLFxyXG4gICAgICB0aW1lcGlja2VyOiB0aGlzLnRpbWVwaWNrZXIsXHJcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSA/IGRheWpzKHRoaXMubWluRGF0ZSwgdGhpcy5mb3JtYXQpLnRvRGF0ZSgpIDogJycsXHJcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSA/IGRheWpzKHRoaXMubWF4RGF0ZSwgdGhpcy5mb3JtYXQpLnRvRGF0ZSgpIDogJycsXHJcbiAgICAgIGlubGluZTogdGhpcy5pbmxpbmUsXHJcbiAgICAgIHBvc2l0aW9uKHsgJGRhdGVwaWNrZXIsICR0YXJnZXQsICRwb2ludGVyLCBkb25lIH0pIHtcclxuICAgICAgICBsZXQgcG9wcGVyID0gY3JlYXRlUG9wcGVyKCR0YXJnZXQsICRkYXRlcGlja2VyLCB7XHJcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxyXG4gICAgICAgICAgbW9kaWZpZXJzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuYW1lOiAnZmxpcCcsXHJcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzoge1xyXG4gICAgICAgICAgICAgICAgICB0b3A6IDY0XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ29mZnNldCcsXHJcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMTBdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ2Fycm93JyxcclxuICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiAkcG9pbnRlclxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29tcGxldGVIaWRlKCkge1xyXG4gICAgICAgICAgcG9wcGVyLmRlc3Ryb3koKTtcclxuICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9LFxyXG4gICAgICBvblNlbGVjdDogKHsgZGF0ZSwgZm9ybWF0dGVkRGF0ZSwgZGF0ZXBpY2tlciB9KSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiB0eXBlb2YgZm9ybWF0dGVkRGF0ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdmFsaWRhdGVEYXRlTW9kZWwoZm9ybWF0dGVkRGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLnRpbWVNb2RlbCA9IHZhbGlkYXRlVGltZU1vZGVsKGZvcm1hdHRlZERhdGUpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRNb2RlbHMpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZU1vZGVsKHRoaXMuZGF0ZU1vZGVsLCB0aGlzLnRpbWVNb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmR0KSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzWydtYXhEYXRlJ10pIHtcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uVHlwZSA9PT0gJ2RvdWJsZScpIHtcclxuICAgICAgICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLmlubmVySW52YWxpZDtcclxuICAgICAgICAgIHRoaXMuZHQudXBkYXRlKHsgbWF4RGF0ZTogdGhpcy5tYXhEYXRlID8gZGF5anModGhpcy5tYXhEYXRlLCB0aGlzLmZvcm1hdCkudG9EYXRlKCkgOiAnJyB9KTtcclxuICAgICAgICAgIHRoaXMudmFsdWUgJiYgdGhpcy5kdC5zZWxlY3REYXRlKGRheWpzKHRoaXMudmFsdWUsIHRoaXMuZm9ybWF0KS50b0RhdGUoKSwgeyB1cGRhdGVUaW1lOiB0aGlzLnRpbWVwaWNrZXIsIHNpbGVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLmNoZWNraW5nSW52YWxpZCh0aGlzLnZhbHVlLCB0aGlzLm1heERhdGUsIHRoaXMubWluRGF0ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKGludmFsaWQgJiYgaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlTW9kZWwodGhpcy5kYXRlTW9kZWwsIHRoaXMudGltZU1vZGVsKTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNoYW5nZXNbJ21heERhdGUnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ21pbkRhdGUnXSkge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25UeXBlID09PSAnZG91YmxlJykge1xyXG4gICAgICAgICAgY29uc3QgaW52YWxpZCA9IHRoaXMuaW5uZXJJbnZhbGlkO1xyXG4gICAgICAgICAgdGhpcy5kdC51cGRhdGUoeyBtaW5EYXRlOiB0aGlzLm1pbkRhdGUgPyBkYXlqcyh0aGlzLm1pbkRhdGUsIHRoaXMuZm9ybWF0KS50b0RhdGUoKSA6ICcnIH0pO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSAmJiB0aGlzLmR0LnNlbGVjdERhdGUoZGF5anModGhpcy52YWx1ZSwgdGhpcy5mb3JtYXQpLnRvRGF0ZSgpLCB7IHVwZGF0ZVRpbWU6IHRoaXMudGltZXBpY2tlciwgc2lsZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tpbmdJbnZhbGlkKHRoaXMudmFsdWUsIHRoaXMubWF4RGF0ZSwgdGhpcy5taW5EYXRlKTtcclxuXHJcbiAgICAgICAgICBpZiAoaW52YWxpZCAmJiBpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVNb2RlbCh0aGlzLmRhdGVNb2RlbCwgdGhpcy50aW1lTW9kZWwpO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coY2hhbmdlc1snbWluRGF0ZSddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0RGF0ZVZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5kYXRlTW9kZWwudmlld30ke3RoaXMudGltZXBpY2tlciAmJiB0aGlzLnRpbWVNb2RlbC52aWV3ID8gJyAnICsgdGhpcy50aW1lTW9kZWwudmlldyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtJbnB1dERhdGVTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaXNWYWxpZE1vZGVscygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5kYXRlTW9kZWwuaW52YWxpZCAmJiAodGhpcy50aW1lcGlja2VyID8gIXRoaXMudGltZU1vZGVsLmludmFsaWQgOiB0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWaWV3Q2xlYW5JY29uKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kYXRlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWUgJiYgdGhpcy5jbG9zYWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGdldExvY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gJ3J1JyA/IHsgLi4ubG9jYWxlUnUsIGRhdGVGb3JtYXQ6ICdkZC5NTS55eXl5JywgdGltZUZvcm1hdDogJ0hIOm1tJyB9IDogeyAuLi5sb2NhbGVFbiwgZGF0ZUZvcm1hdDogJ2RkLk1NLnl5eXknLCB0aW1lRm9ybWF0OiAnSEg6bW0nIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja1RvSWNvbkNhbGVuZGFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsaWNrVG9JY29uQ2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmR0LnNldFZpZXdEYXRlKG5ldyBEYXRlKCkpO1xyXG4gICAgdGhpcy5kdCAmJiB0aGlzLmR0LmNsZWFyKCk7XHJcbiAgICB0aGlzLmRhdGVNb2RlbCA9IGRhdGVNb2RlbENvbnN0YW50O1xyXG4gICAgdGhpcy50aW1lTW9kZWwgPSB0aW1lTW9kZWxDb25zdGFudDtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUoJycpO1xyXG4gICAgdGhpcy5pbm5lckludmFsaWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkTWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZU1vZGVsKGRhdGVNb2RlbDogRGF0ZU1vZGVsLCB0aW1lTW9kZWw6IFRpbWVNb2RlbCwgYm9sOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmIChkYXRlTW9kZWwudmlldyA9PT0gJycpIHtcclxuICAgICAgdGhpcy5jbGlja1RvSWNvbkNsZWFyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkYXRlID0gZ2V0RGF0ZURheWpzT2JqZWN0KGRhdGVNb2RlbCwgdGltZU1vZGVsLCB0aGlzLnRpbWVwaWNrZXIpO1xyXG4gICAgICBjb25zdCBmb3JtYXR0aW5nRGF0ZSA9IGRhdGUuZm9ybWF0KHRoaXMuZm9ybWF0KTtcclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tpbmdJbnZhbGlkKGZvcm1hdHRpbmdEYXRlLCB0aGlzLm1heERhdGUsIHRoaXMubWluRGF0ZSk7XHJcblxyXG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkgJiYgaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMuZHQuc2VsZWN0RGF0ZShnZXREYXRlT2JqZWN0KGRhdGVNb2RlbCwgdGltZU1vZGVsLCB0aGlzLnRpbWVwaWNrZXIpLCB7XHJcbiAgICAgICAgICB1cGRhdGVUaW1lOiB0aGlzLnRpbWVwaWNrZXIsXHJcbiAgICAgICAgICBzaWxlbnQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmR0LnNldFZpZXdEYXRlKGdldERhdGVPYmplY3QoZGF0ZU1vZGVsLCB0aW1lTW9kZWwsIHRoaXMudGltZXBpY2tlcikpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZm9ybWF0dGluZ0RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRNZXNzYWdlT24obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZE1lc3NhZ2UgPSBtZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkTWVzc2FnZU9mZigpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZE1lc3NhZ2UgPSAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVEYXRlVmFsdWUoZGF0ZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGRhdGVJbnB1dC5zZWxlY3Rpb25TdGFydDtcclxuICAgIHRoaXMuZGF0ZU1vZGVsID0gdmFsaWRhdGVEYXRlTW9kZWwoZGF0ZUlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMudGltZU1vZGVsID0gdmFsaWRhdGVUaW1lTW9kZWwoZGF0ZUlucHV0LnZhbHVlKTtcclxuXHJcbiAgICBkYXRlSW5wdXQudmFsdWUgPSB0aGlzLmdldERhdGVWYWx1ZTtcclxuICAgIGRhdGVJbnB1dC5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xyXG4gICAgZGF0ZUlucHV0LnNlbGVjdGlvbkVuZCA9IGRhdGVJbnB1dC5zZWxlY3Rpb25TdGFydDtcclxuXHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkTW9kZWxzIHx8IHRoaXMuZGF0ZU1vZGVsLnZpZXcgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVNb2RlbCh0aGlzLmRhdGVNb2RlbCwgdGhpcy50aW1lTW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsaWNrVG9JbnB1dChpbnB1dDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xyXG4gICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09PSBpbnB1dC5zZWxlY3Rpb25FbmQgJiYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ICYmIGlucHV0LnNlbGVjdGlvblN0YXJ0ID4gMCkpIHtcclxuICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBtYXJrUG9zaXRpb24oaW5wdXQuc2VsZWN0aW9uU3RhcnQsIGlucHV0LnNlbGVjdGlvbkVuZCk7XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IGVuZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tpbmdJbnZhbGlkKHZhbHVlOiBzdHJpbmcsIG1heERhdGU6IHN0cmluZywgbWluRGF0ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTaG93TWVzc2FnZXMpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9mZigpO1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChtYXhEYXRlICYmIChkYXlqcyh2YWx1ZSwgdGhpcy5mb3JtYXQpLmRpZmYoZGF5anMobWF4RGF0ZSwgdGhpcy5mb3JtYXQpKSA9PT0gMCkpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9uKCfQlNCw0YLQsCDQuCDQstGA0LXQvNGPINC+0LrQvtC90YfQsNC90LjRjyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0YDQsNCy0L3QsCDQtNCw0YLQtSDQuCDQstGA0LXQvNC10L3QuCDQvdCw0YfQsNC70LAnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChtYXhEYXRlICYmIChkYXlqcyh2YWx1ZSwgdGhpcy5mb3JtYXQpLmRpZmYoZGF5anMobWF4RGF0ZSwgdGhpcy5mb3JtYXQpKSA+IDApKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VPbign0JTQsNGC0LAg0L7QutC+0L3Rh9Cw0L3QuNGPINC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDRgNCw0L3RjNGI0LUg0LTQsNGC0Ysg0L3QsNGH0LDQu9CwJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAobWluRGF0ZSAmJiAoZGF5anModmFsdWUsIHRoaXMuZm9ybWF0KS5kaWZmKGRheWpzKG1pbkRhdGUsIHRoaXMuZm9ybWF0KSkgPT09IDApKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VPbign0JTQsNGC0LAg0Lgg0LLRgNC10LzRjyDQvtC60L7QvdGH0LDQvdC40Y8g0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINGA0LDQstC90LAg0LTQsNGC0LUg0Lgg0LLRgNC10LzQtdC90Lgg0L3QsNGH0LDQu9CwJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAobWluRGF0ZSAmJiBkYXlqcyh2YWx1ZSwgdGhpcy5mb3JtYXQpLmRpZmYoZGF5anMobWluRGF0ZSwgdGhpcy5mb3JtYXQpKSA8IDApIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9uKCfQlNCw0YLQsCDQvtC60L7QvdGH0LDQvdC40Y8g0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINGA0LDQvdGM0YjQtSDQtNCw0YLRiyDQvdCw0YfQsNC70LAnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9mZigpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogSW5wdXREYXRlVGltZVZhbHVlVHlwZXMpIHtcclxuICAgIGlmIChvdXRzaWRlVmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGNsZWFuRGF0ZShvdXRzaWRlVmFsdWUsIHRoaXMuZm9ybWF0KTtcclxuXHJcbiAgICAgIHRoaXMuZGF0ZU1vZGVsID0gZGF0ZU1vZGVsVmFsdWVQYXJzZShvdXRzaWRlVmFsdWUsIHRoaXMuZm9ybWF0KTtcclxuICAgICAgdGhpcy50aW1lTW9kZWwgPSB0aW1lTW9kZWxWYWx1ZVBhcnNlKG91dHNpZGVWYWx1ZSwgdGhpcy5mb3JtYXQpO1xyXG5cclxuICAgICAgdGhpcy5jaGVja2luZ0ludmFsaWQob3V0c2lkZVZhbHVlLCB0aGlzLm1heERhdGUsIHRoaXMubWluRGF0ZSk7XHJcblxyXG4gICAgICB0aGlzLmR0LnNlbGVjdERhdGUoZ2V0RGF0ZU9iamVjdCh0aGlzLmRhdGVNb2RlbCwgdGhpcy50aW1lTW9kZWwsIHRoaXMudGltZXBpY2tlciksIHsgdXBkYXRlVGltZTogdGhpcy50aW1lcGlja2VyLCBzaWxlbnQ6IHRydWUgfSk7XHJcbiAgICAgIHRoaXMuZHQuc2V0Vmlld0RhdGUoZ2V0RGF0ZU9iamVjdCh0aGlzLmRhdGVNb2RlbCwgdGhpcy50aW1lTW9kZWwsIHRoaXMudGltZXBpY2tlcikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZHQpIHtcclxuICAgICAgICB0aGlzLmR0LmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBJbnB1dERhdGVUaW1lVmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZVwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkIHx8IGlubmVySW52YWxpZFwiXHJcbiAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPG1yeC1sYWJlbCAqbmdJZj1cInRpbWVMYWJlbCB8fCBkYXRlTGFiZWxcIj57eyBkYXRlTGFiZWwgfX08L21yeC1sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZV9fd3JhcHBlclwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjZGF0ZUlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm5vcGVcIlxyXG4gICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LWRhdGVfX2lucHV0IG1yeC1pbnB1dC1kYXRlX19kYXRlXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJnZXREYXRlVmFsdWVcIlxyXG4gICAgICAgIFttYXNrXT1cIm1hc2tcIlxyXG4gICAgICAgIFtsZWFkWmVyb0RhdGVUaW1lXT1cImxlYWRaZXJvRGF0ZVRpbWVcIlxyXG4gICAgICAgIFt2YWxpZGF0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgIChpbnB1dCk9XCJ1cGRhdGVEYXRlVmFsdWUoZGF0ZUlucHV0KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9JbnB1dChkYXRlSW5wdXQpXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cIm1yeC1pbnB1dC1kYXRlX19pY29uc1wiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpc1ZpZXdDbGVhbkljb24gJiYgIShkaXNhYmxlZCB8fCByZWFkb25seSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tUb0ljb25DbGVhcigpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnc21hbGwnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbWVkaXVtJyB8fCBzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jYWxlbmRhclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2tUb0ljb25DYWxlbmRhcigpXCJcclxuICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMTZdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXHJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTI0XT1cInNpemUgPT09ICdtZWRpdW0nIHx8IHNpemUgPT09ICdsYXJnZSdcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCJpbnZhbGlkOyBlbHNlIGlubmVySW52YWxpZFRlbXBsYXRlXCJcclxuICAgIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiXHJcbiAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaW5uZXJJbnZhbGlkVGVtcGxhdGU+XHJcbiAgICA8bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAgICAgKm5nSWY9XCJpbm5lckludmFsaWRcIlxyXG4gICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW5uZXJJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG4iXX0=
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlcGlja2VyL2lucHV0LWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZGF0ZXBpY2tlci9pbnB1dC1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUluQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxRQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFDaEQsT0FBTyxRQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sd0JBQXdCO0lBK0NuQztRQTdDTyxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBYyxpQkFBaUIsQ0FBQztRQUN6QyxjQUFTLEdBQWMsaUJBQWlCLENBQUM7UUFFekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRWhDLGFBQWE7UUFDTixTQUFJLEdBQVcsTUFBTSxFQUFFLENBQUM7UUFDZixXQUFNLEdBQVksRUFBRSxDQUFDO1FBRXJCLFNBQUksR0FBd0IsT0FBTyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxrQkFBa0IsQ0FBQztRQUM1QixXQUFNLEdBQWdCLElBQUksQ0FBQztRQUMzQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLG9CQUFlLEdBQUcsWUFBWSxDQUFDLENBQUMsYUFBYTtRQUM3QyxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFNBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUUxQixjQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFFL0IsbUJBQWMsR0FBNEIsU0FBUyxDQUFDO1FBQ3BELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQXdCLElBQUksQ0FBQztRQUV6QyxtQkFBYyxHQUFHLElBQUksQ0FBQztRQUlyQixZQUFPLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsZ0JBQVcsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFzTzVHLGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ2xDLENBQUMsQ0FBQztRQUNNLGNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDekIsQ0FBQyxDQUFDO0lBdE9GLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUN4RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1lBQ2Ysc0JBQXNCLEVBQUUsS0FBSztZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO29CQUM5QyxTQUFTLEVBQUUsY0FBYztvQkFDekIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLE9BQU8sRUFBRTtnQ0FDUCxPQUFPLEVBQUU7b0NBQ1AsR0FBRyxFQUFFLEVBQUU7aUNBQ1I7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsT0FBTyxFQUFFO2dDQUNQLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7NkJBQ2hCO3lCQUNGO3dCQUNEOzRCQUNFLElBQUksRUFBRSxPQUFPOzRCQUNiLE9BQU8sRUFBRTtnQ0FDUCxPQUFPLEVBQUUsUUFBUTs2QkFDbEI7eUJBQ0Y7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILE9BQU8sU0FBUyxZQUFZO29CQUMxQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLElBQUksRUFBRSxDQUFDO2dCQUNULENBQUMsQ0FBQztZQUNKLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtnQkFFaEQsSUFBSSxJQUFJLFlBQVksSUFBSSxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtvQkFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFFbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO3dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZEO2lCQUNGO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7b0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDekgsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUU3RSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUU7d0JBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7NEJBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUN4RCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ1A7aUJBQ0Y7cUJBQU07b0JBQ0wsbUNBQW1DO2lCQUNwQzthQUNGO2lCQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO29CQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzNGLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3pILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFN0UsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO3dCQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDeEQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNQO2lCQUNGO3FCQUFNO29CQUNMLG1DQUFtQztpQkFDcEM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUM1RyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNsQywyQkFBMkIsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUMvSixDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLFNBQW9CLEVBQUUsTUFBZSxLQUFLO1FBQ3ZGLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7YUFBTTtZQUNMLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWpGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUN2RSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzNCLE1BQU0sRUFBRSxJQUFJO2lCQUNiLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNsQztTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWU7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUEyQjtRQUNoRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwQyxTQUFTLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUMxQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQXVCO1FBQ3pDLElBQUksS0FBSyxDQUFDLGNBQWMsS0FBSyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3JHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlFLEtBQUssQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzdCLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtFQUFrRSxDQUFDLENBQUM7WUFDMUYsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDdkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDekUsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtFQUFrRSxDQUFDLENBQUM7WUFDMUYsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUN6RSxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxZQUFxQztRQUNyRCxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsSSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQU9NLGdCQUFnQixDQUFDLEVBQU87UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQVk7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTSxXQUFXLENBQUMsV0FBb0M7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOztxSEExU1Usd0JBQXdCO3lHQUF4Qix3QkFBd0IsNHRCQUp4QjtRQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0tBQ3JHLHVKQ3hDSCxpK0RBNERBOzJGRGxCYSx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCO3dCQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDckc7MEVBYWUsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBRVUsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFVSxjQUFjO3NCQUE3QixLQUFLO2dCQUVrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRUwsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgQWlyRGF0ZXBpY2tlciBmcm9tICdhaXItZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXREYXRlU2l6ZXNFbnVtLFxyXG4gIElucHV0RGF0ZVNpemVzVHlwZXMsIElucHV0RGF0ZVRpbWVWYWxpZGF0aW9uLFxyXG4gIElucHV0RGF0ZVRpbWVWYWx1ZVR5cGVzLFxyXG4gIElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vaW5wdXQtZGF0ZXBpY2tlci5lbnVtJztcclxuaW1wb3J0IHsgRGF0ZU1vZGVsLCBUaW1lTW9kZWwsIHZhbGlkYXRlRGF0ZU1vZGVsLCB2YWxpZGF0ZVRpbWVNb2RlbCB9IGZyb20gJy4vaGVscGVycy92YWxpZGF0ZS12YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBkYXRlTW9kZWxDb25zdGFudCwgdGltZU1vZGVsQ29uc3RhbnQgfSBmcm9tICcuL2NvbnN0YW50cy92YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBkYXRlTW9kZWxWYWx1ZVBhcnNlLCB0aW1lTW9kZWxWYWx1ZVBhcnNlIH0gZnJvbSAnLi9oZWxwZXJzL3ZhbHVlLXBhcnNlcic7XHJcbmltcG9ydCB7IG1hcmtQb3NpdGlvbiB9IGZyb20gJy4vaGVscGVycy9jdXJzb3ItcG9zaXRpb24nO1xyXG5pbXBvcnQgeyBjbGVhbkRhdGUgfSBmcm9tICcuL2hlbHBlcnMvY2xlYW4tZGF0ZSc7XHJcbmltcG9ydCB7IGdldERhdGVEYXlqc09iamVjdCB9IGZyb20gJy4vaGVscGVycy9nZXQtZGF0ZS1kYXlqcy1vYmplY3QnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xyXG5pbXBvcnQgbG9jYWxlRW4gZnJvbSAnYWlyLWRhdGVwaWNrZXIvbG9jYWxlL2VuJztcclxuaW1wb3J0IGxvY2FsZVJ1IGZyb20gJ2Fpci1kYXRlcGlja2VyL2xvY2FsZS9ydSc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZXREYXRlT2JqZWN0IH0gZnJvbSAnLi9oZWxwZXJzL2dldC1kYXRlLW9iamVjdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJ2lucHV0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydpbnB1dC1kYXRlcGlja2VyLmNvbXBvbmVudHMubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXREYXRlcGlja2VyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIHB1YmxpYyBkdDogYW55O1xyXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGVNb2RlbDogRGF0ZU1vZGVsID0gZGF0ZU1vZGVsQ29uc3RhbnQ7XHJcbiAgcHVibGljIHRpbWVNb2RlbDogVGltZU1vZGVsID0gdGltZU1vZGVsQ29uc3RhbnQ7XHJcblxyXG4gIHB1YmxpYyBpbm5lckludmFsaWQgPSBmYWxzZTtcclxuICBwdWJsaWMgaW5uZXJJbnZhbGlkTWVzc2FnZSA9ICcnO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0RGF0ZVNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXQgPSAnWVlZWS1NTS1ERCBISDptbSc7XHJcbiAgQElucHV0KCkgcHVibGljIGxvY2FsZTogJ3J1JyB8ICdlbicgPSAncnUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGRhdGVMYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0aW1lTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0ZVBsYWNlaG9sZGVyID0gJ9C00LQu0LzQvC7Qs9Cz0LPQsyc7IC8vIGRlcHJlY2F0ZWRcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0LTQtC7QvNC8LtCz0LPQs9CzJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdGltZXBpY2tlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIG1heERhdGUgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW5saW5lID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNsb3NhYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGxlYWRaZXJvRGF0ZVRpbWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWFzayA9ICcwMC4wMC4wMDAwIDAwOm0wJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGNvbnRhaW5lciA9ICdkaXYucGFnZS13cmFwcGVyJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25UeXBlOiBJbnB1dERhdGVUaW1lVmFsaWRhdGlvbiA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGlzU2hvd01lc3NhZ2VzID0gdHJ1ZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXREYXRlVGltZVZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXREYXRlVGltZVZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZHQgPSBuZXcgQWlyRGF0ZXBpY2tlcih0aGlzLmRhdGVJbnB1dC5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXIsXHJcbiAgICAgIGxvY2FsZTogdGhpcy5nZXRMb2NhbGUsXHJcbiAgICAgIGF1dG9DbG9zZTogdHJ1ZSxcclxuICAgICAgbXVsdGlwbGVEYXRlc1NlcGFyYXRvcjogJyAtICcsXHJcbiAgICAgIHRpbWVwaWNrZXI6IHRoaXMudGltZXBpY2tlcixcclxuICAgICAgbWluRGF0ZTogdGhpcy5taW5EYXRlID8gZGF5anModGhpcy5taW5EYXRlLCB0aGlzLmZvcm1hdCkudG9EYXRlKCkgOiAnJyxcclxuICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlID8gZGF5anModGhpcy5tYXhEYXRlLCB0aGlzLmZvcm1hdCkudG9EYXRlKCkgOiAnJyxcclxuICAgICAgaW5saW5lOiB0aGlzLmlubGluZSxcclxuICAgICAgcG9zaXRpb24oeyAkZGF0ZXBpY2tlciwgJHRhcmdldCwgJHBvaW50ZXIsIGRvbmUgfSkge1xyXG4gICAgICAgIGxldCBwb3BwZXIgPSBjcmVhdGVQb3BwZXIoJHRhcmdldCwgJGRhdGVwaWNrZXIsIHtcclxuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXHJcbiAgICAgICAgICBtb2RpZmllcnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdmbGlwJyxcclxuICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRvcDogNjRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcclxuICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IFswLCAxMF1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuYW1lOiAnYXJyb3cnLFxyXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICRwb2ludGVyXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBjb21wbGV0ZUhpZGUoKSB7XHJcbiAgICAgICAgICBwb3BwZXIuZGVzdHJveSgpO1xyXG4gICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0sXHJcbiAgICAgIG9uU2VsZWN0OiAoeyBkYXRlLCBmb3JtYXR0ZWREYXRlLCBkYXRlcGlja2VyIH0pID0+IHtcclxuXHJcbiAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmIHR5cGVvZiBmb3JtYXR0ZWREYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB2YWxpZGF0ZURhdGVNb2RlbChmb3JtYXR0ZWREYXRlKTtcclxuICAgICAgICAgIHRoaXMudGltZU1vZGVsID0gdmFsaWRhdGVUaW1lTW9kZWwoZm9ybWF0dGVkRGF0ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE1vZGVscykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlTW9kZWwodGhpcy5kYXRlTW9kZWwsIHRoaXMudGltZU1vZGVsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZHQpIHtcclxuICAgICAgaWYgKGNoYW5nZXNbJ21heERhdGUnXSkge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25UeXBlID09PSAnZG91YmxlJykge1xyXG4gICAgICAgICAgY29uc3QgaW52YWxpZCA9IHRoaXMuaW5uZXJJbnZhbGlkO1xyXG4gICAgICAgICAgdGhpcy5kdC51cGRhdGUoeyBtYXhEYXRlOiB0aGlzLm1heERhdGUgPyBkYXlqcyh0aGlzLm1heERhdGUsIHRoaXMuZm9ybWF0KS50b0RhdGUoKSA6ICcnIH0pO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSAmJiB0aGlzLmR0LnNlbGVjdERhdGUoZGF5anModGhpcy52YWx1ZSwgdGhpcy5mb3JtYXQpLnRvRGF0ZSgpLCB7IHVwZGF0ZVRpbWU6IHRoaXMudGltZXBpY2tlciwgc2lsZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tpbmdJbnZhbGlkKHRoaXMudmFsdWUsIHRoaXMubWF4RGF0ZSwgdGhpcy5taW5EYXRlKTtcclxuXHJcbiAgICAgICAgICBpZiAoaW52YWxpZCAmJiBpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVNb2RlbCh0aGlzLmRhdGVNb2RlbCwgdGhpcy50aW1lTW9kZWwpO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coY2hhbmdlc1snbWF4RGF0ZSddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snbWluRGF0ZSddKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvblR5cGUgPT09ICdkb3VibGUnKSB7XHJcbiAgICAgICAgICBjb25zdCBpbnZhbGlkID0gdGhpcy5pbm5lckludmFsaWQ7XHJcbiAgICAgICAgICB0aGlzLmR0LnVwZGF0ZSh7IG1pbkRhdGU6IHRoaXMubWluRGF0ZSA/IGRheWpzKHRoaXMubWluRGF0ZSwgdGhpcy5mb3JtYXQpLnRvRGF0ZSgpIDogJycgfSk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlICYmIHRoaXMuZHQuc2VsZWN0RGF0ZShkYXlqcyh0aGlzLnZhbHVlLCB0aGlzLmZvcm1hdCkudG9EYXRlKCksIHsgdXBkYXRlVGltZTogdGhpcy50aW1lcGlja2VyLCBzaWxlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja2luZ0ludmFsaWQodGhpcy52YWx1ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLm1pbkRhdGUpO1xyXG5cclxuICAgICAgICAgIGlmIChpbnZhbGlkICYmIGlzVmFsaWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZU1vZGVsKHRoaXMuZGF0ZU1vZGVsLCB0aGlzLnRpbWVNb2RlbCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjaGFuZ2VzWydtaW5EYXRlJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXREYXRlVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmRhdGVNb2RlbC52aWV3fSR7dGhpcy50aW1lcGlja2VyICYmIHRoaXMudGltZU1vZGVsLnZpZXcgPyAnICcgKyB0aGlzLnRpbWVNb2RlbC52aWV3IDogJyd9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0RGF0ZVNpemVzRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBpc1ZhbGlkTW9kZWxzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmRhdGVNb2RlbC5pbnZhbGlkICYmICh0aGlzLnRpbWVwaWNrZXIgPyAhdGhpcy50aW1lTW9kZWwuaW52YWxpZCA6IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZpZXdDbGVhbkljb24oKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSAmJiB0aGlzLmNsb3NhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZ2V0TG9jYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlID09PSAncnUnID8geyAuLi5sb2NhbGVSdSwgZGF0ZUZvcm1hdDogJ2RkLk1NLnl5eXknLCB0aW1lRm9ybWF0OiAnSEg6bW0nIH0gOiB7IC4uLmxvY2FsZUVuLCBkYXRlRm9ybWF0OiAnZGQuTU0ueXl5eScsIHRpbWVGb3JtYXQ6ICdISDptbScgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsaWNrVG9JY29uQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tUb0ljb25DbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZHQuc2V0Vmlld0RhdGUobmV3IERhdGUoKSk7XHJcbiAgICB0aGlzLmR0ICYmIHRoaXMuZHQuY2xlYXIoKTtcclxuICAgIHRoaXMuZGF0ZU1vZGVsID0gZGF0ZU1vZGVsQ29uc3RhbnQ7XHJcbiAgICB0aGlzLnRpbWVNb2RlbCA9IHRpbWVNb2RlbENvbnN0YW50O1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbm5lckludmFsaWRNZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZhbHVlTW9kZWwoZGF0ZU1vZGVsOiBEYXRlTW9kZWwsIHRpbWVNb2RlbDogVGltZU1vZGVsLCBib2w6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKGRhdGVNb2RlbC52aWV3ID09PSAnJykge1xyXG4gICAgICB0aGlzLmNsaWNrVG9JY29uQ2xlYXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBnZXREYXRlRGF5anNPYmplY3QoZGF0ZU1vZGVsLCB0aW1lTW9kZWwsIHRoaXMudGltZXBpY2tlcik7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRpbmdEYXRlID0gZGF0ZS5mb3JtYXQodGhpcy5mb3JtYXQpO1xyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja2luZ0ludmFsaWQoZm9ybWF0dGluZ0RhdGUsIHRoaXMubWF4RGF0ZSwgdGhpcy5taW5EYXRlKTtcclxuXHJcbiAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSAmJiBpc1ZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5kdC5zZWxlY3REYXRlKGdldERhdGVPYmplY3QoZGF0ZU1vZGVsLCB0aW1lTW9kZWwsIHRoaXMudGltZXBpY2tlciksIHtcclxuICAgICAgICAgIHVwZGF0ZVRpbWU6IHRoaXMudGltZXBpY2tlcixcclxuICAgICAgICAgIHNpbGVudDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZHQuc2V0Vmlld0RhdGUoZ2V0RGF0ZU9iamVjdChkYXRlTW9kZWwsIHRpbWVNb2RlbCwgdGhpcy50aW1lcGlja2VyKSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0aW5nRGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52YWxpZE1lc3NhZ2VPbihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkTWVzc2FnZSA9IG1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRNZXNzYWdlT2ZmKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbm5lckludmFsaWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkTWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZURhdGVWYWx1ZShkYXRlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZGF0ZUlucHV0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5kYXRlTW9kZWwgPSB2YWxpZGF0ZURhdGVNb2RlbChkYXRlSW5wdXQudmFsdWUpO1xyXG4gICAgdGhpcy50aW1lTW9kZWwgPSB2YWxpZGF0ZVRpbWVNb2RlbChkYXRlSW5wdXQudmFsdWUpO1xyXG5cclxuICAgIGRhdGVJbnB1dC52YWx1ZSA9IHRoaXMuZ2V0RGF0ZVZhbHVlO1xyXG4gICAgZGF0ZUlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBkYXRlSW5wdXQuc2VsZWN0aW9uRW5kID0gZGF0ZUlucHV0LnNlbGVjdGlvblN0YXJ0O1xyXG5cclxuICAgIGlmICh0aGlzLmlzVmFsaWRNb2RlbHMgfHwgdGhpcy5kYXRlTW9kZWwudmlldyA9PT0gJycpIHtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZU1vZGVsKHRoaXMuZGF0ZU1vZGVsLCB0aGlzLnRpbWVNb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tUb0lucHV0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT09IGlucHV0LnNlbGVjdGlvbkVuZCAmJiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPiAwKSkge1xyXG4gICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IG1hcmtQb3NpdGlvbihpbnB1dC5zZWxlY3Rpb25TdGFydCwgaW5wdXQuc2VsZWN0aW9uRW5kKTtcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDtcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uRW5kID0gZW5kO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja2luZ0ludmFsaWQodmFsdWU6IHN0cmluZywgbWF4RGF0ZTogc3RyaW5nLCBtaW5EYXRlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5pc1Nob3dNZXNzYWdlcykge1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlT2ZmKCk7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1heERhdGUgJiYgKGRheWpzKHZhbHVlLCB0aGlzLmZvcm1hdCkuZGlmZihkYXlqcyhtYXhEYXRlLCB0aGlzLmZvcm1hdCkpID09PSAwKSkge1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlT24oJ9CU0LDRgtCwINC4INCy0YDQtdC80Y8g0L7QutC+0L3Rh9Cw0L3QuNGPINC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDRgNCw0LLQvdCwINC00LDRgtC1INC4INCy0YDQtdC80LXQvdC4INC90LDRh9Cw0LvQsCcpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKG1heERhdGUgJiYgKGRheWpzKHZhbHVlLCB0aGlzLmZvcm1hdCkuZGlmZihkYXlqcyhtYXhEYXRlLCB0aGlzLmZvcm1hdCkpID4gMCkpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9uKCfQlNCw0YLQsCDQvtC60L7QvdGH0LDQvdC40Y8g0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINGA0LDQvdGM0YjQtSDQtNCw0YLRiyDQvdCw0YfQsNC70LAnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChtaW5EYXRlICYmIChkYXlqcyh2YWx1ZSwgdGhpcy5mb3JtYXQpLmRpZmYoZGF5anMobWluRGF0ZSwgdGhpcy5mb3JtYXQpKSA9PT0gMCkpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZU9uKCfQlNCw0YLQsCDQuCDQstGA0LXQvNGPINC+0LrQvtC90YfQsNC90LjRjyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0YDQsNCy0L3QsCDQtNCw0YLQtSDQuCDQstGA0LXQvNC10L3QuCDQvdCw0YfQsNC70LAnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChtaW5EYXRlICYmIGRheWpzKHZhbHVlLCB0aGlzLmZvcm1hdCkuZGlmZihkYXlqcyhtaW5EYXRlLCB0aGlzLmZvcm1hdCkpIDwgMCkge1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlT24oJ9CU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0YDQsNC90YzRiNC1INC00LDRgtGLINC90LDRh9Cw0LvQsCcpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlT2ZmKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBJbnB1dERhdGVUaW1lVmFsdWVUeXBlcykge1xyXG4gICAgaWYgKG91dHNpZGVWYWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gY2xlYW5EYXRlKG91dHNpZGVWYWx1ZSwgdGhpcy5mb3JtYXQpO1xyXG5cclxuICAgICAgdGhpcy5kYXRlTW9kZWwgPSBkYXRlTW9kZWxWYWx1ZVBhcnNlKG91dHNpZGVWYWx1ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IHRpbWVNb2RlbFZhbHVlUGFyc2Uob3V0c2lkZVZhbHVlLCB0aGlzLmZvcm1hdCk7XHJcblxyXG4gICAgICB0aGlzLmNoZWNraW5nSW52YWxpZChvdXRzaWRlVmFsdWUsIHRoaXMubWF4RGF0ZSwgdGhpcy5taW5EYXRlKTtcclxuXHJcbiAgICAgIHRoaXMuZHQuc2VsZWN0RGF0ZShnZXREYXRlT2JqZWN0KHRoaXMuZGF0ZU1vZGVsLCB0aGlzLnRpbWVNb2RlbCwgdGhpcy50aW1lcGlja2VyKSwgeyB1cGRhdGVUaW1lOiB0aGlzLnRpbWVwaWNrZXIsIHNpbGVudDogdHJ1ZSB9KTtcclxuICAgICAgdGhpcy5kdC5zZXRWaWV3RGF0ZShnZXREYXRlT2JqZWN0KHRoaXMuZGF0ZU1vZGVsLCB0aGlzLnRpbWVNb2RlbCwgdGhpcy50aW1lcGlja2VyKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kdCkge1xyXG4gICAgICAgIHRoaXMuZHQuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IElucHV0RGF0ZVRpbWVWYWx1ZVR5cGVzKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gaW5zaWRlVmFsdWU7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBpbnNpZGVWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB0aGlzLm9uQ2hhbmdlKGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm1yeC1pbnB1dC1kYXRlXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWQgfHwgaW5uZXJJbnZhbGlkXCJcclxuICBbY2xhc3MuLWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MuLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8bXJ4LWxhYmVsICpuZ0lmPVwidGltZUxhYmVsIHx8IGRhdGVMYWJlbFwiPnt7IGRhdGVMYWJlbCB9fTwvbXJ4LWxhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1kYXRlX193cmFwcGVyXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZV9faW5wdXQgbXJ4LWlucHV0LWRhdGVfX2RhdGVcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwiZ2V0RGF0ZVZhbHVlXCJcclxuICAgICAgICBbbWFza109XCJtYXNrXCJcclxuICAgICAgICBbbGVhZFplcm9EYXRlVGltZV09XCJsZWFkWmVyb0RhdGVUaW1lXCJcclxuICAgICAgICBbdmFsaWRhdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAoaW5wdXQpPVwidXBkYXRlRGF0ZVZhbHVlKGRhdGVJbnB1dClcIlxyXG4gICAgICAgIChjbGljayk9XCJjbGlja1RvSW5wdXQoZGF0ZUlucHV0KVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWRpc2FibGVkXCIgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZV9faWNvbnNcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNWaWV3Q2xlYW5JY29uICYmICEoZGlzYWJsZWQgfHwgcmVhZG9ubHkpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9JY29uQ2xlYXIoKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMTZdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ21lZGl1bScgfHwgc2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2FsZW5kYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9JY29uQ2FsZW5kYXIoKVwiXHJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdzbWFsbCdcIlxyXG4gICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbWVkaXVtJyB8fCBzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAgICpuZ0lmPVwiaW52YWxpZDsgZWxzZSBpbm5lckludmFsaWRUZW1wbGF0ZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lubmVySW52YWxpZFRlbXBsYXRlPlxyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAgICpuZ0lmPVwiaW5uZXJJbnZhbGlkXCJcclxuICAgICAgW2ludmFsaWRNZXNzYWdlXT1cImlubmVySW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuIl19
@@ -49,6 +49,7 @@ export class InputFileComponent {
49
49
  this.placeholderFileMaxSize = 'Размер файла: не больше';
50
50
  this.placeholderFileFormat = 'Формат файла:';
51
51
  this.filesChanged = new EventEmitter();
52
+ this.checkDroppedFile = new EventEmitter();
52
53
  }
53
54
  set initFiles(data) {
54
55
  if (data) {
@@ -250,6 +251,7 @@ export class InputFileComponent {
250
251
  }
251
252
  }
252
253
  checkForUpload(data) {
254
+ this.checkDroppedFile.emit(data);
253
255
  if (!this.canAdd) {
254
256
  data.error = this.messageTooManyFiles;
255
257
  data.uploading = false;
@@ -276,10 +278,10 @@ export class InputFileComponent {
276
278
  }
277
279
  }
278
280
  InputFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputFileComponent, deps: [{ token: i1.FileUploadService }], target: i0.ɵɵFactoryTarget.Component });
279
- InputFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputFileComponent, selector: "mrx-input-file", inputs: { autoUpload: "autoUpload", required: "required", disabled: "disabled", viewOnly: "viewOnly", lightDisabled: "lightDisabled", bottomFiles: "bottomFiles", maxSize: "maxSize", maxFiles: "maxFiles", minFiles: "minFiles", formData: "formData", uploadEndPoint: "uploadEndPoint", deleteEndPoint: "deleteEndPoint", downloadEndPoint: "downloadEndPoint", fileNamePlaceholder: "fileNamePlaceholder", showInputWithError: "showInputWithError", showDeleteButton: "showDeleteButton", isTooltipValue: "isTooltipValue", isDownloadingFile: "isDownloadingFile", isHideListFiles: "isHideListFiles", target: "target", deleteConfirm: "deleteConfirm", innerTemplate: "innerTemplate", uploadAdditionalData: "uploadAdditionalData", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", messageTooManyFiles: "messageTooManyFiles", messageFileTooBig: "messageFileTooBig", messageEmptyFile: "messageEmptyFile", messageInvalidFileFormat: "messageInvalidFileFormat", placeholder: "placeholder", placeholderFileMaxSize: "placeholderFileMaxSize", placeholderFileFormat: "placeholderFileFormat", initFiles: ["files", "initFiles"], initAllowedExtensions: ["allowedExtensions", "initAllowedExtensions"] }, outputs: { filesChanged: "filesChanged" }, ngImport: i0, template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\">\r\n <span class=\"file-link absent\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442\r\n </span>\r\n </div>\r\n\r\n <div *ngFor=\"let file of files; index as i; trackBy: trackByFn\"\r\n [ngClass]=\"{'col-12 col-md': files.length === 1, 'col-12 col-md-6': files.length > 1}\">\r\n <a class=\"file-link\" [href]=\"downloadUrl(file)\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n {{ file.name }}\r\n </a>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ng-custom-file-input-btn-stop ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n >\r\n <span class=\"mrx-icon icon-close icon-font-24 cursor-pointer\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary)!important}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-positive-default);background-color:var(--system-bg-positive-secondary)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}\n"], components: [{ type: i2.NgxFileDropComponent, selector: "ngx-file-drop", inputs: ["accept", "directory", "multiple", "dropZoneLabel", "dropZoneClassName", "useDragEnter", "contentClassName", "showBrowseBtn", "browseBtnClassName", "browseBtnLabel", "disabled"], outputs: ["onFileDrop", "onFileOver", "onFileLeave"] }, { type: i3.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgxFileDropContentTemplateDirective, selector: "[ngx-file-drop-content-tmp]" }, { type: i5.CdkTooltipDirective, selector: "[mrxCdkTooltip]", inputs: ["mrxCdkTooltip", "tooltipActive", "autoCloseByScroll", "tooltipPosition", "tooltipMaxWidth"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
281
+ InputFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputFileComponent, selector: "mrx-input-file", inputs: { autoUpload: "autoUpload", required: "required", disabled: "disabled", viewOnly: "viewOnly", lightDisabled: "lightDisabled", bottomFiles: "bottomFiles", maxSize: "maxSize", maxFiles: "maxFiles", minFiles: "minFiles", formData: "formData", uploadEndPoint: "uploadEndPoint", deleteEndPoint: "deleteEndPoint", downloadEndPoint: "downloadEndPoint", fileNamePlaceholder: "fileNamePlaceholder", showInputWithError: "showInputWithError", showDeleteButton: "showDeleteButton", isTooltipValue: "isTooltipValue", isDownloadingFile: "isDownloadingFile", isHideListFiles: "isHideListFiles", target: "target", deleteConfirm: "deleteConfirm", innerTemplate: "innerTemplate", uploadAdditionalData: "uploadAdditionalData", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", messageTooManyFiles: "messageTooManyFiles", messageFileTooBig: "messageFileTooBig", messageEmptyFile: "messageEmptyFile", messageInvalidFileFormat: "messageInvalidFileFormat", placeholder: "placeholder", placeholderFileMaxSize: "placeholderFileMaxSize", placeholderFileFormat: "placeholderFileFormat", initFiles: ["files", "initFiles"], initAllowedExtensions: ["allowedExtensions", "initAllowedExtensions"] }, outputs: { filesChanged: "filesChanged", checkDroppedFile: "checkDroppedFile" }, ngImport: i0, template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\">\r\n <span class=\"file-link absent\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442\r\n </span>\r\n </div>\r\n\r\n <div *ngFor=\"let file of files; index as i; trackBy: trackByFn\"\r\n [ngClass]=\"{'col-12 col-md': files.length === 1, 'col-12 col-md-6': files.length > 1}\">\r\n <a class=\"file-link\" [href]=\"downloadUrl(file)\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n {{ file.name }}\r\n </a>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n {{ files | json }}\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ng-custom-file-input-btn-stop ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n >\r\n <span class=\"mrx-icon icon-close icon-font-24 cursor-pointer\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary)!important}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-positive-default);background-color:var(--system-bg-positive-secondary)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}\n"], components: [{ type: i2.NgxFileDropComponent, selector: "ngx-file-drop", inputs: ["accept", "directory", "multiple", "dropZoneLabel", "dropZoneClassName", "useDragEnter", "contentClassName", "showBrowseBtn", "browseBtnClassName", "browseBtnLabel", "disabled"], outputs: ["onFileDrop", "onFileOver", "onFileLeave"] }, { type: i3.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgxFileDropContentTemplateDirective, selector: "[ngx-file-drop-content-tmp]" }, { type: i5.CdkTooltipDirective, selector: "[mrxCdkTooltip]", inputs: ["mrxCdkTooltip", "tooltipActive", "autoCloseByScroll", "tooltipPosition", "tooltipMaxWidth"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "json": i4.JsonPipe } });
280
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputFileComponent, decorators: [{
281
283
  type: Component,
282
- args: [{ selector: 'mrx-input-file', template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\">\r\n <span class=\"file-link absent\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442\r\n </span>\r\n </div>\r\n\r\n <div *ngFor=\"let file of files; index as i; trackBy: trackByFn\"\r\n [ngClass]=\"{'col-12 col-md': files.length === 1, 'col-12 col-md-6': files.length > 1}\">\r\n <a class=\"file-link\" [href]=\"downloadUrl(file)\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n {{ file.name }}\r\n </a>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ng-custom-file-input-btn-stop ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n >\r\n <span class=\"mrx-icon icon-close icon-font-24 cursor-pointer\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary)!important}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-positive-default);background-color:var(--system-bg-positive-secondary)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}\n"] }]
284
+ args: [{ selector: 'mrx-input-file', template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\">\r\n <span class=\"file-link absent\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n \u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442\r\n </span>\r\n </div>\r\n\r\n <div *ngFor=\"let file of files; index as i; trackBy: trackByFn\"\r\n [ngClass]=\"{'col-12 col-md': files.length === 1, 'col-12 col-md-6': files.length > 1}\">\r\n <a class=\"file-link\" [href]=\"downloadUrl(file)\">\r\n <svg class=\"fill\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width='16' viewBox=\"0 0 16 20\">\r\n <defs/>\r\n <path fill=\"#B79B7E\" fill-rule=\"evenodd\"\r\n d=\"M2 0C.896 0 0 .896 0 2v16c0 1.104.896 2 2 2h12c1.104 0 2-.896 2-2V6l-6-6H2zm8 7H9V2l5 5h-4z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n {{ file.name }}\r\n </a>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n {{ files | json }}\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ng-custom-file-input-btn-stop ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n >\r\n <span class=\"mrx-icon icon-close icon-font-24 cursor-pointer\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary)!important}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default)}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{border-color:var(--system-bg-controls-positive-default);background-color:var(--system-bg-positive-secondary)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}\n"] }]
283
285
  }], ctorParameters: function () { return [{ type: i1.FileUploadService }]; }, propDecorators: { autoUpload: [{
284
286
  type: Input
285
287
  }], required: [{
@@ -354,5 +356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
354
356
  args: ['allowedExtensions']
355
357
  }], filesChanged: [{
356
358
  type: Output
359
+ }], checkDroppedFile: [{
360
+ type: Output
357
361
  }] } });
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUEwRTdCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBekV4RCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFD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c0JBQXBDLEtBQUs7Z0JBR0YsU0FBUztzQkFEWixLQUFLO3VCQUFDLE9BQU87Z0JBY0gscUJBQXFCO3NCQUQvQixLQUFLO3VCQUFDLG1CQUFtQjtnQkFXVCxZQUFZO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hGaWxlRHJvcEVudHJ5IH0gZnJvbSAnbmd4LWZpbGUtZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IElucHV0RmlsZU1vZGVsLCBVcGxvYWRlZEZpbGVNb2RlbCwgVXBsb2FkZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbnB1dC1maWxlL2lucHV0LWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBmb3JtYXRCeXRlcyB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvZXh0ZW5zaW9uL2lucHV0LWZpbGUuZXh0ZW5zaW9uJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc0VudW0gfSBmcm9tICcuL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVUYXJnZXRUeXBlcywgSW5wdXRGaWxlVGFyZ2V0VHlwZXNFbnVtIH0gZnJvbSAnLi9pbnB1dC1maWxlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RmlsZUNvbXBvbmVudCB7XHJcbiAgZm9ybWF0Qnl0ZXMgPSBmb3JtYXRCeXRlcztcclxuICBleHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzOiBJbnB1dEZpbGVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvVXBsb2FkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlld09ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbGlnaHREaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBib3R0b21GaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTaXplID0gMzE0NTcyODA7XHJcbiAgQElucHV0KCkgcHVibGljIG1heEZpbGVzID0gNTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWluRmlsZXMgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307IC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRvd25sb2FkRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGZpbGVOYW1lUGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dJbnB1dFdpdGhFcnJvciA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dEZWxldGVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc1Rvb2x0aXBWYWx1ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rvd25sb2FkaW5nRmlsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzSGlkZUxpc3RGaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YXJnZXQ6IElucHV0RmlsZVRhcmdldFR5cGVzID0gJ19zZWxmJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlQ29uZmlybT86IChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCwgcmVzdWx0OiAob2s6IGJvb2xlYW4pID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEFkZGl0aW9uYWxEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gRVJST1JcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gRVJST1IgTUVTU0FHRVNcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZVRvb01hbnlGaWxlczogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uVG9vTWFueUZpbGVzO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlRmlsZVRvb0JpZzogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRmlsZVRvb0JpZztcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUVtcHR5RmlsZTogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRW1wdHlGaWxlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlSW52YWxpZEZpbGVGb3JtYXQ6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLkludmFsaWRGaWxlRm9ybWF0O1xyXG5cclxuICAvLyBQTEFDRUhPTERFUlNcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0J/QtdGA0LXQvdC10YHQuNGC0LUg0YTQsNC50Lsg0YEg0YPRgdGC0YDQvtC50YHRgtCy0LAg0LjQu9C4INC90LDQttC80LjRgtC1INC90LAg0LTQsNC90L3QvtC1INC/0L7Qu9C1INC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRhNCw0LnQu9CwJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJGaWxlTWF4U2l6ZSA9ICfQoNCw0LfQvNC10YAg0YTQsNC50LvQsDog0L3QtSDQsdC+0LvRjNGI0LUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckZpbGVGb3JtYXQgPSAn0KTQvtGA0LzQsNGCINGE0LDQudC70LA6JztcclxuXHJcbiAgQElucHV0KCdmaWxlcycpXHJcbiAgc2V0IGluaXRGaWxlcyhkYXRhOiBVcGxvYWRlZEZpbGVNb2RlbFtdIHwgVXBsb2FkZWRGaWxlTW9kZWwpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubWFwKHMgPT4gKHsgLi4ucyB9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFt7IC4uLmRhdGEgfV07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnYWxsb3dlZEV4dGVuc2lvbnMnKVxyXG4gIHB1YmxpYyBzZXQgaW5pdEFsbG93ZWRFeHRlbnNpb25zKHZhbDogc3RyaW5nW10pIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IHZhbDtcclxuICAgICAgdGhpcy5leHRlbnNpb25zID0gdmFsLmpvaW4oJywgJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gW107XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXRGaWxlTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuQWRkKCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0lucHV0V2l0aEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1heEZpbGVzID4gdGhpcy5maWxlcy5maWx0ZXIocyA9PiAhcy5lcnJvcikubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXMgPiB0aGlzLmZpbGVzLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0VGFyZ2V0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSW5wdXRGaWxlVGFyZ2V0VHlwZXNFbnVtW3RoaXMudGFyZ2V0XVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0ludmFsaWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCAhIXRoaXMuaW52YWxpZE1lc3NhZ2UubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZVZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VG9vbHRpcFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNUb29sdGlwVmFsdWUgJiYgdmFsdWUgPyB2YWx1ZSA6ICcnXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYmFzZVZhbGlkYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIHJldHVybiBCb29sZWFuKGl0ZW0udXVpZCkgPyBpdGVtLnV1aWQgOiBpdGVtLnRlbXBVdWlkO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWxldGVDb25maXJtKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlybShmaWxlLCAob2spID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIGNvbnN0IGZpbmRGaWxlID0gdGhpcy5maWxlcy5maW5kKHMgPT4gcy51dWlkID09PSBmaWxlLnV1aWQpO1xyXG4gICAgICAgICAgaWYgKGZpbmRGaWxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlbGV0ZUVuZFBvaW50KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmNyZWF0ZUZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdRcXV1aWQnLCBmaWxlLnV1aWQpO1xyXG4gICAgICAgICAgICAgIGZpbmRGaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1VwbG9hZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCwgZm9ybURhdGEpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKGZpbGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5DYW5jZWxVcGxvYWRpbmcoZmlsZTogSW5wdXRGaWxlTW9kZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIWZpbGUudXBsb2FkaW5nICYmIGZpbGUucGVyY2VudGFnZSA/IGZpbGUucGVyY2VudGFnZSA8IDkwIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGVhcihmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKGZpbGUudXBsb2FkaW5nKSB7XHJcbiAgICAgIGlmIChmaWxlLmV4ZWN1dGlvbikge1xyXG4gICAgICAgIGZpbGUuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaW5kRmlsZUlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChmaW5kRmlsZUlkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGZpbmRGaWxlSWR4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkVXJsKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmIChmaWxlLnVybCAmJiAhZmlsZS5zaXplKSB7XHJcbiAgICAgIHJldHVybiBmaWxlLnVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRvd25sb2FkRW5kUG9pbnQpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kb3dubG9hZEVuZFBvaW50fT91dWlkPSR7ZmlsZS51dWlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICcjJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcm9wcGVkKGZpbGVzOiBOZ3hGaWxlRHJvcEVudHJ5W10pIHtcclxuICAgIGZvciAoY29uc3QgZHJvcHBlZEZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgaWYgKGRyb3BwZWRGaWxlLmZpbGVFbnRyeS5pc0ZpbGUpIHtcclxuICAgICAgICBjb25zdCBmaWxlRW50cnkgPSBkcm9wcGVkRmlsZS5maWxlRW50cnkgYXMgRmlsZVN5c3RlbUZpbGVFbnRyeTtcclxuICAgICAgICBmaWxlRW50cnkuZmlsZSgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEl0IHdhcyBhIGRpcmVjdG9yeSAoZW1wdHkgZGlyZWN0b3JpZXMgYXJlIGFkZGVkLCBvdGhlcndpc2Ugb25seSBmaWxlcylcclxuICAgICAgICBjb25zdCBmaWxlRW50cnkgPSBkcm9wcGVkRmlsZS5maWxlRW50cnkgYXMgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1EYXRhS2V5cygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1EYXRhKCk6IEZvcm1EYXRhIHtcclxuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmICh0aGlzLm1heEZpbGVzKSB7XHJcbiAgICAgIGZvcm0uYXBwZW5kKCdNYXhGaWxlcycsIHRoaXMubWF4RmlsZXMudG9TdHJpbmcoMTApKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGtleXMgPSB0aGlzLmZvcm1EYXRhS2V5cygpO1xyXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiBmb3JtLmFwcGVuZChrZXksIHRoaXMuZm9ybURhdGFba2V5XSkpO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgdXVpZDogJycsXHJcbiAgICAgIHRlbXBVdWlkOiB1dWlkdjQoKSxcclxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICBzaXplOiBmaWxlLnNpemUsXHJcbiAgICAgIHVwbG9hZGluZzogdHJ1ZSxcclxuICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgZmlsZTogZmlsZVxyXG4gICAgfSBhcyBJbnB1dEZpbGVNb2RlbDtcclxuXHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JVcGxvYWQoZGF0YSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5jcmVhdGVGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdGaWxlJywgZmlsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGEgJiYgT2JqZWN0LmtleXModGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YSkubGVuZ3RoKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGEpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhW2tleV0pO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcclxuICAgICAgZGF0YS5leGVjdXRpb24gPSB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnVwbG9hZCh0aGlzLnVwbG9hZEVuZFBvaW50LCBmb3JtRGF0YSkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBIdHRwRXZlbnQ8VXBsb2FkZWRSZXN1bHRNb2RlbD4pID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlSGVhZGVyOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsICogMTAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQuYm9keSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRhdGEucGVyY2VudGFnZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnV1aWQgPSBldmVudC5ib2R5LnV1aWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmZpbGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmVycm9yID0gZXZlbnQuYm9keS5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGEuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXMuZXZlcnkocyA9PiAhcy51cGxvYWRpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIocyA9PiAhcy5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQoY29tcGxldGVkRmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGRhdGEudXVpZCA9IGRhdGEudGVtcFV1aWQgfHwgJyc7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGb3JVcGxvYWQoZGF0YTogSW5wdXRGaWxlTW9kZWwpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jYW5BZGQpIHtcclxuICAgICAgZGF0YS5lcnJvciA9IHRoaXMubWVzc2FnZVRvb01hbnlGaWxlcztcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA+IHRoaXMubWF4U2l6ZSkge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlRmlsZVRvb0JpZztcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA9PSAwKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VFbXB0eUZpbGU7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFsbG93ZWRFeHRlbnNpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuYWxsb3dlZEV4dGVuc2lvbnMuc29tZShcclxuICAgICAgcyA9PiBkYXRhLmZpbGUgJiYgZGF0YS5maWxlLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzLnRvTG93ZXJDYXNlKCkpKSkge1xyXG5cclxuICAgICAgZGF0YS5lcnJvciA9IHRoaXMubWVzc2FnZUludmFsaWRGaWxlRm9ybWF0O1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibmctZm9ybS1maWxlLWlucHV0XCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgKm5nSWY9XCJkaXNhYmxlZDsgZWxzZSBub3REaXNhYmxlZFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFmaWxlcyB8fCBmaWxlcy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1saW5rIGFic2VudFwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgd2lkdGg9JzE2JyB2aWV3Qm94PVwiMCAwIDE2IDIwXCI+XHJcbiAgICAgICAgICA8ZGVmcy8+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsPVwiI0I3OUI3RVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgZD1cIk0yIDBDLjg5NiAwIDAgLjg5NiAwIDJ2MTZjMCAxLjEwNC44OTYgMiAyIDJoMTJjMS4xMDQgMCAyLS44OTYgMi0yVjZsLTYtNkgyem04IDdIOVYybDUgNWgtNHpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICDQlNC+0LrRg9C80LXQvdGC0L7QsiDQvdC10YJcclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydjb2wtMTIgY29sLW1kJzogZmlsZXMubGVuZ3RoID09PSAxLCAnY29sLTEyIGNvbC1tZC02JzogZmlsZXMubGVuZ3RoID4gMX1cIj5cclxuICAgICAgPGEgY2xhc3M9XCJmaWxlLWxpbmtcIiBbaHJlZl09XCJkb3dubG9hZFVybChmaWxlKVwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgd2lkdGg9JzE2JyB2aWV3Qm94PVwiMCAwIDE2IDIwXCI+XHJcbiAgICAgICAgICA8ZGVmcy8+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsPVwiI0I3OUI3RVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgZD1cIk0yIDBDLjg5NiAwIDAgLjg5NiAwIDJ2MTZjMCAxLjEwNC44OTYgMiAyIDJoMTJjMS4xMDQgMCAyLS44OTYgMi0yVjZsLTYtNkgyem04IDdIOVYybDUgNWgtNHpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICB7eyBmaWxlLm5hbWUgfX1cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDp7fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vdERpc2FibGVkPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFib3R0b21GaWxlcyAmJiAhaXNIaWRlTGlzdEZpbGVzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlTGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclRlbXBsYXRlOyBjb250ZXh0Ont9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAqbmdJZj1cImNhbkFkZFwiXHJcbiAgICAgIFtjbGFzc05hbWVdPVwiJ25nLWN1c3RvbS1maWxlLWlucHV0J1wiXHJcbiAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsaWdodERpc2FibGVkXCJcclxuICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50XCJcclxuICAgICAgICAgIChjbGljayk9XCIhbGlnaHREaXNhYmxlZCA/IG9wZW5GaWxlU2VsZWN0b3IoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50LS1wbGFjZWhvbGRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAge3twbGFjZWhvbGRlcn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtY29udGVudC0tc2l6ZVwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJGaWxlTWF4U2l6ZX19IHt7Zm9ybWF0Qnl0ZXMobWF4U2l6ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLWV4dGVuc2lvbnNcIiAqbmdJZj1cImV4dGVuc2lvbnNcIj5cclxuICAgICAgICAgICAgICB7e3BsYWNlaG9sZGVyRmlsZUZvcm1hdH19IHt7ZXh0ZW5zaW9uc319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25neC1maWxlLWRyb3A+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbUZpbGVzICYmICFpc0hpZGVMaXN0RmlsZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbGVMaXN0VGVtcGxhdGU+XHJcbiAgPHVsIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0XCIgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIj5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm5ldy1jdXN0b20tZmlsZS1pbnB1dF9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2ZpbGUtZXJyb3InOiBmaWxlLmVycm9yfVwiXHJcbiAgICAgIFttcnhDZGtUb29sdGlwXT1cImdldFRvb2x0aXBWYWx1ZShmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZSB8fCAnJylcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIid0b3Atc3RhcnQnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9VcGxvYWRcIj5cclxuICAgICAgICA8YSBjbGFzcz1cInFxLWRvd25sb2FkLWxpbmtcIiBbdGFyZ2V0XT1cImdldFRhcmdldFwiIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgKm5nSWY9XCJmaWxlLnV1aWQgJiYgaXNEb3dubG9hZGluZ0ZpbGVcIj48L2E+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicXEtZmlsZS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJxcS11cGxvYWQtZmlsZS1zZWxlY3RvciBxcS11cGxvYWQtZmlsZVwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICA+e3tmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXRfcHJvZ3Jlc3NcIiAqbmdJZj1cImZpbGUudXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXEtdXBsb2FkLXNpemUtc2VsZWN0b3IgcXEtdXBsb2FkLXNpemVcIiAqbmdJZj1cIiFmaWxlLmVycm9yXCI+e3tmb3JtYXRCeXRlcyhmaWxlLnNpemUpfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZCAmJiBmaWxlLnV1aWQgJiYgc2hvd0RlbGV0ZUJ1dHRvbiAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGZpbGUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMjQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwi0KPQtNCw0LvQuNGC0YxcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtZXJyb3JcIiAqbmdJZj1cImZpbGUuZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBpY29uLWNvbG9yLXJlZCBpY29uLWZvbnQtMTYgbXItMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvci1uZWdhdGl2ZVwiPnt7ZmlsZS5lcnJvcn19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1idG4tc3RvcCBtbC0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIoZmlsZS5lcnJvciAmJiAhZmlsZS51dWlkKSB8fCBjYW5DYW5jZWxVcGxvYWRpbmcoZmlsZSkgJiYgIXZpZXdPbmx5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKGZpbGUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNCBjdXJzb3ItcG9pbnRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUEyRTdCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUV4RCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFD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LEtBQUs7Z0JBQ1Usd0JBQXdCO3NCQUF2QyxLQUFLO2dCQUdVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFHRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFjSCxxQkFBcUI7c0JBRC9CLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVdULFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hGaWxlRHJvcEVudHJ5IH0gZnJvbSAnbmd4LWZpbGUtZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IElucHV0RmlsZU1vZGVsLCBVcGxvYWRlZEZpbGVNb2RlbCwgVXBsb2FkZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbnB1dC1maWxlL2lucHV0LWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBmb3JtYXRCeXRlcyB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvZXh0ZW5zaW9uL2lucHV0LWZpbGUuZXh0ZW5zaW9uJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc0VudW0gfSBmcm9tICcuL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVUYXJnZXRUeXBlcywgSW5wdXRGaWxlVGFyZ2V0VHlwZXNFbnVtIH0gZnJvbSAnLi9pbnB1dC1maWxlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RmlsZUNvbXBvbmVudCB7XHJcbiAgZm9ybWF0Qnl0ZXMgPSBmb3JtYXRCeXRlcztcclxuICBleHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzOiBJbnB1dEZpbGVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvVXBsb2FkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlld09ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbGlnaHREaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBib3R0b21GaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTaXplID0gMzE0NTcyODA7XHJcbiAgQElucHV0KCkgcHVibGljIG1heEZpbGVzID0gNTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWluRmlsZXMgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307IC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRvd25sb2FkRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGZpbGVOYW1lUGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dJbnB1dFdpdGhFcnJvciA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dEZWxldGVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc1Rvb2x0aXBWYWx1ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rvd25sb2FkaW5nRmlsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzSGlkZUxpc3RGaWxlcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YXJnZXQ6IElucHV0RmlsZVRhcmdldFR5cGVzID0gJ19zZWxmJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlQ29uZmlybT86IChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCwgcmVzdWx0OiAob2s6IGJvb2xlYW4pID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEFkZGl0aW9uYWxEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gRVJST1JcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gRVJST1IgTUVTU0FHRVNcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZVRvb01hbnlGaWxlczogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uVG9vTWFueUZpbGVzO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlRmlsZVRvb0JpZzogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRmlsZVRvb0JpZztcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUVtcHR5RmlsZTogc3RyaW5nID0gRXJyb3JNZXNzYWdlc0VudW0uRW1wdHlGaWxlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlSW52YWxpZEZpbGVGb3JtYXQ6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLkludmFsaWRGaWxlRm9ybWF0O1xyXG5cclxuICAvLyBQTEFDRUhPTERFUlNcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0J/QtdGA0LXQvdC10YHQuNGC0LUg0YTQsNC50Lsg0YEg0YPRgdGC0YDQvtC50YHRgtCy0LAg0LjQu9C4INC90LDQttC80LjRgtC1INC90LAg0LTQsNC90L3QvtC1INC/0L7Qu9C1INC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRhNCw0LnQu9CwJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJGaWxlTWF4U2l6ZSA9ICfQoNCw0LfQvNC10YAg0YTQsNC50LvQsDog0L3QtSDQsdC+0LvRjNGI0LUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckZpbGVGb3JtYXQgPSAn0KTQvtGA0LzQsNGCINGE0LDQudC70LA6JztcclxuXHJcbiAgQElucHV0KCdmaWxlcycpXHJcbiAgc2V0IGluaXRGaWxlcyhkYXRhOiBVcGxvYWRlZEZpbGVNb2RlbFtdIHwgVXBsb2FkZWRGaWxlTW9kZWwpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubWFwKHMgPT4gKHsgLi4ucyB9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFt7IC4uLmRhdGEgfV07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnYWxsb3dlZEV4dGVuc2lvbnMnKVxyXG4gIHB1YmxpYyBzZXQgaW5pdEFsbG93ZWRFeHRlbnNpb25zKHZhbDogc3RyaW5nW10pIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IHZhbDtcclxuICAgICAgdGhpcy5leHRlbnNpb25zID0gdmFsLmpvaW4oJywgJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gW107XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXRGaWxlTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGVja0Ryb3BwZWRGaWxlOiBFdmVudEVtaXR0ZXI8SW5wdXRGaWxlTW9kZWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkFkZCgpIHtcclxuICAgIGlmICh0aGlzLnNob3dJbnB1dFdpdGhFcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhGaWxlcyA+IHRoaXMuZmlsZXMuZmlsdGVyKHMgPT4gIXMuZXJyb3IpLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1heEZpbGVzID4gdGhpcy5maWxlcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldFRhcmdldCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElucHV0RmlsZVRhcmdldFR5cGVzRW51bVt0aGlzLnRhcmdldF1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJhc2VWYWxpZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRvb2x0aXBWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9vbHRpcFZhbHVlICYmIHZhbHVlID8gdmFsdWUgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGJhc2VWYWxpZGF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihpdGVtLnV1aWQpID8gaXRlbS51dWlkIDogaXRlbS50ZW1wVXVpZDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVsZXRlQ29uZmlybSkge1xyXG4gICAgICB0aGlzLmRlbGV0ZUNvbmZpcm0oZmlsZSwgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKG9rKSB7XHJcbiAgICAgICAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZChzID0+IHMudXVpZCA9PT0gZmlsZS51dWlkKTtcclxuICAgICAgICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWxldGVFbmRQb2ludCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5jcmVhdGVGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnUXF1dWlkJywgZmlsZS51dWlkKTtcclxuICAgICAgICAgICAgICBmaW5kRmlsZS5kZWxldGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQsIGZvcm1EYXRhKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcihmaWxlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuQ2FuY2VsVXBsb2FkaW5nKGZpbGU6IElucHV0RmlsZU1vZGVsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFmaWxlLnVwbG9hZGluZyAmJiBmaWxlLnBlcmNlbnRhZ2UgPyBmaWxlLnBlcmNlbnRhZ2UgPCA5MCA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoZmlsZTogSW5wdXRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGlmIChmaWxlLnVwbG9hZGluZykge1xyXG4gICAgICBpZiAoZmlsZS5leGVjdXRpb24pIHtcclxuICAgICAgICBmaWxlLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmluZEZpbGVJZHggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XHJcbiAgICBpZiAoZmluZEZpbGVJZHggPj0gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShmaW5kRmlsZUlkeCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFVybChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoZmlsZS51cmwgJiYgIWZpbGUuc2l6ZSkge1xyXG4gICAgICByZXR1cm4gZmlsZS51cmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kb3dubG9hZEVuZFBvaW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZG93bmxvYWRFbmRQb2ludH0/dXVpZD0ke2ZpbGUudXVpZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnIyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJvcHBlZChmaWxlczogTmd4RmlsZURyb3BFbnRyeVtdKSB7XHJcbiAgICBmb3IgKGNvbnN0IGRyb3BwZWRGaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgIGlmIChkcm9wcGVkRmlsZS5maWxlRW50cnkuaXNGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZUVudHJ5ID0gZHJvcHBlZEZpbGUuZmlsZUVudHJ5IGFzIEZpbGVTeXN0ZW1GaWxlRW50cnk7XHJcbiAgICAgICAgZmlsZUVudHJ5LmZpbGUoKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJdCB3YXMgYSBkaXJlY3RvcnkgKGVtcHR5IGRpcmVjdG9yaWVzIGFyZSBhZGRlZCwgb3RoZXJ3aXNlIG9ubHkgZmlsZXMpXHJcbiAgICAgICAgY29uc3QgZmlsZUVudHJ5ID0gZHJvcHBlZEZpbGUuZmlsZUVudHJ5IGFzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtRGF0YUtleXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtRGF0YSgpOiBGb3JtRGF0YSB7XHJcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBpZiAodGhpcy5tYXhGaWxlcykge1xyXG4gICAgICBmb3JtLmFwcGVuZCgnTWF4RmlsZXMnLCB0aGlzLm1heEZpbGVzLnRvU3RyaW5nKDEwKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXlzID0gdGhpcy5mb3JtRGF0YUtleXMoKTtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZm9ybS5hcHBlbmQoa2V5LCB0aGlzLmZvcm1EYXRhW2tleV0pKTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHV1aWQ6ICcnLFxyXG4gICAgICB0ZW1wVXVpZDogdXVpZHY0KCksXHJcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgc2l6ZTogZmlsZS5zaXplLFxyXG4gICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH0gYXMgSW5wdXRGaWxlTW9kZWw7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNoZWNrRm9yVXBsb2FkKGRhdGEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuY3JlYXRlRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnRmlsZScsIGZpbGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhICYmIE9iamVjdC5rZXlzKHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGEpLmxlbmd0aCkge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YVtrZXldKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgIGRhdGEuZXhlY3V0aW9uID0gdGhpcy5maWxlVXBsb2FkU2VydmljZS51cGxvYWQodGhpcy51cGxvYWRFbmRQb2ludCwgZm9ybURhdGEpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogSHR0cEV2ZW50PFVwbG9hZGVkUmVzdWx0TW9kZWw+KSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZUhlYWRlcjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSAwO1xyXG4gICAgICAgICAgICAgICAgZGF0YS51dWlkID0gZXZlbnQuYm9keS51dWlkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5lcnJvciA9IGV2ZW50LmJvZHkubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRGaWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKHMgPT4gIXMuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KGNvbXBsZXRlZEZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBkYXRhLnV1aWQgPSBkYXRhLnRlbXBVdWlkIHx8ICcnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsZXMuZXZlcnkocyA9PiAhcy51cGxvYWRpbmcpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZvclVwbG9hZChkYXRhOiBJbnB1dEZpbGVNb2RlbCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5jaGVja0Ryb3BwZWRGaWxlLmVtaXQoZGF0YSlcclxuXHJcbiAgICBpZiAoIXRoaXMuY2FuQWRkKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VUb29NYW55RmlsZXM7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuXHJcbiAgICBpZiAoZGF0YS5maWxlICYmIGRhdGEuZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VGaWxlVG9vQmlnO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA9PSAwKSB7XHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VFbXB0eUZpbGU7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmFsbG93ZWRFeHRlbnNpb25zLnNvbWUoXHJcbiAgICAgIHMgPT4gZGF0YS5maWxlICYmIGRhdGEuZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocy50b0xvd2VyQ2FzZSgpKSkpIHtcclxuXHJcbiAgICAgIGRhdGEuZXJyb3IgPSB0aGlzLm1lc3NhZ2VJbnZhbGlkRmlsZUZvcm1hdDtcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJuZy1mb3JtLWZpbGUtaW5wdXRcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIiAqbmdJZj1cImRpc2FibGVkOyBlbHNlIG5vdERpc2FibGVkXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTZcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLWxpbmsgYWJzZW50XCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGxcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB3aWR0aD0nMTYnIHZpZXdCb3g9XCIwIDAgMTYgMjBcIj5cclxuICAgICAgICAgIDxkZWZzLz5cclxuICAgICAgICAgIDxwYXRoIGZpbGw9XCIjQjc5QjdFXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTTIgMEMuODk2IDAgMCAuODk2IDAgMnYxNmMwIDEuMTA0Ljg5NiAyIDIgMmgxMmMxLjEwNCAwIDItLjg5NiAyLTJWNmwtNi02SDJ6bTggN0g5VjJsNSA1aC00elwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgINCU0L7QutGD0LzQtdC90YLQvtCyINC90LXRglxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICBbbmdDbGFzc109XCJ7J2NvbC0xMiBjb2wtbWQnOiBmaWxlcy5sZW5ndGggPT09IDEsICdjb2wtMTIgY29sLW1kLTYnOiBmaWxlcy5sZW5ndGggPiAxfVwiPlxyXG4gICAgICA8YSBjbGFzcz1cImZpbGUtbGlua1wiIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGxcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB3aWR0aD0nMTYnIHZpZXdCb3g9XCIwIDAgMTYgMjBcIj5cclxuICAgICAgICAgIDxkZWZzLz5cclxuICAgICAgICAgIDxwYXRoIGZpbGw9XCIjQjc5QjdFXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTTIgMEMuODk2IDAgMCAuODk2IDAgMnYxNmMwIDEuMTA0Ljg5NiAyIDIgMmgxMmMxLjEwNCAwIDItLjg5NiAyLTJWNmwtNi02SDJ6bTggN0g5VjJsNSA1aC00elwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIHt7IGZpbGUubmFtZSB9fVxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclRlbXBsYXRlOyBjb250ZXh0Ont9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbm90RGlzYWJsZWQ+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJvdHRvbUZpbGVzICYmICFpc0hpZGVMaXN0RmlsZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAge3sgZmlsZXMgfCBqc29uIH19XHJcbiAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAqbmdJZj1cImNhbkFkZFwiXHJcbiAgICAgIFtjbGFzc05hbWVdPVwiJ25nLWN1c3RvbS1maWxlLWlucHV0J1wiXHJcbiAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsaWdodERpc2FibGVkXCJcclxuICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50XCJcclxuICAgICAgICAgIChjbGljayk9XCIhbGlnaHREaXNhYmxlZCA/IG9wZW5GaWxlU2VsZWN0b3IoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50LS1wbGFjZWhvbGRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAge3twbGFjZWhvbGRlcn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtY29udGVudC0tc2l6ZVwiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJGaWxlTWF4U2l6ZX19IHt7Zm9ybWF0Qnl0ZXMobWF4U2l6ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLWV4dGVuc2lvbnNcIiAqbmdJZj1cImV4dGVuc2lvbnNcIj5cclxuICAgICAgICAgICAgICB7e3BsYWNlaG9sZGVyRmlsZUZvcm1hdH19IHt7ZXh0ZW5zaW9uc319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25neC1maWxlLWRyb3A+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbUZpbGVzICYmICFpc0hpZGVMaXN0RmlsZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbGVMaXN0VGVtcGxhdGU+XHJcbiAgPHVsIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0XCIgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIj5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm5ldy1jdXN0b20tZmlsZS1pbnB1dF9faXRlbVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2ZpbGUtZXJyb3InOiBmaWxlLmVycm9yfVwiXHJcbiAgICAgIFttcnhDZGtUb29sdGlwXT1cImdldFRvb2x0aXBWYWx1ZShmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZSB8fCAnJylcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIid0b3Atc3RhcnQnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9VcGxvYWRcIj5cclxuICAgICAgICA8YSBjbGFzcz1cInFxLWRvd25sb2FkLWxpbmtcIiBbdGFyZ2V0XT1cImdldFRhcmdldFwiIFtocmVmXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgKm5nSWY9XCJmaWxlLnV1aWQgJiYgaXNEb3dubG9hZGluZ0ZpbGVcIj48L2E+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicXEtZmlsZS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJxcS11cGxvYWQtZmlsZS1zZWxlY3RvciBxcS11cGxvYWQtZmlsZVwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZVwiXHJcbiAgICAgICAgICA+e3tmaWxlTmFtZVBsYWNlaG9sZGVyID8gZmlsZU5hbWVQbGFjZWhvbGRlciA6IGZpbGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXRfcHJvZ3Jlc3NcIiAqbmdJZj1cImZpbGUudXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXEtdXBsb2FkLXNpemUtc2VsZWN0b3IgcXEtdXBsb2FkLXNpemVcIiAqbmdJZj1cIiFmaWxlLmVycm9yXCI+e3tmb3JtYXRCeXRlcyhmaWxlLnNpemUpfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZCAmJiBmaWxlLnV1aWQgJiYgc2hvd0RlbGV0ZUJ1dHRvbiAmJiAhdmlld09ubHlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGZpbGUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMjQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwi0KPQtNCw0LvQuNGC0YxcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtZXJyb3JcIiAqbmdJZj1cImZpbGUuZXJyb3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBpY29uLWNvbG9yLXJlZCBpY29uLWZvbnQtMTYgbXItMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvci1uZWdhdGl2ZVwiPnt7ZmlsZS5lcnJvcn19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1idG4tc3RvcCBtbC0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIoZmlsZS5lcnJvciAmJiAhZmlsZS51dWlkKSB8fCBjYW5DYW5jZWxVcGxvYWRpbmcoZmlsZSkgJiYgIXZpZXdPbmx5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKGZpbGUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNCBjdXJzb3ItcG9pbnRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19