@sapphire-ion/framework 1.3.8 → 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +10 -3
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +8 -1
- package/esm2022/lib/services/web/storage.service.mjs +31 -1
- package/fesm2022/sapphire-ion-framework.mjs +46 -2
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/input-file/input-file.component.d.ts +0 -1
- package/lib/services/web/storage.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -19,6 +19,13 @@ import * as i6 from "@angular/material/datepicker";
|
|
|
19
19
|
export class InputDateComponent extends CustomInput {
|
|
20
20
|
static { this.FormatISO = 'YYYY-MM-DDTHH:mm:ss'; }
|
|
21
21
|
setFocus(event) {
|
|
22
|
+
if (this.presentation == DatePresentation.Time) {
|
|
23
|
+
// em vez de focar, já abre o picker/modal
|
|
24
|
+
if (!event)
|
|
25
|
+
return;
|
|
26
|
+
this.Present(event);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
22
29
|
if (this.input && (event == null || event.target == this.inputContainer.nativeElement)) {
|
|
23
30
|
this.input.nativeElement.focus();
|
|
24
31
|
}
|
|
@@ -214,14 +221,14 @@ export class InputDateComponent extends CustomInput {
|
|
|
214
221
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize($event)", "keydown": "onKeyDown($event)" } }, providers: [
|
|
215
222
|
...InputProviderFactory.GetProviders(InputDateComponent),
|
|
216
223
|
{ provide: CustomInput, useExisting: forwardRef(() => InputDateComponent) },
|
|
217
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "datetime", first: true, predicate: IonDatetime, descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "modal", first: true, predicate: IonModal, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"readableValue\" \r\n (ngModelChange)=\"SetValueFromReadable($event);\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n />\r\n <ion-button *ngIf=\"configuration().clearable && readableValue\" tabindex=\"-1\" class=\"absolute right-8 bottom-1\" \r\n (click)=\"ClearValue($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\"\r\n >\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-2 bottom-1\" (click)=\"Present($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == DatePresentation.Time ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n@if (interface() == DateInterfaces.Popover) {\r\n <sion-popover\r\n #popover \r\n [anchor]=\"inputContainer\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </sion-popover>\r\n}\r\n@else {\r\n <ion-modal \r\n #modal\r\n [class.time]=\"presentation == DatePresentation.Time\" \r\n [class.date]=\"presentation == DatePresentation.Date\" \r\n [class.datetime]=\"presentation == DatePresentation.DateTime\"\r\n >\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n}\r\n\r\n\r\n<ng-template #datetimeTemplate>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n \r\n @if ([DatePresentation.DateTime, DatePresentation.Date].includes(presentation)) {\r\n <mat-calendar #calendar class=\"w-72 text-dark\" \r\n [(selected)]=\"momentValue\" \r\n (selectedChange)=\"SetValueFromMoment($event)\"\r\n ></mat-calendar>\r\n }\r\n @if ([DatePresentation.DateTime, DatePresentation.Time].includes(presentation)) {\r\n <div class=\"flex h-full mask-y/30 items-center justify-center\">\r\n <ion-picker>\r\n <ion-picker-column (ionChange)=\"OnChangeHour($event.target.value.toString())\" [value]=\"hour\">\r\n @for (item of lstHours; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n <ion-picker-column (ionChange)=\"OnChangeMinute($event.target.value.toString())\" [value]=\"minute\">\r\n @for (item of lstMinutes; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n </ion-picker>\r\n </div>\r\n }\r\n\r\n </div>\r\n</ng-template>\r\n", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-picker{height:100%;--fade-background-rgb: transparent}ion-modal{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonPicker, selector: "ion-picker", inputs: ["mode"] }, { kind: "component", type: i1.IonPickerColumn, selector: "ion-picker-column", inputs: ["color", "disabled", "mode", "value"] }, { kind: "component", type: i1.IonPickerColumnOption, selector: "ion-picker-column-option", inputs: ["color", "disabled", "value"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i5.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }, { kind: "component", type: i6.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }] }); }
|
|
224
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "datetime", first: true, predicate: IonDatetime, descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "modal", first: true, predicate: IonModal, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"readableValue\" \r\n (ngModelChange)=\"SetValueFromReadable($event);\"\r\n [readOnly]=\"presentation == DatePresentation.Time\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n />\r\n <ion-button *ngIf=\"configuration().clearable && readableValue\" tabindex=\"-1\" class=\"absolute right-8 bottom-1\" \r\n (click)=\"ClearValue($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\"\r\n >\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-2 bottom-1\" (click)=\"Present($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == DatePresentation.Time ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n@if (interface() == DateInterfaces.Popover) {\r\n <sion-popover\r\n #popover \r\n [anchor]=\"inputContainer\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </sion-popover>\r\n}\r\n@else {\r\n <ion-modal \r\n #modal\r\n [class.time]=\"presentation == DatePresentation.Time\" \r\n [class.date]=\"presentation == DatePresentation.Date\" \r\n [class.datetime]=\"presentation == DatePresentation.DateTime\"\r\n >\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n}\r\n\r\n\r\n<ng-template #datetimeTemplate>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n \r\n @if ([DatePresentation.DateTime, DatePresentation.Date].includes(presentation)) {\r\n <mat-calendar #calendar class=\"w-72 text-dark\" \r\n [(selected)]=\"momentValue\" \r\n (selectedChange)=\"SetValueFromMoment($event)\"\r\n ></mat-calendar>\r\n }\r\n @if ([DatePresentation.DateTime, DatePresentation.Time].includes(presentation)) {\r\n <div class=\"flex h-full mask-y/30 items-center justify-center\">\r\n <ion-picker>\r\n <ion-picker-column (ionChange)=\"OnChangeHour($event.target.value.toString())\" [value]=\"hour\">\r\n @for (item of lstHours; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n <ion-picker-column (ionChange)=\"OnChangeMinute($event.target.value.toString())\" [value]=\"minute\">\r\n @for (item of lstMinutes; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n </ion-picker>\r\n </div>\r\n }\r\n\r\n </div>\r\n</ng-template>\r\n", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-picker{height:100%;--fade-background-rgb: transparent}ion-modal{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonPicker, selector: "ion-picker", inputs: ["mode"] }, { kind: "component", type: i1.IonPickerColumn, selector: "ion-picker-column", inputs: ["color", "disabled", "mode", "value"] }, { kind: "component", type: i1.IonPickerColumnOption, selector: "ion-picker-column-option", inputs: ["color", "disabled", "value"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i5.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }, { kind: "component", type: i6.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }] }); }
|
|
218
225
|
}
|
|
219
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputDateComponent, decorators: [{
|
|
220
227
|
type: Component,
|
|
221
228
|
args: [{ selector: 'input-date, input-date-time, input-time', providers: [
|
|
222
229
|
...InputProviderFactory.GetProviders(InputDateComponent),
|
|
223
230
|
{ provide: CustomInput, useExisting: forwardRef(() => InputDateComponent) },
|
|
224
|
-
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"readableValue\" \r\n (ngModelChange)=\"SetValueFromReadable($event);\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n />\r\n <ion-button *ngIf=\"configuration().clearable && readableValue\" tabindex=\"-1\" class=\"absolute right-8 bottom-1\" \r\n (click)=\"ClearValue($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\"\r\n >\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-2 bottom-1\" (click)=\"Present($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == DatePresentation.Time ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n@if (interface() == DateInterfaces.Popover) {\r\n <sion-popover\r\n #popover \r\n [anchor]=\"inputContainer\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </sion-popover>\r\n}\r\n@else {\r\n <ion-modal \r\n #modal\r\n [class.time]=\"presentation == DatePresentation.Time\" \r\n [class.date]=\"presentation == DatePresentation.Date\" \r\n [class.datetime]=\"presentation == DatePresentation.DateTime\"\r\n >\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n}\r\n\r\n\r\n<ng-template #datetimeTemplate>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n \r\n @if ([DatePresentation.DateTime, DatePresentation.Date].includes(presentation)) {\r\n <mat-calendar #calendar class=\"w-72 text-dark\" \r\n [(selected)]=\"momentValue\" \r\n (selectedChange)=\"SetValueFromMoment($event)\"\r\n ></mat-calendar>\r\n }\r\n @if ([DatePresentation.DateTime, DatePresentation.Time].includes(presentation)) {\r\n <div class=\"flex h-full mask-y/30 items-center justify-center\">\r\n <ion-picker>\r\n <ion-picker-column (ionChange)=\"OnChangeHour($event.target.value.toString())\" [value]=\"hour\">\r\n @for (item of lstHours; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n <ion-picker-column (ionChange)=\"OnChangeMinute($event.target.value.toString())\" [value]=\"minute\">\r\n @for (item of lstMinutes; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n </ion-picker>\r\n </div>\r\n }\r\n\r\n </div>\r\n</ng-template>\r\n", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-picker{height:100%;--fade-background-rgb: transparent}ion-modal{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
231
|
+
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"readableValue\" \r\n (ngModelChange)=\"SetValueFromReadable($event);\"\r\n [readOnly]=\"presentation == DatePresentation.Time\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n (blur)=\"blur.emit($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n />\r\n <ion-button *ngIf=\"configuration().clearable && readableValue\" tabindex=\"-1\" class=\"absolute right-8 bottom-1\" \r\n (click)=\"ClearValue($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\"\r\n >\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-2 bottom-1\" (click)=\"Present($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == DatePresentation.Time ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n@if (interface() == DateInterfaces.Popover) {\r\n <sion-popover\r\n #popover \r\n [anchor]=\"inputContainer\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </sion-popover>\r\n}\r\n@else {\r\n <ion-modal \r\n #modal\r\n [class.time]=\"presentation == DatePresentation.Time\" \r\n [class.date]=\"presentation == DatePresentation.Date\" \r\n [class.datetime]=\"presentation == DatePresentation.DateTime\"\r\n >\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate;\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n}\r\n\r\n\r\n<ng-template #datetimeTemplate>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n \r\n @if ([DatePresentation.DateTime, DatePresentation.Date].includes(presentation)) {\r\n <mat-calendar #calendar class=\"w-72 text-dark\" \r\n [(selected)]=\"momentValue\" \r\n (selectedChange)=\"SetValueFromMoment($event)\"\r\n ></mat-calendar>\r\n }\r\n @if ([DatePresentation.DateTime, DatePresentation.Time].includes(presentation)) {\r\n <div class=\"flex h-full mask-y/30 items-center justify-center\">\r\n <ion-picker>\r\n <ion-picker-column (ionChange)=\"OnChangeHour($event.target.value.toString())\" [value]=\"hour\">\r\n @for (item of lstHours; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n <ion-picker-column (ionChange)=\"OnChangeMinute($event.target.value.toString())\" [value]=\"minute\">\r\n @for (item of lstMinutes; track $index) {\r\n <ion-picker-column-option [value]=\"item\">{{item}}</ion-picker-column-option>\r\n }\r\n </ion-picker-column>\r\n </ion-picker>\r\n </div>\r\n }\r\n\r\n </div>\r\n</ng-template>\r\n", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-picker{height:100%;--fade-background-rgb: transparent}ion-modal{--width: fit-content;--height: fit-content}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
225
232
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { input: [{
|
|
226
233
|
type: ViewChild,
|
|
227
234
|
args: ['input']
|
|
@@ -260,4 +267,4 @@ var DateInterfaces;
|
|
|
260
267
|
})(DateInterfaces || (DateInterfaces = {}));
|
|
261
268
|
const lstHours = Array.from(Array(24).keys()).map(i => i.toString().padStart(2, '0'));
|
|
262
269
|
const lstMinutes = Array.from(Array(60).keys()).map(i => i.toString().padStart(2, '0'));
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQStCLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sTUFBa0IsTUFBTSxRQUFRLENBQUM7QUFFeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7QUFZMUUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQW1CO2FBQ2xELGNBQVMsR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUFLaEMsUUFBUSxDQUFD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LGdCQUFnQjtJQUNuQiwrREFBWSxDQUFBO0lBQ1osdURBQVksQ0FBQTtJQUNaLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBSkksZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUlwQjtBQUNELElBQUssY0FHSjtBQUhELFdBQUssY0FBYztJQUNqQix5REFBVyxDQUFBO0lBQ1gscURBQVcsQ0FBQTtBQUNiLENBQUMsRUFISSxjQUFjLEtBQWQsY0FBYyxRQUdsQjtBQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIGlucHV0LCBJbnB1dFNpZ25hbCwgT25Jbml0LCBTaWduYWwsIHNpZ25hbCwgVmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcclxuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXREYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZGF0ZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tSW5wdXQgfSBmcm9tICcuLi9jdXN0b20taW5wdXQnO1xyXG5pbXBvcnQgeyBJb25EYXRldGltZSwgSW9uTW9kYWwsIElvblBvcG92ZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFNJb25Qb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9zaW9uLXBvcG92ZXIvc2lvbi1wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1kYXRlLCBpbnB1dC1kYXRlLXRpbWUsIGlucHV0LXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXREYXRlQ29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RGF0ZUNvbXBvbmVudCkgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcbiAgc3RhdGljIEZvcm1hdElTTyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzJztcclxuICBcclxuICBjb25maWd1cmF0aW9uOiBJbnB1dFNpZ25hbDxJbnB1dERhdGVDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0RGF0ZUNvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkpO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRDb250YWluZXInKSBpbnB1dENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgb3ZlcnJpZGUgc2V0Rm9jdXMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmlucHV0ICYmIChldmVudCA9PSBudWxsIHx8IGV2ZW50LnRhcmdldCA9PSB0aGlzLmlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpKSB7IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpOyB9ICAgICAgXHJcbiAgfVxyXG4gIFxyXG4gIG9wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xyXG4gIC8vIEZvcm1hdG8gZG8gaW5wdXQgaHRtbCAoc3RyaW5nKVxyXG4gIG1vbWVudEZvcm1hdDogJ0REL01NL1lZWVkgSEg6bW0nIHwgJ0REL01NL1lZWVknIHwgJ0hIOm1tJyA9ICdERC9NTS9ZWVlZIEhIOm1tJztcclxuXHJcblxyXG4gIC8vSGFuZGxlIGlucHV0IGludGVyZmFjZVxyXG4gIHdpbmRvd1NpemU6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPih3aW5kb3cuaW5uZXJXaWR0aCk7XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IGFueSkgeyB0aGlzLndpbmRvd1NpemUuc2V0KHdpbmRvdy5pbm5lcldpZHRoKTsgfVxyXG4gIGludGVyZmFjZTogU2lnbmFsPERhdGVJbnRlcmZhY2VzPiA9IGNvbXB1dGVkPERhdGVJbnRlcmZhY2VzPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53aW5kb3dTaXplKCkgPiB3aW5kb3cuaW5uZXJIZWlnaHQgPyBEYXRlSW50ZXJmYWNlcy5Qb3BvdmVyIDogRGF0ZUludGVyZmFjZXMuTW9kYWw7XHJcbiAgfSk7XHJcbiAgRGF0ZUludGVyZmFjZXMgPSBEYXRlSW50ZXJmYWNlcztcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgb3ZlcnJpZGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyBcclxuICAgIHN1cGVyKCk7IFxyXG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSBhcyBzdHJpbmcpLnJlcGxhY2UoJ2lucHV0LScsICcnKTtcclxuICAgIHRoaXMucHJlc2VudGF0aW9uID0ge1xyXG4gICAgICAnZGF0ZS10aW1lJzogRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSxcclxuICAgICAgJ2RhdGUnOiBEYXRlUHJlc2VudGF0aW9uLkRhdGUsXHJcbiAgICAgICd0aW1lJzogRGF0ZVByZXNlbnRhdGlvbi5UaW1lLFxyXG4gICAgfVtwcmVzZW50YXRpb25dID8/IERhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWU7XHJcblxyXG4gICAgaWYodGhpcy5wcmVzZW50YXRpb24gPT0gRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSl7IFxyXG4gICAgICB0aGlzLm1vbWVudEZvcm1hdCA9ICdERC9NTS9ZWVlZIEhIOm1tJztcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcih7XHJcbiAgICAgICAgZGF0ZU1vZGU6ICdkZC9tbS95eXl5JyxcclxuICAgICAgICB0aW1lTW9kZTogJ0hIOk1NJyxcclxuICAgICAgICBkYXRlU2VwYXJhdG9yOiAnLycsXHJcbiAgICAgICAgZGF0ZVRpbWVTZXBhcmF0b3I6ICcgJyxcclxuICAgICAgICB0aW1lU3RlcDogMSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2VcclxuICAgIGlmKHRoaXMucHJlc2VudGF0aW9uID09IERhdGVQcmVzZW50YXRpb24uRGF0ZSkge1xyXG4gICAgICB0aGlzLm1vbWVudEZvcm1hdCA9ICdERC9NTS9ZWVlZJztcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yKHsgbW9kZTogJ2RkL21tL3l5eXknLCBzZXBhcmF0b3I6ICcvJ30pO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLnByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnSEg6bW0nOyBcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yKHtcclxuICAgICAgICBtb2RlOiAnSEg6TU0nLFxyXG4gICAgICAgIHN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbiA9PT0gRGF0ZVByZXNlbnRhdGlvbi5UaW1lICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBDbGVhclZhbHVlKGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBpbXBlZGUgZGUgYWJyaXIgbyBjYWxlbmTDoXJpbyBhbyBjbGljYXIgbm8gY2xlYXJcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgdGhpcy5tb21lbnRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucmVhZGFibGVWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5ob3VyID0gJzAwJztcclxuICAgIHRoaXMubWludXRlID0gJzAwJztcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXNlbnRhdGlvbjogRGF0ZVByZXNlbnRhdGlvbiA9IERhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWU7XHJcbiAgXHJcbiAgcmVhZGFibGVWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgU2V0VmFsdWVGcm9tUmVhZGFibGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5tb21lbnRGb3JtYXQsIHRydWUpLmZvcm1hdChJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPKTsgIFxyXG4gICAgdGhpcy5TZXRWYWx1ZShtKTtcclxuICB9XHJcbiAgU2V0VmFsdWVGcm9tTW9tZW50KHZhbHVlOiBtb21lbnQuTW9tZW50IHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm47IH1cclxuICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbiA9PT0gRGF0ZVByZXNlbnRhdGlvbi5UaW1lKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHZhbHVlLmZvcm1hdCgnSEg6bW0nKTtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoZm9ybWF0dGVkKTtcclxuICAgICAgdGhpcy5yZWFkYWJsZVZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShmb3JtYXR0ZWQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKCkuc2V0SG91ck1vbWVudCAmJiB0aGlzLnByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLkRhdGVUaW1lKSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpO1xyXG5cclxuICAgICAgLy8gU2UgYWluZGEgbsOjbyBleGlzdGUgbW9tZW50VmFsdWUgT1UgaG9yYS9taW51dG8gemVyYWRvc1xyXG4gICAgICBjb25zdCBhcGxpY2FySG9yYUF0dWFsID1cclxuICAgICAgICAhdGhpcy5tb21lbnRWYWx1ZSB8fFxyXG4gICAgICAgICh0aGlzLm1vbWVudFZhbHVlLmhvdXIoKSA9PSAwICYmIHRoaXMubW9tZW50VmFsdWUubWludXRlKCkgPT0gMCk7XHJcblxyXG4gICAgICBpZiAoYXBsaWNhckhvcmFBdHVhbCkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUuY2xvbmUoKVxyXG4gICAgICAgICAgLmhvdXIobm93LmhvdXIoKSlcclxuICAgICAgICAgIC5taW51dGUobm93Lm1pbnV0ZSgpKVxyXG4gICAgICAgICAgLnNlY29uZCgwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBtYW50w6ltIGhvcmEgasOhIGVzY29saGlkYSBhbnRlcmlvcm1lbnRlXHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5jbG9uZSgpXHJcbiAgICAgICAgICAuaG91cih0aGlzLmhvdXIgPyBOdW1iZXIodGhpcy5ob3VyKSA6IHZhbHVlLmhvdXIoKSlcclxuICAgICAgICAgIC5taW51dGUodGhpcy5taW51dGUgPyBOdW1iZXIodGhpcy5taW51dGUpIDogdmFsdWUubWludXRlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldFZhbHVlKHZhbHVlLmZvcm1hdChJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPKSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxtb21lbnQuTW9tZW50PjtcclxuICAvKipcclxuICAgKiBAcGFyYW0gb2JqIFN0cmluZyBpbiBJU08gZm9ybWF0IChZWVlZLU1NLUREVGhoOm1tOnNzKVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG5cclxuICAgIGlmKHRoaXMudmFsdWUoKSl7XHJcbiAgICAgIHRoaXMubW9tZW50VmFsdWUgICA9IG1vbWVudCh0aGlzLnZhbHVlKCksIElucHV0RGF0ZUNvbXBvbmVudC5Gb3JtYXRJU08sIHRydWUpO1xyXG4gICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSB0aGlzLm1vbWVudFZhbHVlLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdC50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIGlmKHRoaXMuY2FsZW5kYXIpe1xyXG4gICAgICAgIHRoaXMuY2FsZW5kYXIuYWN0aXZlRGF0ZSA9IHRoaXMubW9tZW50VmFsdWU7IC8vIHNldCB0aGUgYWN0aXZlIGRhdGUgdG8gdGhlIHNlbGVjdGVkIGRhdGVcclxuICAgICAgICB0aGlzLmNhbGVuZGFyLnVwZGF0ZVRvZGF5c0RhdGUoKTsgLy8gdXBkYXRlIGNhbGVuZGFyIHN0YXRlXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb21lbnRWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy5ob3VyICAgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnaG91cicpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICAgIHRoaXMubWludXRlID0gdGhpcy5tb21lbnRWYWx1ZS5nZXQoJ21pbnV0ZScpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgaWYodGhpcy5tb21lbnRWYWx1ZS5pc1ZhbGlkKCkpe1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShvYmopO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbWVudFZhbHVlPzogbW9tZW50Lk1vbWVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChJb25EYXRldGltZSkgZGF0ZXRpbWU6IElvbkRhdGV0aW1lO1xyXG4gIFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqPzogc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICBcclxuICAgIGlmICh0aGlzLnZhbHVlKCkpIHtcclxuICAgICAgaWYgKHRoaXMucHJlc2VudGF0aW9uID09PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSgpLCAnSEg6bW0nLCB0cnVlKS5mb3JtYXQoJ0hIOm1tJyk7XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGNyaWEgbW9tZW50VmFsdWUgc2UgcXVpc2VyIG1hbmlwdWxhciBob3JhL21pbnV0byBkZXBvaXNcclxuICAgICAgICB0aGlzLm1vbWVudFZhbHVlID0gbW9tZW50KHRoaXMucmVhZGFibGVWYWx1ZSwgJ0hIOm1tJywgdHJ1ZSk7XHJcbiAgICAgIFxyXG4gICAgICAgIHRoaXMuaG91ciAgID0gdGhpcy5tb21lbnRWYWx1ZS5nZXQoJ2hvdXInKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKTtcclxuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMubW9tZW50VmFsdWUuZ2V0KCdtaW51dGUnKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbWVudFZhbHVlICAgPSBtb21lbnQodGhpcy52YWx1ZSgpLCBJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPLCB0cnVlKTtcclxuICAgICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSB0aGlzLm1vbWVudFZhbHVlLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdC50b1N0cmluZygpKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG4gICAgICAgICAgdGhpcy5jYWxlbmRhci5hY3RpdmVEYXRlID0gdGhpcy5tb21lbnRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuY2FsZW5kYXIudXBkYXRlVG9kYXlzRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb21lbnRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5ob3VyICAgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnaG91cicpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnbWludXRlJykudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuICBAVmlld0NoaWxkKFNJb25Qb3BvdmVyQ29tcG9uZW50KSBwb3BvdmVyOiBTSW9uUG9wb3ZlckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKElvbk1vZGFsKSBtb2RhbDogSW9uTW9kYWw7XHJcbiAgYXN5bmMgUHJlc2VudChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYodGhpcy5pbnRlcmZhY2UoKSA9PSBEYXRlSW50ZXJmYWNlcy5Qb3BvdmVyKXtcclxuICAgICAgcmV0dXJuIHRoaXMucG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1vZGFsLnByZXNlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIERpc21pc3MoKSB7XHJcbiAgICBpZih0aGlzLnBvcG92ZXIpe1xyXG4gICAgICB0aGlzLnBvcG92ZXIuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb2RhbCl7XHJcbiAgICAgIHRoaXMubW9kYWwuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRGF0ZVByZXNlbnRhdGlvbiA9IERhdGVQcmVzZW50YXRpb247XHJcblxyXG4gIGxzdEhvdXJzID0gbHN0SG91cnM7XHJcbiAgbHN0TWludXRlcyA9IGxzdE1pbnV0ZXM7XHJcblxyXG4gIGhvdXIgIDogc3RyaW5nID0gJzAwJztcclxuICBtaW51dGU6IHN0cmluZyA9ICcwMCc7XHJcblxyXG4gIE9uQ2hhbmdlSG91cihldmVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQgPT0gdGhpcy5ob3VyKSB7IHJldHVybjsgfVxyXG4gICAgdGhpcy5ob3VyID0gZXZlbnQ7XHJcbiAgXHJcbiAgICBpZiAoIXRoaXMubW9tZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpOyAvLyBjcmlhIHVtIG1vbWVudCBiYXNlXHJcbiAgICB9XHJcbiAgXHJcbiAgICB0aGlzLm1vbWVudFZhbHVlLnNldCgnaG91cicsIE51bWJlcihldmVudCkpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZUZyb21Nb21lbnQodGhpcy5tb21lbnRWYWx1ZSk7XHJcbiAgfVxyXG4gIFxyXG4gIE9uQ2hhbmdlTWludXRlKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudCA9PSB0aGlzLm1pbnV0ZSkgeyByZXR1cm47IH1cclxuICAgIHRoaXMubWludXRlID0gZXZlbnQ7XHJcbiAgXHJcbiAgICBpZiAoIXRoaXMubW9tZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy5tb21lbnRWYWx1ZS5zZXQoJ21pbnV0ZScsIE51bWJlcihldmVudCkpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZUZyb21Nb21lbnQodGhpcy5tb21lbnRWYWx1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZW51bSBEYXRlUHJlc2VudGF0aW9uIHtcclxuICBEYXRlVGltZSA9IDEsXHJcbiAgRGF0ZSAgICAgPSAyLFxyXG4gIFRpbWUgICAgID0gM1xyXG59XHJcbmVudW0gRGF0ZUludGVyZmFjZXN7XHJcbiAgUG9wb3ZlciA9IDEsXHJcbiAgTW9kYWwgICA9IDIsXHJcbn1cclxuXHJcbmNvbnN0IGxzdEhvdXJzID0gQXJyYXkuZnJvbShBcnJheSgyNCkua2V5cygpKS5tYXAoaSA9PiBpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpKTtcclxuY29uc3QgbHN0TWludXRlcyA9IEFycmF5LmZyb20oQXJyYXkoNjApLmtleXMoKSkubWFwKGkgPT4gaS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKSk7IiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJzZXRGb2N1cygkZXZlbnQpXCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8aW5wdXQgI2lucHV0XHJcbiAgICBbbmdNb2RlbF09XCJyZWFkYWJsZVZhbHVlXCIgXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJTZXRWYWx1ZUZyb21SZWFkYWJsZSgkZXZlbnQpO1wiXHJcbiAgICBbbWFza2l0b109XCJvcHRpb25zXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgICAoYmx1cik9XCJibHVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgLz5cclxuICA8aW9uLWJ1dHRvbiAgKm5nSWY9XCJjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlICYmIHJlYWRhYmxlVmFsdWVcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC04IGJvdHRvbS0xXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiQ2xlYXJWYWx1ZSgkZXZlbnQpXCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIlxyXG4gID5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICA8L2lvbi1idXR0b24+XHJcbiAgXHJcbiAgPGlvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiBib3R0b20tMVwiIChjbGljayk9XCJQcmVzZW50KCRldmVudClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgPGlvbi1pY29uIFtuYW1lXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUgPyAndGltZScgOiAnY2FsZW5kYXInXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoaW50ZXJmYWNlKCkgPT0gRGF0ZUludGVyZmFjZXMuUG9wb3Zlcikge1xyXG4gIDxzaW9uLXBvcG92ZXJcclxuICAgICNwb3BvdmVyIFxyXG4gICAgW2FuY2hvcl09XCJpbnB1dENvbnRhaW5lclwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGV0aW1lVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zaW9uLXBvcG92ZXI+XHJcbn1cclxuQGVsc2Uge1xyXG4gIDxpb24tbW9kYWwgXHJcbiAgICAjbW9kYWxcclxuICAgIFtjbGFzcy50aW1lXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWVcIiBcclxuICAgIFtjbGFzcy5kYXRlXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLkRhdGVcIiBcclxuICAgIFtjbGFzcy5kYXRldGltZV09XCJwcmVzZW50YXRpb24gPT0gRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZXRpbWVUZW1wbGF0ZTtcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tbW9kYWw+XHJcbn1cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGV0aW1lVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLVstLWlvbi1jb2xvci1saWdodF0gcm91bmRlZC14bFwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgIFxyXG4gICAgQGlmIChbRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSwgRGF0ZVByZXNlbnRhdGlvbi5EYXRlXS5pbmNsdWRlcyhwcmVzZW50YXRpb24pKSB7XHJcbiAgICAgIDxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyIGNsYXNzPVwidy03MiB0ZXh0LWRhcmtcIiBcclxuICAgICAgICBbKHNlbGVjdGVkKV09XCJtb21lbnRWYWx1ZVwiIFxyXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJTZXRWYWx1ZUZyb21Nb21lbnQoJGV2ZW50KVwiXHJcbiAgICAgID48L21hdC1jYWxlbmRhcj5cclxuICAgIH1cclxuICAgIEBpZiAoW0RhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWUsIERhdGVQcmVzZW50YXRpb24uVGltZV0uaW5jbHVkZXMocHJlc2VudGF0aW9uKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLWZ1bGwgbWFzay15LzMwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tcGlja2VyPlxyXG4gICAgICAgICAgPGlvbi1waWNrZXItY29sdW1uIChpb25DaGFuZ2UpPVwiT25DaGFuZ2VIb3VyKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKSlcIiBbdmFsdWVdPVwiaG91clwiPlxyXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGxzdEhvdXJzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICA8aW9uLXBpY2tlci1jb2x1bW4tb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+e3tpdGVtfX08L2lvbi1waWNrZXItY29sdW1uLW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9pb24tcGlja2VyLWNvbHVtbj5cclxuICAgICAgICAgIDxpb24tcGlja2VyLWNvbHVtbiAoaW9uQ2hhbmdlKT1cIk9uQ2hhbmdlTWludXRlKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKSlcIiBbdmFsdWVdPVwibWludXRlXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0TWludXRlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgPGlvbi1waWNrZXItY29sdW1uLW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPnt7aXRlbX19PC9pb24tcGlja2VyLWNvbHVtbi1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvaW9uLXBpY2tlci1jb2x1bW4+XHJcbiAgICAgICAgPC9pb24tcGlja2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQStCLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sTUFBa0IsTUFBTSxRQUFRLENBQUM7QUFFeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7QUFZMUUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQW1CO2FBQ2xELGNBQVMsR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUFLaEMsUUFBUSxDQUFD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RFosUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQStCRyxRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVc7Z0JBZ0NXLE9BQU87c0JBQXZDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNWLEtBQUs7c0JBQXpCLFNBQVM7dUJBQUMsUUFBUTs7QUFvRHJCLElBQUssZ0JBSUo7QUFKRCxXQUFLLGdCQUFnQjtJQUNuQiwrREFBWSxDQUFBO0lBQ1osdURBQVksQ0FBQTtJQUNaLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBSkksZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUlwQjtBQUNELElBQUssY0FHSjtBQUhELFdBQUssY0FBYztJQUNqQix5REFBVyxDQUFBO0lBQ1gscURBQVcsQ0FBQTtBQUNiLENBQUMsRUFISSxjQUFjLEtBQWQsY0FBYyxRQUdsQjtBQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIGlucHV0LCBJbnB1dFNpZ25hbCwgT25Jbml0LCBTaWduYWwsIHNpZ25hbCwgVmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcclxuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcclxuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXREYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZGF0ZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tSW5wdXQgfSBmcm9tICcuLi9jdXN0b20taW5wdXQnO1xyXG5pbXBvcnQgeyBJb25EYXRldGltZSwgSW9uTW9kYWwsIElvblBvcG92ZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFNJb25Qb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9zaW9uLXBvcG92ZXIvc2lvbi1wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1kYXRlLCBpbnB1dC1kYXRlLXRpbWUsIGlucHV0LXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXREYXRlQ29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RGF0ZUNvbXBvbmVudCkgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcbiAgc3RhdGljIEZvcm1hdElTTyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzJztcclxuICBcclxuICBjb25maWd1cmF0aW9uOiBJbnB1dFNpZ25hbDxJbnB1dERhdGVDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0RGF0ZUNvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkpO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRDb250YWluZXInKSBpbnB1dENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgb3ZlcnJpZGUgc2V0Rm9jdXMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wcmVzZW50YXRpb24gPT0gRGF0ZVByZXNlbnRhdGlvbi5UaW1lKSB7XHJcbiAgICAgIC8vIGVtIHZleiBkZSBmb2NhciwgasOhIGFicmUgbyBwaWNrZXIvbW9kYWxcclxuICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xyXG4gICAgICB0aGlzLlByZXNlbnQoZXZlbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmlucHV0ICYmIChldmVudCA9PSBudWxsIHx8IGV2ZW50LnRhcmdldCA9PSB0aGlzLmlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpKSB7IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpOyB9ICAgICAgXHJcbiAgfVxyXG4gIFxyXG4gIG9wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xyXG4gIC8vIEZvcm1hdG8gZG8gaW5wdXQgaHRtbCAoc3RyaW5nKVxyXG4gIG1vbWVudEZvcm1hdDogJ0REL01NL1lZWVkgSEg6bW0nIHwgJ0REL01NL1lZWVknIHwgJ0hIOm1tJyA9ICdERC9NTS9ZWVlZIEhIOm1tJztcclxuXHJcblxyXG4gIC8vSGFuZGxlIGlucHV0IGludGVyZmFjZVxyXG4gIHdpbmRvd1NpemU6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPih3aW5kb3cuaW5uZXJXaWR0aCk7XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IGFueSkgeyB0aGlzLndpbmRvd1NpemUuc2V0KHdpbmRvdy5pbm5lcldpZHRoKTsgfVxyXG4gIGludGVyZmFjZTogU2lnbmFsPERhdGVJbnRlcmZhY2VzPiA9IGNvbXB1dGVkPERhdGVJbnRlcmZhY2VzPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53aW5kb3dTaXplKCkgPiB3aW5kb3cuaW5uZXJIZWlnaHQgPyBEYXRlSW50ZXJmYWNlcy5Qb3BvdmVyIDogRGF0ZUludGVyZmFjZXMuTW9kYWw7XHJcbiAgfSk7XHJcbiAgRGF0ZUludGVyZmFjZXMgPSBEYXRlSW50ZXJmYWNlcztcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgb3ZlcnJpZGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyBcclxuICAgIHN1cGVyKCk7IFxyXG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSBhcyBzdHJpbmcpLnJlcGxhY2UoJ2lucHV0LScsICcnKTtcclxuICAgIHRoaXMucHJlc2VudGF0aW9uID0ge1xyXG4gICAgICAnZGF0ZS10aW1lJzogRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSxcclxuICAgICAgJ2RhdGUnOiBEYXRlUHJlc2VudGF0aW9uLkRhdGUsXHJcbiAgICAgICd0aW1lJzogRGF0ZVByZXNlbnRhdGlvbi5UaW1lLFxyXG4gICAgfVtwcmVzZW50YXRpb25dID8/IERhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWU7XHJcblxyXG4gICAgaWYodGhpcy5wcmVzZW50YXRpb24gPT0gRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSl7IFxyXG4gICAgICB0aGlzLm1vbWVudEZvcm1hdCA9ICdERC9NTS9ZWVlZIEhIOm1tJztcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcih7XHJcbiAgICAgICAgZGF0ZU1vZGU6ICdkZC9tbS95eXl5JyxcclxuICAgICAgICB0aW1lTW9kZTogJ0hIOk1NJyxcclxuICAgICAgICBkYXRlU2VwYXJhdG9yOiAnLycsXHJcbiAgICAgICAgZGF0ZVRpbWVTZXBhcmF0b3I6ICcgJyxcclxuICAgICAgICB0aW1lU3RlcDogMSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2VcclxuICAgIGlmKHRoaXMucHJlc2VudGF0aW9uID09IERhdGVQcmVzZW50YXRpb24uRGF0ZSkge1xyXG4gICAgICB0aGlzLm1vbWVudEZvcm1hdCA9ICdERC9NTS9ZWVlZJztcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yKHsgbW9kZTogJ2RkL21tL3l5eXknLCBzZXBhcmF0b3I6ICcvJ30pO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLnByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnSEg6bW0nOyBcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yKHtcclxuICAgICAgICBtb2RlOiAnSEg6TU0nLFxyXG4gICAgICAgIHN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbiA9PT0gRGF0ZVByZXNlbnRhdGlvbi5UaW1lICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBDbGVhclZhbHVlKGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBpbXBlZGUgZGUgYWJyaXIgbyBjYWxlbmTDoXJpbyBhbyBjbGljYXIgbm8gY2xlYXJcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgdGhpcy5tb21lbnRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucmVhZGFibGVWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5ob3VyID0gJzAwJztcclxuICAgIHRoaXMubWludXRlID0gJzAwJztcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXNlbnRhdGlvbjogRGF0ZVByZXNlbnRhdGlvbiA9IERhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWU7XHJcbiAgXHJcbiAgcmVhZGFibGVWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgU2V0VmFsdWVGcm9tUmVhZGFibGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5tb21lbnRGb3JtYXQsIHRydWUpLmZvcm1hdChJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPKTsgIFxyXG4gICAgdGhpcy5TZXRWYWx1ZShtKTtcclxuICB9XHJcbiAgU2V0VmFsdWVGcm9tTW9tZW50KHZhbHVlOiBtb21lbnQuTW9tZW50IHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm47IH1cclxuICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbiA9PT0gRGF0ZVByZXNlbnRhdGlvbi5UaW1lKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHZhbHVlLmZvcm1hdCgnSEg6bW0nKTtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoZm9ybWF0dGVkKTtcclxuICAgICAgdGhpcy5yZWFkYWJsZVZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShmb3JtYXR0ZWQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKCkuc2V0SG91ck1vbWVudCAmJiB0aGlzLnByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLkRhdGVUaW1lKSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpO1xyXG5cclxuICAgICAgLy8gU2UgYWluZGEgbsOjbyBleGlzdGUgbW9tZW50VmFsdWUgT1UgaG9yYS9taW51dG8gemVyYWRvc1xyXG4gICAgICBjb25zdCBhcGxpY2FySG9yYUF0dWFsID1cclxuICAgICAgICAhdGhpcy5tb21lbnRWYWx1ZSB8fFxyXG4gICAgICAgICh0aGlzLm1vbWVudFZhbHVlLmhvdXIoKSA9PSAwICYmIHRoaXMubW9tZW50VmFsdWUubWludXRlKCkgPT0gMCk7XHJcblxyXG4gICAgICBpZiAoYXBsaWNhckhvcmFBdHVhbCkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUuY2xvbmUoKVxyXG4gICAgICAgICAgLmhvdXIobm93LmhvdXIoKSlcclxuICAgICAgICAgIC5taW51dGUobm93Lm1pbnV0ZSgpKVxyXG4gICAgICAgICAgLnNlY29uZCgwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBtYW50w6ltIGhvcmEgasOhIGVzY29saGlkYSBhbnRlcmlvcm1lbnRlXHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5jbG9uZSgpXHJcbiAgICAgICAgICAuaG91cih0aGlzLmhvdXIgPyBOdW1iZXIodGhpcy5ob3VyKSA6IHZhbHVlLmhvdXIoKSlcclxuICAgICAgICAgIC5taW51dGUodGhpcy5taW51dGUgPyBOdW1iZXIodGhpcy5taW51dGUpIDogdmFsdWUubWludXRlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldFZhbHVlKHZhbHVlLmZvcm1hdChJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPKSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxtb21lbnQuTW9tZW50PjtcclxuICAvKipcclxuICAgKiBAcGFyYW0gb2JqIFN0cmluZyBpbiBJU08gZm9ybWF0IChZWVlZLU1NLUREVGhoOm1tOnNzKVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG5cclxuICAgIGlmKHRoaXMudmFsdWUoKSl7XHJcbiAgICAgIHRoaXMubW9tZW50VmFsdWUgICA9IG1vbWVudCh0aGlzLnZhbHVlKCksIElucHV0RGF0ZUNvbXBvbmVudC5Gb3JtYXRJU08sIHRydWUpO1xyXG4gICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSB0aGlzLm1vbWVudFZhbHVlLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdC50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIGlmKHRoaXMuY2FsZW5kYXIpe1xyXG4gICAgICAgIHRoaXMuY2FsZW5kYXIuYWN0aXZlRGF0ZSA9IHRoaXMubW9tZW50VmFsdWU7IC8vIHNldCB0aGUgYWN0aXZlIGRhdGUgdG8gdGhlIHNlbGVjdGVkIGRhdGVcclxuICAgICAgICB0aGlzLmNhbGVuZGFyLnVwZGF0ZVRvZGF5c0RhdGUoKTsgLy8gdXBkYXRlIGNhbGVuZGFyIHN0YXRlXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb21lbnRWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy5ob3VyICAgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnaG91cicpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICAgIHRoaXMubWludXRlID0gdGhpcy5tb21lbnRWYWx1ZS5nZXQoJ21pbnV0ZScpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgaWYodGhpcy5tb21lbnRWYWx1ZS5pc1ZhbGlkKCkpe1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShvYmopO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbWVudFZhbHVlPzogbW9tZW50Lk1vbWVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChJb25EYXRldGltZSkgZGF0ZXRpbWU6IElvbkRhdGV0aW1lO1xyXG4gIFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqPzogc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICBcclxuICAgIGlmICh0aGlzLnZhbHVlKCkpIHtcclxuICAgICAgaWYgKHRoaXMucHJlc2VudGF0aW9uID09PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSgpLCAnSEg6bW0nLCB0cnVlKS5mb3JtYXQoJ0hIOm1tJyk7XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGNyaWEgbW9tZW50VmFsdWUgc2UgcXVpc2VyIG1hbmlwdWxhciBob3JhL21pbnV0byBkZXBvaXNcclxuICAgICAgICB0aGlzLm1vbWVudFZhbHVlID0gbW9tZW50KHRoaXMucmVhZGFibGVWYWx1ZSwgJ0hIOm1tJywgdHJ1ZSk7XHJcbiAgICAgIFxyXG4gICAgICAgIHRoaXMuaG91ciAgID0gdGhpcy5tb21lbnRWYWx1ZS5nZXQoJ2hvdXInKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKTtcclxuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMubW9tZW50VmFsdWUuZ2V0KCdtaW51dGUnKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbWVudFZhbHVlICAgPSBtb21lbnQodGhpcy52YWx1ZSgpLCBJbnB1dERhdGVDb21wb25lbnQuRm9ybWF0SVNPLCB0cnVlKTtcclxuICAgICAgICB0aGlzLnJlYWRhYmxlVmFsdWUgPSB0aGlzLm1vbWVudFZhbHVlLmZvcm1hdCh0aGlzLm1vbWVudEZvcm1hdC50b1N0cmluZygpKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG4gICAgICAgICAgdGhpcy5jYWxlbmRhci5hY3RpdmVEYXRlID0gdGhpcy5tb21lbnRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuY2FsZW5kYXIudXBkYXRlVG9kYXlzRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb21lbnRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5ob3VyICAgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnaG91cicpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpO1xyXG4gICAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLm1vbWVudFZhbHVlLmdldCgnbWludXRlJykudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuICBAVmlld0NoaWxkKFNJb25Qb3BvdmVyQ29tcG9uZW50KSBwb3BvdmVyOiBTSW9uUG9wb3ZlckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKElvbk1vZGFsKSBtb2RhbDogSW9uTW9kYWw7XHJcbiAgYXN5bmMgUHJlc2VudChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYodGhpcy5pbnRlcmZhY2UoKSA9PSBEYXRlSW50ZXJmYWNlcy5Qb3BvdmVyKXtcclxuICAgICAgcmV0dXJuIHRoaXMucG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1vZGFsLnByZXNlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIERpc21pc3MoKSB7XHJcbiAgICBpZih0aGlzLnBvcG92ZXIpe1xyXG4gICAgICB0aGlzLnBvcG92ZXIuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb2RhbCl7XHJcbiAgICAgIHRoaXMubW9kYWwuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRGF0ZVByZXNlbnRhdGlvbiA9IERhdGVQcmVzZW50YXRpb247XHJcblxyXG4gIGxzdEhvdXJzID0gbHN0SG91cnM7XHJcbiAgbHN0TWludXRlcyA9IGxzdE1pbnV0ZXM7XHJcblxyXG4gIGhvdXIgIDogc3RyaW5nID0gJzAwJztcclxuICBtaW51dGU6IHN0cmluZyA9ICcwMCc7XHJcblxyXG4gIE9uQ2hhbmdlSG91cihldmVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQgPT0gdGhpcy5ob3VyKSB7IHJldHVybjsgfVxyXG4gICAgdGhpcy5ob3VyID0gZXZlbnQ7XHJcbiAgXHJcbiAgICBpZiAoIXRoaXMubW9tZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpOyAvLyBjcmlhIHVtIG1vbWVudCBiYXNlXHJcbiAgICB9XHJcbiAgXHJcbiAgICB0aGlzLm1vbWVudFZhbHVlLnNldCgnaG91cicsIE51bWJlcihldmVudCkpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZUZyb21Nb21lbnQodGhpcy5tb21lbnRWYWx1ZSk7XHJcbiAgfVxyXG4gIFxyXG4gIE9uQ2hhbmdlTWludXRlKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudCA9PSB0aGlzLm1pbnV0ZSkgeyByZXR1cm47IH1cclxuICAgIHRoaXMubWludXRlID0gZXZlbnQ7XHJcbiAgXHJcbiAgICBpZiAoIXRoaXMubW9tZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5tb21lbnRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy5tb21lbnRWYWx1ZS5zZXQoJ21pbnV0ZScsIE51bWJlcihldmVudCkpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZUZyb21Nb21lbnQodGhpcy5tb21lbnRWYWx1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZW51bSBEYXRlUHJlc2VudGF0aW9uIHtcclxuICBEYXRlVGltZSA9IDEsXHJcbiAgRGF0ZSAgICAgPSAyLFxyXG4gIFRpbWUgICAgID0gM1xyXG59XHJcbmVudW0gRGF0ZUludGVyZmFjZXN7XHJcbiAgUG9wb3ZlciA9IDEsXHJcbiAgTW9kYWwgICA9IDIsXHJcbn1cclxuXHJcbmNvbnN0IGxzdEhvdXJzID0gQXJyYXkuZnJvbShBcnJheSgyNCkua2V5cygpKS5tYXAoaSA9PiBpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpKTtcclxuY29uc3QgbHN0TWludXRlcyA9IEFycmF5LmZyb20oQXJyYXkoNjApLmtleXMoKSkubWFwKGkgPT4gaS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKSk7IiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJzZXRGb2N1cygkZXZlbnQpXCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8aW5wdXQgI2lucHV0XHJcbiAgICBbbmdNb2RlbF09XCJyZWFkYWJsZVZhbHVlXCIgXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJTZXRWYWx1ZUZyb21SZWFkYWJsZSgkZXZlbnQpO1wiXHJcbiAgICBbcmVhZE9ubHldPVwicHJlc2VudGF0aW9uID09IERhdGVQcmVzZW50YXRpb24uVGltZVwiXHJcbiAgICBbbWFza2l0b109XCJvcHRpb25zXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgICAoYmx1cik9XCJibHVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgLz5cclxuICA8aW9uLWJ1dHRvbiAgKm5nSWY9XCJjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlICYmIHJlYWRhYmxlVmFsdWVcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC04IGJvdHRvbS0xXCIgXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiQ2xlYXJWYWx1ZSgkZXZlbnQpXCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIlxyXG4gID5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICA8L2lvbi1idXR0b24+XHJcbiAgXHJcbiAgPGlvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiBib3R0b20tMVwiIChjbGljayk9XCJQcmVzZW50KCRldmVudClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgPGlvbi1pY29uIFtuYW1lXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWUgPyAndGltZScgOiAnY2FsZW5kYXInXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoaW50ZXJmYWNlKCkgPT0gRGF0ZUludGVyZmFjZXMuUG9wb3Zlcikge1xyXG4gIDxzaW9uLXBvcG92ZXJcclxuICAgICNwb3BvdmVyIFxyXG4gICAgW2FuY2hvcl09XCJpbnB1dENvbnRhaW5lclwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGV0aW1lVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zaW9uLXBvcG92ZXI+XHJcbn1cclxuQGVsc2Uge1xyXG4gIDxpb24tbW9kYWwgXHJcbiAgICAjbW9kYWxcclxuICAgIFtjbGFzcy50aW1lXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLlRpbWVcIiBcclxuICAgIFtjbGFzcy5kYXRlXT1cInByZXNlbnRhdGlvbiA9PSBEYXRlUHJlc2VudGF0aW9uLkRhdGVcIiBcclxuICAgIFtjbGFzcy5kYXRldGltZV09XCJwcmVzZW50YXRpb24gPT0gRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZXRpbWVUZW1wbGF0ZTtcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tbW9kYWw+XHJcbn1cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGV0aW1lVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLVstLWlvbi1jb2xvci1saWdodF0gcm91bmRlZC14bFwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgIFxyXG4gICAgQGlmIChbRGF0ZVByZXNlbnRhdGlvbi5EYXRlVGltZSwgRGF0ZVByZXNlbnRhdGlvbi5EYXRlXS5pbmNsdWRlcyhwcmVzZW50YXRpb24pKSB7XHJcbiAgICAgIDxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyIGNsYXNzPVwidy03MiB0ZXh0LWRhcmtcIiBcclxuICAgICAgICBbKHNlbGVjdGVkKV09XCJtb21lbnRWYWx1ZVwiIFxyXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJTZXRWYWx1ZUZyb21Nb21lbnQoJGV2ZW50KVwiXHJcbiAgICAgID48L21hdC1jYWxlbmRhcj5cclxuICAgIH1cclxuICAgIEBpZiAoW0RhdGVQcmVzZW50YXRpb24uRGF0ZVRpbWUsIERhdGVQcmVzZW50YXRpb24uVGltZV0uaW5jbHVkZXMocHJlc2VudGF0aW9uKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLWZ1bGwgbWFzay15LzMwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tcGlja2VyPlxyXG4gICAgICAgICAgPGlvbi1waWNrZXItY29sdW1uIChpb25DaGFuZ2UpPVwiT25DaGFuZ2VIb3VyKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKSlcIiBbdmFsdWVdPVwiaG91clwiPlxyXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGxzdEhvdXJzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICA8aW9uLXBpY2tlci1jb2x1bW4tb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+e3tpdGVtfX08L2lvbi1waWNrZXItY29sdW1uLW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9pb24tcGlja2VyLWNvbHVtbj5cclxuICAgICAgICAgIDxpb24tcGlja2VyLWNvbHVtbiAoaW9uQ2hhbmdlKT1cIk9uQ2hhbmdlTWludXRlKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKSlcIiBbdmFsdWVdPVwibWludXRlXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0TWludXRlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgPGlvbi1waWNrZXItY29sdW1uLW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPnt7aXRlbX19PC9pb24tcGlja2VyLWNvbHVtbi1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvaW9uLXBpY2tlci1jb2x1bW4+XHJcbiAgICAgICAgPC9pb24tcGlja2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -31,6 +31,13 @@ export class InputFileComponent extends CustomInput {
|
|
|
31
31
|
this.runValidation();
|
|
32
32
|
}
|
|
33
33
|
SetValue(value) {
|
|
34
|
+
if (value instanceof File) {
|
|
35
|
+
const safeName = StorageService.SanitizeName(value.name);
|
|
36
|
+
// Se já estiver ok, evita recriar
|
|
37
|
+
if (safeName !== value.name) {
|
|
38
|
+
value = new File([value], safeName, { type: value.type, lastModified: value.lastModified });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
34
41
|
this.value.set(value);
|
|
35
42
|
this.SetValueString();
|
|
36
43
|
this.runValidation();
|
|
@@ -97,4 +104,4 @@ export const lstImage = [
|
|
|
97
104
|
'jfif',
|
|
98
105
|
'avif',
|
|
99
106
|
];
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF1QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBWXZFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUEwQjtJQUt2RCxRQUFRLENBQUMsS0FBd0I7UUFDeEMsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUNSLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFadkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENB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a0JBVjlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNULEdBQUcsb0JBQW9CLENBQUMsWUFBWSxvQkFBb0I7d0JBQ3hELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO3FCQUM1RTs4R0FPNEIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7O0FBNEQ3QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRGaWxlQ29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RmlsZUNvbXBvbmVudCkgfSxcclxuICBdLFxyXG4gIFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8RmlsZSB8IHN0cmluZz4ge1xyXG5cclxuICBjb25maWd1cmF0aW9uOiBJbnB1dFNpZ25hbDxJbnB1dEZpbGVDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0RmlsZUNvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCkpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKGV2ZW50KXtcclxuICAgICAgdGhpcy5VcGxvYWQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkgeyBzdXBlcigpOyB9XHJcblxyXG4gIHZhbHVlU3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9iamVjdFVSTDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogRmlsZSB8IHN0cmluZyk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmFsdWUuc2V0KG9iaik7XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IEZpbGUgfCBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICB9XHJcbiAgXHJcbiAgU2V0VmFsdWVTdHJpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9iamVjdFVSTCA9IG51bGw7XHJcbiAgICB0aGlzLmlzU3RyaW5nID0gdHlwZW9mIHRoaXMudmFsdWUoKSA9PSBcInN0cmluZ1wiO1xyXG4gICAgaWYoIXRoaXMudmFsdWUoKSkgeyB0aGlzLnZhbHVlU3RyaW5nID0gXCIuLi5cIjsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLnZhbHVlU3RyaW5nID0gdHlwZW9mIHRoaXMudmFsdWUoKSA9PSBcInN0cmluZ1wiID8gIFN0b3JhZ2VTZXJ2aWNlLlNhbml0aXplRmlsZU5hbWUodGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpIDogKHRoaXMudmFsdWUoKSBhcyBGaWxlKS5uYW1lO1xyXG4gICAgXHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBsc3RJbWFnZS5pbmNsdWRlcyh0aGlzLnZhbHVlU3RyaW5nLnNwbGl0KCcuJykuYXQoLTEpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgaWYodGhpcy5pc0ltYWdlICYmICF0aGlzLmlzU3RyaW5nKXtcclxuICAgICAgdGhpcy5vYmplY3RVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMudmFsdWUoKSBhcyBGaWxlKTtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBVcGxvYWQoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIHRyeXtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy51dGlsc1NlcnZpY2UuU2VsZWN0RmlsZSh0aGlzLmNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgICAgIGlmKHJlcyl7IHRoaXMuU2V0VmFsdWUocmVzKTsgfVxyXG4gICAgfWNhdGNoe31cclxuICB9XHJcbicnXHJcbiAgQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZShudWxsKTtcclxuICB9XHJcblxyXG4gIERvd25sb2FkKCk6IHZvaWR7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLlN0YXJ0RG93bmxvYWQodGhpcy52YWx1ZSgpIGFzIHN0cmluZyk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjb25zdCBsc3RJbWFnZTogc3RyaW5nW10gPSBbXHJcbiAgJ2pwZScsXHJcbiAgJ2pwZycsXHJcbiAgJ2pwZWcnLFxyXG4gICdnaWYnLFxyXG4gICdwbmcnLFxyXG4gICdibXAnLFxyXG4gICdpY28nLFxyXG4gICdzdmcnLFxyXG4gICdzdmd6JyxcclxuICAndGlmJyxcclxuICAndGlmZicsXHJcbiAgJ3dlYnAnLFxyXG4gICdqZmlmJyxcclxuICAnYXZpZicsXHJcbl0gIiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIFxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIiBcclxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImZpbGUtbGFiZWwtY29udGFpbmVyIHRleHQtZGFyayAhcGItMVwiPlxyXG4gICAgIDxpb24taWNvbiBjbGFzcz1cInNocmluay0wXCIgY29sb3I9XCJkYXJrXCIgbmFtZT1cImRvY3VtZW50XCI+PC9pb24taWNvbj4gXHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cImJsb2NrIGZsZXgtMSBtaW4tdy0wIHRydW5jYXRlXCJcclxuICAgICAgW3RpdGxlXT1cInZhbHVlU3RyaW5nXCJcclxuICAgID5cclxuICAgICAge3sgdmFsdWVTdHJpbmcgfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHNocmluay0wIHctZml0XCI+XHJcbiAgICAgIEBpZih2YWx1ZSgpKXtcclxuICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtZnVsbFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYW5nZXJcIiBzaXplPVwic21hbGxcIiAgIChjbGljayk9XCJDbGVhcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZihpc1N0cmluZykge1xyXG4gICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC1mdWxsIGFsbG93LWNsaWNrICFvcGFjaXR5LTEwMFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cIkRvd25sb2FkKClcIj5cclxuICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cIiFvcGFjaXR5LTEwMFwiIG5hbWU9XCJjbG91ZC1kb3dubG9hZFwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInJvdW5kZWQtZnVsbFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgc2l6ZT1cInNtYWxsXCIgIChjbGljayk9XCJVcGxvYWQoKVwiPlxyXG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3VkLXVwbG9hZFwiPjwvaW9uLWljb24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPCEtLSBAaWYoaXNTdHJpbmcpe1xyXG4gICAgICAgICAgICAgIEBpZihzdG9yYWdlU2VydmljZS5HZXRQcm9ncmVzcyh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSkpe1xyXG4gICAgICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXIgW3ZhbHVlXT1cInN0b3JhZ2VTZXJ2aWNlLkdldFByb2dyZXNzKHRoaXMudmFsdWUoKS50b1N0cmluZygpKVwiPjwvaW9uLXByb2dyZXNzLWJhcj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGlmKGlzSW1hZ2Upe1xyXG4gICAgICAgICAgICAgICAgPGltYWdlIGZpbGw9XCJjbGVhclwiIFtzcmNdPVwidmFsdWUoKS50b1N0cmluZygpXCI+PC9pbWFnZT5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYoaXNJbWFnZSl7XHJcbiAgICAgICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJvYmplY3RVUkxcIiBjbGFzcz1cInctZnVsbCBoLTMyXCI+PC9pb24taW1nPlxyXG4gICAgICAgICAgICB9IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF1QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBWXZFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUEwQjtJQUt2RCxRQUFRLENBQUMsS0FBd0I7UUFDeEMsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUNSLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFadkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENB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QUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFZLENBQUMsQ0FBQztJQUM1RCxDQUFDOytHQTVFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixpTUFObEI7WUFDVCxHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztZQUN4RCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1NBQzVFLG1LQ2RILDZxRUF1RE07OzRGRHRDTyxrQkFBa0I7a0JBVjlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNULEdBQUcsb0JBQW9CLENBQUMsWUFBWSxvQkFBb0I7d0JBQ3hELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO3FCQUM1RTs4R0FPNEIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7O0FBMEU3QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRGaWxlQ29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RmlsZUNvbXBvbmVudCkgfSxcclxuICBdLFxyXG4gIFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8RmlsZSB8IHN0cmluZz4ge1xyXG5cclxuICBjb25maWd1cmF0aW9uOiBJbnB1dFNpZ25hbDxJbnB1dEZpbGVDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0RmlsZUNvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCkpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmKGV2ZW50KXtcclxuICAgICAgdGhpcy5VcGxvYWQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkgeyBzdXBlcigpOyB9XHJcblxyXG4gIHZhbHVlU3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9iamVjdFVSTDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogRmlsZSB8IHN0cmluZyk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmFsdWUuc2V0KG9iaik7XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IEZpbGUgfCBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuXHJcbiAgICAgIGNvbnN0IHNhZmVOYW1lID0gU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVOYW1lKHZhbHVlLm5hbWUpO1xyXG5cclxuICAgICAgLy8gU2UgasOhIGVzdGl2ZXIgb2ssIGV2aXRhIHJlY3JpYXJcclxuICAgICAgaWYgKHNhZmVOYW1lICE9PSB2YWx1ZS5uYW1lKSB7XHJcbiAgICAgICAgdmFsdWUgPSBuZXcgRmlsZShcclxuICAgICAgICAgIFt2YWx1ZV0sXHJcbiAgICAgICAgICBzYWZlTmFtZSxcclxuICAgICAgICAgIHsgdHlwZTogdmFsdWUudHlwZSwgbGFzdE1vZGlmaWVkOiB2YWx1ZS5sYXN0TW9kaWZpZWQgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgfVxyXG4gIFxyXG4gIFNldFZhbHVlU3RyaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vYmplY3RVUkwgPSBudWxsO1xyXG4gICAgdGhpcy5pc1N0cmluZyA9IHR5cGVvZiB0aGlzLnZhbHVlKCkgPT0gXCJzdHJpbmdcIjtcclxuICAgIGlmKCF0aGlzLnZhbHVlKCkpIHsgdGhpcy52YWx1ZVN0cmluZyA9IFwiLi4uXCI7IHJldHVybjsgfVxyXG4gICAgdGhpcy52YWx1ZVN0cmluZyA9IHR5cGVvZiB0aGlzLnZhbHVlKCkgPT0gXCJzdHJpbmdcIiA/ICBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKHRoaXMudmFsdWUoKS50b1N0cmluZygpKSA6ICh0aGlzLnZhbHVlKCkgYXMgRmlsZSkubmFtZTtcclxuICAgIFxyXG4gICAgdGhpcy5pc0ltYWdlID0gbHN0SW1hZ2UuaW5jbHVkZXModGhpcy52YWx1ZVN0cmluZy5zcGxpdCgnLicpLmF0KC0xKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIGlmKHRoaXMuaXNJbWFnZSAmJiAhdGhpcy5pc1N0cmluZyl7XHJcbiAgICAgIHRoaXMub2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLnZhbHVlKCkgYXMgRmlsZSk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgVXBsb2FkKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXRpbHNTZXJ2aWNlLlNlbGVjdEZpbGUodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgICBpZihyZXMpeyB0aGlzLlNldFZhbHVlKHJlcyk7IH1cclxuICAgIH1jYXRjaHt9XHJcbiAgfVxyXG5cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLlNldFZhbHVlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgRG93bmxvYWQoKTogdm9pZHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuU3RhcnREb3dubG9hZCh0aGlzLnZhbHVlKCkgYXMgc3RyaW5nKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNvbnN0IGxzdEltYWdlOiBzdHJpbmdbXSA9IFtcclxuICAnanBlJyxcclxuICAnanBnJyxcclxuICAnanBlZycsXHJcbiAgJ2dpZicsXHJcbiAgJ3BuZycsXHJcbiAgJ2JtcCcsXHJcbiAgJ2ljbycsXHJcbiAgJ3N2ZycsXHJcbiAgJ3N2Z3onLFxyXG4gICd0aWYnLFxyXG4gICd0aWZmJyxcclxuICAnd2VicCcsXHJcbiAgJ2pmaWYnLFxyXG4gICdhdmlmJyxcclxuXSAiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiZmlsZS1sYWJlbC1jb250YWluZXIgdGV4dC1kYXJrICFwYi0xXCI+XHJcbiAgICAgPGlvbi1pY29uIGNsYXNzPVwic2hyaW5rLTBcIiBjb2xvcj1cImRhcmtcIiBuYW1lPVwiZG9jdW1lbnRcIj48L2lvbi1pY29uPiBcclxuICAgIDxzcGFuXHJcbiAgICAgIGNsYXNzPVwiYmxvY2sgZmxleC0xIG1pbi13LTAgdHJ1bmNhdGVcIlxyXG4gICAgICBbdGl0bGVdPVwidmFsdWVTdHJpbmdcIlxyXG4gICAgPlxyXG4gICAgICB7eyB2YWx1ZVN0cmluZyB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTEgc2hyaW5rLTAgdy1maXRcIj5cclxuICAgICAgQGlmKHZhbHVlKCkpe1xyXG4gICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC1mdWxsXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhbmdlclwiIHNpemU9XCJzbWFsbFwiICAgKGNsaWNrKT1cIkNsZWFyKCRldmVudClcIj5cclxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmKGlzU3RyaW5nKSB7XHJcbiAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLWZ1bGwgYWxsb3ctY2xpY2sgIW9wYWNpdHktMTAwXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiRG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwiIW9wYWNpdHktMTAwXCIgbmFtZT1cImNsb3VkLWRvd25sb2FkXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC1mdWxsXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaXplPVwic21hbGxcIiAgKGNsaWNrKT1cIlVwbG9hZCgpXCI+XHJcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2xvdWQtdXBsb2FkXCI+PC9pb24taWNvbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIEBpZihpc1N0cmluZyl7XHJcbiAgICAgICAgICAgICAgQGlmKHN0b3JhZ2VTZXJ2aWNlLkdldFByb2dyZXNzKHRoaXMudmFsdWUoKS50b1N0cmluZygpKSl7XHJcbiAgICAgICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBbdmFsdWVdPVwic3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3ModGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpXCI+PC9pb24tcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAaWYoaXNJbWFnZSl7XHJcbiAgICAgICAgICAgICAgICA8aW1hZ2UgZmlsbD1cImNsZWFyXCIgW3NyY109XCJ2YWx1ZSgpLnRvU3RyaW5nKClcIj48L2ltYWdlPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZihpc0ltYWdlKXtcclxuICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cIm9iamVjdFVSTFwiIGNsYXNzPVwidy1mdWxsIGgtMzJcIj48L2lvbi1pbWc+XHJcbiAgICAgICAgICAgIH0gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -71,6 +71,36 @@ export class StorageService {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
;
|
|
74
|
+
static SanitizeName(original) {
|
|
75
|
+
if (!original)
|
|
76
|
+
return 'arquivo';
|
|
77
|
+
// desfaz encoding se vier
|
|
78
|
+
let name = original.replace(/\+/g, ' ');
|
|
79
|
+
try {
|
|
80
|
+
name = decodeURIComponent(name);
|
|
81
|
+
}
|
|
82
|
+
catch { }
|
|
83
|
+
// remove acentos
|
|
84
|
+
name = name.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
85
|
+
// remove qualquer path acidental
|
|
86
|
+
name = name.split('/').pop() ?? name;
|
|
87
|
+
name = name.split('\\').pop() ?? name;
|
|
88
|
+
const lastDot = name.lastIndexOf('.');
|
|
89
|
+
const base = lastDot > 0 ? name.slice(0, lastDot) : name;
|
|
90
|
+
const ext = lastDot > 0 ? name.slice(lastDot + 1) : '';
|
|
91
|
+
let safeBase = base
|
|
92
|
+
.replace(/[#%?&+=]/g, '')
|
|
93
|
+
.replace(/[<>:"/\\|*]/g, '')
|
|
94
|
+
.replace(/[\u0000-\u001F]/g, '')
|
|
95
|
+
.replace(/\s+/g, ' ')
|
|
96
|
+
.trim()
|
|
97
|
+
.replace(/ /g, '_')
|
|
98
|
+
.replace(/_+/g, '_');
|
|
99
|
+
if (!safeBase)
|
|
100
|
+
safeBase = 'arquivo';
|
|
101
|
+
const safeExt = ext.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
102
|
+
return safeExt ? `${safeBase}.${safeExt}` : safeBase;
|
|
103
|
+
}
|
|
74
104
|
GetFile(fileUrl, params, post = false) {
|
|
75
105
|
var url;
|
|
76
106
|
if (fileUrl[0] == '/') {
|
|
@@ -183,4 +213,4 @@ function DownloadFile(data, fileUrl, fileName = null) {
|
|
|
183
213
|
});
|
|
184
214
|
linkElement.dispatchEvent(me);
|
|
185
215
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNRLElBQWlCLEVBQ2pCLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRzlCLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQUYxQyxDQUFDO0lBSUUsV0FBVyxDQUFDLElBQVk7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUE7UUFDcEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsT0FBZ0IsS0FBSyxFQUFFLFdBQTJCLElBQUk7UUFDckcsSUFBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUs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L0UsSUFBRyxRQUFRLEVBQUUsQ0FBQztRQUNWLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7UUFDN0IsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20sIG1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vYXBpLXVybC1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gIHByaXZhdGUgaHR0cCA6IEh0dHBDbGllbnQsXHJcbiAgcHJpdmF0ZSBhcGlVcmxQcm92aWRlclNlcnZpY2U6IEFwaVVybFByb3ZpZGVyU2VydmljZSxcclxuICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgY3VycmVudGx5RG93bmxvYWRpbmc6IERvd25sb2FkW10gPSBbXTtcclxuXHJcbiAgcHVibGljIEdldFByb2dyZXNzKGZpbGU6IHN0cmluZyk6IG51bWJlcntcclxuICAgIGNvbnN0IERvd25sb2FkID0gdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpXHJcbiAgICByZXR1cm4gRG93bmxvYWQgPyBEb3dubG9hZC5wcm9ncmVzcyA6IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU3RhcnREb3dubG9hZChmaWxlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlLCBmaWxlTmFtZSA6IHN0cmluZyB8IG51bGwgPSBudWxsKTogRG93bmxvYWQge1xyXG4gICAgaWYoIXRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKSl7XHJcbiAgICAgIGNvbnN0IGRvd25sb2FkID0gbmV3IERvd25sb2FkKGZpbGUpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnB1c2goZG93bmxvYWQpO1xyXG4gICAgICB0aGlzLkhhbmRsZURvd25sb2FkKGRvd25sb2FkLCBwYXJhbXMsIHBvc3QsIGZpbGVOYW1lKTtcclxuICAgICAgcmV0dXJuIGRvd25sb2FkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSGFuZGxlRG93bmxvYWQoZG93bmxvYWQ6IERvd25sb2FkLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSwgZmlsZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsKXtcclxuICAgIHZhciByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLkdldEZpbGUoZG93bmxvYWQuZmlsZSwgcGFyYW1zLCBwb3N0KTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0UHJvZ2VzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIGRvd25sb2FkLnJlcXVlc3RQcm9nZXNzID0gcmVxdWVzdFByb2dlc3M7XHJcbiAgICByZXF1ZXN0LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHsgXHJcbiAgICAgICAgICBkb3dubG9hZC5wcm9ncmVzcyA9IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsOyBcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLm5leHQoZG93bmxvYWQucHJvZ3Jlc3MpO1xyXG4gICAgICAgIH0gZWxzZSBcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgRG93bmxvYWRGaWxlKGV2ZW50LCBkb3dubG9hZC5maWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnNwbGljZSh0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmluZGV4T2YoZG93bmxvYWQpLCAxKTtcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmNvbXBsZXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldmVudC5zdGF0dXMgPT0gNDA0KXtcclxuICAgICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0KFwiQXJxdWl2byBuw6NvIGVuY29udHJhZG8gLyBVcmwgaW52w6FsaWRhXCIpXHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5lcnJvcihldmVudCk7IFxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuY29tcGxldGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuc3BsaWNlKHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuaW5kZXhPZihkb3dubG9hZCksIDEpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIFNhbml0aXplRmlsZU5hbWUodjogc3RyaW5nKTogc3RyaW5ne1xyXG4gICAgdHJ5e1xyXG4gICAgICB2YXIgZmlsZW5hbWVFbmQ6IHN0cmluZyAgPSB2LnNwbGl0KCcvJykuYXQoLTEpO1xyXG4gICAgICBcclxuICAgICAgaWYoZmlsZW5hbWVFbmQuc3BsaXQoJy4nKS5sZW5ndGggPD0gMil7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lRW5kO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB2YXIgbHN0ID0gZmlsZW5hbWVFbmQuc3BsaXQoJy4nKTtcclxuICAgICAgICBsc3RbMF0gPSAnJztcclxuICAgICAgICByZXR1cm4gbHN0LmpvaW4oJy4nKS5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICB9XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBHZXRGaWxlKGZpbGVVcmw6IHN0cmluZywgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj4ge1xyXG4gICAgdmFyIHVybDogc3RyaW5nO1xyXG4gICAgaWYoZmlsZVVybFswXSA9PSAnLycpeyBcclxuICAgICAgdXJsID0gZmlsZVVybC5zbGljZSgxLCBmaWxlVXJsLmxlbmd0aCAtIDEpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHVybCA9IGAke3RoaXMuYXBpVXJsUHJvdmlkZXJTZXJ2aWNlLmFwaVVybH0ke2ZpbGVVcmx9YDtcclxuICAgIH1cclxuICAgIHVybCA9IGVuY29kZVVSSSh1cmwpLnJlcGxhY2UoLyMvZywgJyUyMycpXHJcblxyXG4gICAgaWYoIXBvc3Qpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcclxuICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICB9KTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBwYXJhbXMsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBsc3RGaWxlcyBcclxuICAgKiBsaXN0YSBkZSBhcnF1aXZvcyBhIHNlcmVtIGJhaXhhZG9zIFxyXG4gICAqIEBwYXJhbSBvblVwZGF0ZSBcclxuICAgKiBmdW5jYW8gY2hhbWFkYSBhIGNhZGEgcHJvZ3Jlc3NvIGRlIGRvd25sb2FkXHJcbiAgICogQHJldHVybnMgXHJcbiAgICogbGlzdGEgZGUgcmVzcG9zdGFzIGRvcyBhcnF1aXZvcywgY29tbyBwcm9taXNlLCBxdWFuZG8gdG9kb3MgZXN0aXZlcmVtIGNvbXBsZXRvcyBvdSBkZXJhbSBlcnJvLCDDqSByZXRvcm5hZGFcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgR2V0QmxvYkJhdGNoTGl2ZVJlc3BvbnNlKGxzdEZpbGVzOiBzdHJpbmdbXSwgb25VcGRhdGU6ICh0b3RhbFByb2dyZXNzOiBudW1iZXIsIGxzdFJlc3BvbnNlPzogTGl2ZVJlc3BvbnNlW10sIGV2ZW50VHlwZT86IEh0dHBFdmVudFR5cGUpID0+IHZvaWQpOiBQcm9taXNlPExpdmVSZXNwb25zZVtdPiB7XHJcbiAgICBpZighbHN0RmlsZXMgfHwgbHN0RmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxzdDogTGl2ZVJlc3BvbnNlW10gPSBsc3RGaWxlcy5tYXAocCA9PiAoe1xyXG4gICAgICBwYXRoICAgICAgOiBwLFxyXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLkdldEZpbGUocCksXHJcbiAgICAgIHByb2dyZXNzICA6IDAsXHJcbiAgICAgIHN1Y2Nlc3MgICA6IHVuZGVmaW5lZCxcclxuICAgICAgYmxvYiAgICAgIDogdW5kZWZpbmVkXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgaXNBbGxDb21wbGV0ZSA9ICgpID0+IGxzdC5ldmVyeShvYnMgPT4gb2JzLnByb2dyZXNzID49IDEpO1xyXG4gICAgY29uc3QgZ2V0VG90YWxQcm9ncmVzc0F2ZyA9ICgpID0+IGxzdC5yZWR1Y2UoKGFjYywgb2JzKSA9PiBhY2MgKyBvYnMucHJvZ3Jlc3MsIDApIC8gbHN0Lmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8TGl2ZVJlc3BvbnNlW10+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3Qgb2JzIG9mIGxzdCkge1xyXG4gICAgICAgIG9icy5vYnNlcnZhYmxlLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgIG9icy5wcm9ncmVzcyA9IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsO1xyXG4gICAgICAgICAgICAgIG9uVXBkYXRlKGdldFRvdGFsUHJvZ3Jlc3NBdmcoKSwgbHN0LCBldmVudC50eXBlKTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgIG9icy5ibG9iID0gbmV3IEJsb2IoW2V2ZW50LmJvZHldLCB7IHR5cGU6IGV2ZW50LmJvZHkudHlwZSB9KTtcclxuICAgICAgICAgICAgICBvYnMuc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgaWYoaXNBbGxDb21wbGV0ZSgpKXtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUobHN0KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb25VcGRhdGUoZ2V0VG90YWxQcm9ncmVzc0F2ZygpLCBsc3QsIGV2ZW50LnR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgb2JzLnN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgb2JzLnByb2dyZXNzID0gMTtcclxuICAgICAgICAgICAgb25VcGRhdGUoZ2V0VG90YWxQcm9ncmVzc0F2ZygpLCBsc3QpO1xyXG4gICAgICAgICAgICBpZihpc0FsbENvbXBsZXRlKCkpe1xyXG4gICAgICAgICAgICAgIHJlc29sdmUobHN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIEdldEJsb2JMaXZlUmVzcG9uc2UoZmlsZTogc3RyaW5nLCBvblVwZGF0ZT86IChwcm9ncmVzczogbnVtYmVyLCByZXNwb25zZT86IExpdmVSZXNwb25zZSwgZXZlbnRUeXBlPzogSHR0cEV2ZW50VHlwZSkgPT4gdm9pZCk6IFByb21pc2U8TGl2ZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuR2V0QmxvYkJhdGNoTGl2ZVJlc3BvbnNlKFtmaWxlXSwgKHRvdGFsUHJvZ3Jlc3MsIGxzdFJlc3BvbnNlLCBldmVudFR5cGUpID0+IHtcclxuICAgICAgb25VcGRhdGU/Lih0b3RhbFByb2dyZXNzLCBsc3RSZXNwb25zZVswXSwgZXZlbnRUeXBlKTtcclxuICAgIH0pKVswXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZVJlc3BvbnNle1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBibG9iPzogQmxvYjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXZlUmVzcG9uc2V7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIG9ic2VydmFibGU6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcclxuICBwcm9ncmVzczogbnVtYmVyO1xyXG4gIGJsb2I/OiBCbG9iO1xyXG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRG93bmxvYWQge1xyXG4gIHJlcXVlc3RQcm9nZXNzOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcHJvZ3Jlc3MgICAgICA6IG51bWJlciA9IDAuMDAwMDE7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGZpbGU6IHN0cmluZyl7fVxyXG59XHJcblxyXG5mdW5jdGlvbiBEb3dubG9hZEZpbGUoZGF0YTogSHR0cFJlc3BvbnNlPEJsb2I+LCBmaWxlVXJsLCBmaWxlTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICBjb25zdCBkb3dubG9hZGVkRmlsZSA9IG5ldyBCbG9iKFtkYXRhLmJvZHldLCB7IHR5cGU6IGRhdGEuYm9keS50eXBlIH0pO1xyXG5cclxuICB2YXIgZmlsZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG93bmxvYWRlZEZpbGUpO1xyXG4gIGNvbnN0IGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBmaWxlVVJMKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJ0YXJnZXRcIiwgXCJfYmxhbmtcIik7XHJcbiAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVGaWxlTmFtZShmaWxlVXJsKSk7XHJcblxyXG4gIGlmKGZpbGVOYW1lKSB7XHJcbiAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcImRvd25sb2FkXCIsIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGxldCBtZSA9IG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIiwge1xyXG4gICAgICB2aWV3OiB3aW5kb3csXHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxyXG4gIH0pO1xyXG5cclxuICBsaW5rRWxlbWVudC5kaXNwYXRjaEV2ZW50KG1lKTtcclxufSJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNRLElBQWlCLEVBQ2pCLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRzlCLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQUYxQyxDQUFDO0lBSUUsV0FBVyxDQUFDLElBQVk7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUE7UUFDcEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsT0FBZ0IsS0FBSyxFQUFFLFdBQTJCLElBQUk7UUFDckcsSUFBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUs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LENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV2RSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBRyxRQUFRLEVBQUUsQ0FBQztRQUNWLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7UUFDN0IsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20sIG1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vYXBpLXVybC1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gIHByaXZhdGUgaHR0cCA6IEh0dHBDbGllbnQsXHJcbiAgcHJpdmF0ZSBhcGlVcmxQcm92aWRlclNlcnZpY2U6IEFwaVVybFByb3ZpZGVyU2VydmljZSxcclxuICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgY3VycmVudGx5RG93bmxvYWRpbmc6IERvd25sb2FkW10gPSBbXTtcclxuXHJcbiAgcHVibGljIEdldFByb2dyZXNzKGZpbGU6IHN0cmluZyk6IG51bWJlcntcclxuICAgIGNvbnN0IERvd25sb2FkID0gdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpXHJcbiAgICByZXR1cm4gRG93bmxvYWQgPyBEb3dubG9hZC5wcm9ncmVzcyA6IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU3RhcnREb3dubG9hZChmaWxlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlLCBmaWxlTmFtZSA6IHN0cmluZyB8IG51bGwgPSBudWxsKTogRG93bmxvYWQge1xyXG4gICAgaWYoIXRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKSl7XHJcbiAgICAgIGNvbnN0IGRvd25sb2FkID0gbmV3IERvd25sb2FkKGZpbGUpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnB1c2goZG93bmxvYWQpO1xyXG4gICAgICB0aGlzLkhhbmRsZURvd25sb2FkKGRvd25sb2FkLCBwYXJhbXMsIHBvc3QsIGZpbGVOYW1lKTtcclxuICAgICAgcmV0dXJuIGRvd25sb2FkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuZmluZChwID0+IHAuZmlsZSA9PSBmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSGFuZGxlRG93bmxvYWQoZG93bmxvYWQ6IERvd25sb2FkLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSwgZmlsZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsKXtcclxuICAgIHZhciByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLkdldEZpbGUoZG93bmxvYWQuZmlsZSwgcGFyYW1zLCBwb3N0KTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0UHJvZ2VzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICAgIGRvd25sb2FkLnJlcXVlc3RQcm9nZXNzID0gcmVxdWVzdFByb2dlc3M7XHJcbiAgICByZXF1ZXN0LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHsgXHJcbiAgICAgICAgICBkb3dubG9hZC5wcm9ncmVzcyA9IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsOyBcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLm5leHQoZG93bmxvYWQucHJvZ3Jlc3MpO1xyXG4gICAgICAgIH0gZWxzZSBcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgRG93bmxvYWRGaWxlKGV2ZW50LCBkb3dubG9hZC5maWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnNwbGljZSh0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmluZGV4T2YoZG93bmxvYWQpLCAxKTtcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmNvbXBsZXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldmVudC5zdGF0dXMgPT0gNDA0KXtcclxuICAgICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0KFwiQXJxdWl2byBuw6NvIGVuY29udHJhZG8gLyBVcmwgaW52w6FsaWRhXCIpXHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5lcnJvcihldmVudCk7IFxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuY29tcGxldGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuc3BsaWNlKHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcuaW5kZXhPZihkb3dubG9hZCksIDEpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIFNhbml0aXplRmlsZU5hbWUodjogc3RyaW5nKTogc3RyaW5ne1xyXG4gICAgdHJ5e1xyXG4gICAgICB2YXIgZmlsZW5hbWVFbmQ6IHN0cmluZyAgPSB2LnNwbGl0KCcvJykuYXQoLTEpO1xyXG4gICAgICBcclxuICAgICAgaWYoZmlsZW5hbWVFbmQuc3BsaXQoJy4nKS5sZW5ndGggPD0gMil7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lRW5kO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB2YXIgbHN0ID0gZmlsZW5hbWVFbmQuc3BsaXQoJy4nKTtcclxuICAgICAgICBsc3RbMF0gPSAnJztcclxuICAgICAgICByZXR1cm4gbHN0LmpvaW4oJy4nKS5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICB9XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcHVibGljIHN0YXRpYyBTYW5pdGl6ZU5hbWUob3JpZ2luYWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW9yaWdpbmFsKSByZXR1cm4gJ2FycXVpdm8nO1xyXG5cclxuICAgIC8vIGRlc2ZheiBlbmNvZGluZyBzZSB2aWVyXHJcbiAgICBsZXQgbmFtZSA9IG9yaWdpbmFsLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xyXG4gICAgdHJ5IHsgbmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChuYW1lKTsgfSBjYXRjaCB7fVxyXG5cclxuICAgIC8vIHJlbW92ZSBhY2VudG9zXHJcbiAgICBuYW1lID0gbmFtZS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcclxuXHJcbiAgICAvLyByZW1vdmUgcXVhbHF1ZXIgcGF0aCBhY2lkZW50YWxcclxuICAgIG5hbWUgPSBuYW1lLnNwbGl0KCcvJykucG9wKCkgPz8gbmFtZTtcclxuICAgIG5hbWUgPSBuYW1lLnNwbGl0KCdcXFxcJykucG9wKCkgPz8gbmFtZTtcclxuXHJcbiAgICBjb25zdCBsYXN0RG90ID0gbmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgY29uc3QgYmFzZSA9IGxhc3REb3QgPiAwID8gbmFtZS5zbGljZSgwLCBsYXN0RG90KSA6IG5hbWU7XHJcbiAgICBjb25zdCBleHQgID0gbGFzdERvdCA+IDAgPyBuYW1lLnNsaWNlKGxhc3REb3QgKyAxKSA6ICcnO1xyXG5cclxuICAgIGxldCBzYWZlQmFzZSA9IGJhc2VcclxuICAgICAgLnJlcGxhY2UoL1sjJT8mKz1dL2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvWzw+OlwiL1xcXFx8Kl0vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9bXFx1MDAwMC1cXHUwMDFGXS9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJyAnKVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC5yZXBsYWNlKC8gL2csICdfJylcclxuICAgICAgLnJlcGxhY2UoL18rL2csICdfJyk7XHJcblxyXG4gICAgaWYgKCFzYWZlQmFzZSkgc2FmZUJhc2UgPSAnYXJxdWl2byc7XHJcblxyXG4gICAgY29uc3Qgc2FmZUV4dCA9IGV4dC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgcmV0dXJuIHNhZmVFeHQgPyBgJHtzYWZlQmFzZX0uJHtzYWZlRXh0fWAgOiBzYWZlQmFzZTtcclxuICB9XHJcbiAgcHVibGljIEdldEZpbGUoZmlsZVVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHBvc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PiB7XHJcbiAgICB2YXIgdXJsOiBzdHJpbmc7XHJcbiAgICBpZihmaWxlVXJsWzBdID09ICcvJyl7IFxyXG4gICAgICB1cmwgPSBmaWxlVXJsLnNsaWNlKDEsIGZpbGVVcmwubGVuZ3RoIC0gMSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdXJsID0gYCR7dGhpcy5hcGlVcmxQcm92aWRlclNlcnZpY2UuYXBpVXJsfSR7ZmlsZVVybH1gO1xyXG4gICAgfVxyXG4gICAgdXJsID0gZW5jb2RlVVJJKHVybCkucmVwbGFjZSgvIy9nLCAnJTIzJylcclxuXHJcbiAgICBpZighcG9zdCl7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge1xyXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxyXG4gICAgICAgIHBhcmFtczogcGFyYW1zXHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHBhcmFtcywge1xyXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIGxzdEZpbGVzIFxyXG4gICAqIGxpc3RhIGRlIGFycXVpdm9zIGEgc2VyZW0gYmFpeGFkb3MgXHJcbiAgICogQHBhcmFtIG9uVXBkYXRlIFxyXG4gICAqIGZ1bmNhbyBjaGFtYWRhIGEgY2FkYSBwcm9ncmVzc28gZGUgZG93bmxvYWRcclxuICAgKiBAcmV0dXJucyBcclxuICAgKiBsaXN0YSBkZSByZXNwb3N0YXMgZG9zIGFycXVpdm9zLCBjb21vIHByb21pc2UsIHF1YW5kbyB0b2RvcyBlc3RpdmVyZW0gY29tcGxldG9zIG91IGRlcmFtIGVycm8sIMOpIHJldG9ybmFkYVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBHZXRCbG9iQmF0Y2hMaXZlUmVzcG9uc2UobHN0RmlsZXM6IHN0cmluZ1tdLCBvblVwZGF0ZTogKHRvdGFsUHJvZ3Jlc3M6IG51bWJlciwgbHN0UmVzcG9uc2U/OiBMaXZlUmVzcG9uc2VbXSwgZXZlbnRUeXBlPzogSHR0cEV2ZW50VHlwZSkgPT4gdm9pZCk6IFByb21pc2U8TGl2ZVJlc3BvbnNlW10+IHtcclxuICAgIGlmKCFsc3RGaWxlcyB8fCBsc3RGaWxlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbHN0OiBMaXZlUmVzcG9uc2VbXSA9IGxzdEZpbGVzLm1hcChwID0+ICh7XHJcbiAgICAgIHBhdGggICAgICA6IHAsXHJcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuR2V0RmlsZShwKSxcclxuICAgICAgcHJvZ3Jlc3MgIDogMCxcclxuICAgICAgc3VjY2VzcyAgIDogdW5kZWZpbmVkLFxyXG4gICAgICBibG9iICAgICAgOiB1bmRlZmluZWRcclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCBpc0FsbENvbXBsZXRlID0gKCkgPT4gbHN0LmV2ZXJ5KG9icyA9PiBvYnMucHJvZ3Jlc3MgPj0gMSk7XHJcbiAgICBjb25zdCBnZXRUb3RhbFByb2dyZXNzQXZnID0gKCkgPT4gbHN0LnJlZHVjZSgoYWNjLCBvYnMpID0+IGFjYyArIG9icy5wcm9ncmVzcywgMCkgLyBsc3QubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaXZlUmVzcG9uc2VbXT4oKHJlc29sdmUpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBvYnMgb2YgbHN0KSB7XHJcbiAgICAgICAgb2JzLm9ic2VydmFibGUuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgb2JzLnByb2dyZXNzID0gZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7XHJcbiAgICAgICAgICAgICAgb25VcGRhdGUoZ2V0VG90YWxQcm9ncmVzc0F2ZygpLCBsc3QsIGV2ZW50LnR5cGUpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgb2JzLmJsb2IgPSBuZXcgQmxvYihbZXZlbnQuYm9keV0sIHsgdHlwZTogZXZlbnQuYm9keS50eXBlIH0pO1xyXG4gICAgICAgICAgICAgIG9icy5zdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBpZihpc0FsbENvbXBsZXRlKCkpe1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShsc3QpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCwgZXZlbnQudHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBvYnMuc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvYnMucHJvZ3Jlc3MgPSAxO1xyXG4gICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCk7XHJcbiAgICAgICAgICAgIGlmKGlzQWxsQ29tcGxldGUoKSl7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShsc3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgR2V0QmxvYkxpdmVSZXNwb25zZShmaWxlOiBzdHJpbmcsIG9uVXBkYXRlPzogKHByb2dyZXNzOiBudW1iZXIsIHJlc3BvbnNlPzogTGl2ZVJlc3BvbnNlLCBldmVudFR5cGU/OiBIdHRwRXZlbnRUeXBlKSA9PiB2b2lkKTogUHJvbWlzZTxMaXZlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5HZXRCbG9iQmF0Y2hMaXZlUmVzcG9uc2UoW2ZpbGVdLCAodG90YWxQcm9ncmVzcywgbHN0UmVzcG9uc2UsIGV2ZW50VHlwZSkgPT4ge1xyXG4gICAgICBvblVwZGF0ZT8uKHRvdGFsUHJvZ3Jlc3MsIGxzdFJlc3BvbnNlWzBdLCBldmVudFR5cGUpO1xyXG4gICAgfSkpWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRGaWxlUmVzcG9uc2V7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGJsb2I/OiBCbG9iO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpdmVSZXNwb25zZXtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xyXG4gIHByb2dyZXNzOiBudW1iZXI7XHJcbiAgYmxvYj86IEJsb2I7XHJcbiAgc3VjY2Vzcz86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEb3dubG9hZCB7XHJcbiAgcmVxdWVzdFByb2dlc3M6IE9ic2VydmFibGU8YW55PjtcclxuICBwcm9ncmVzcyAgICAgIDogbnVtYmVyID0gMC4wMDAwMTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZTogc3RyaW5nKXt9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIERvd25sb2FkRmlsZShkYXRhOiBIdHRwUmVzcG9uc2U8QmxvYj4sIGZpbGVVcmwsIGZpbGVOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gIGNvbnN0IGRvd25sb2FkZWRGaWxlID0gbmV3IEJsb2IoW2RhdGEuYm9keV0sIHsgdHlwZTogZGF0YS5ib2R5LnR5cGUgfSk7XHJcblxyXG4gIHZhciBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChkb3dubG9hZGVkRmlsZSk7XHJcbiAgY29uc3QgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVVUkwpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKGZpbGVVcmwpKTtcclxuXHJcbiAgaWYoZmlsZU5hbWUpIHtcclxuICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgbGV0IG1lID0gbmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCB7XHJcbiAgICAgIHZpZXc6IHdpbmRvdyxcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIGxpbmtFbGVtZW50LmRpc3BhdGNoRXZlbnQobWUpO1xyXG59Il19
|